Bewegungen und Gespräche mit Pepper zu führen kann sehr interessant sein, aber ich möchte mich trotzdem mit sozialen Netzwerken verbinden.
Wenn Sie Python in [Python Box] schreiben (http://qiita.com/Atelier-Akihabara/items/f6a05ca14be786f9a94c), können Sie verschiedene Dinge tun, aber selbst wenn Sie sich die offizielle Dokumentation ansehen, gibt es keine Möglichkeit, eine externe Bibliothek zu importieren. ・ ・ ・ Wenn Sie denken WIE IMPORTIEREN SIE PYTHON-DATEIEN IN IHRE PFEFFER-APPS? Es gab, also werde ich es versuchen.
Lassen Sie uns zunächst eine Vorstellung davon bekommen, was Sie brauchen. Um Zugriff auf die Twitter-API mit Python zu lesen, scheinen die folgenden Elemente für den Zugriff auf Twitter erforderlich zu sein.
Ich frage mich auch, ob Folgendes als aus dem Skript importierte Bibliothek erforderlich ist.
Basierend auf diesen werden wir erwägen, die folgende Twitter-Tweet-Box zu realisieren.
Wie für die Spezifikationen der Tweet-Box,
Ich fühle mich so. Als Verfahren,
Ich werde es in der Reihenfolge versuchen.
Erstellen Sie zunächst eine Kastenform auf Choregraphe.
Klicken Sie mit der rechten Maustaste auf das Flussdiagramm und wählen Sie ** [Neue Box erstellen] - [Python ...] **
Geben Sie ** Tweet in den Namen ** ein
Ändern Sie den OnStart-Eingabetyp in eine Zeichenfolge. Eingabe ** Klicken Sie auf Start [A] ** auf die Schaltfläche Einstellungen und dann auf die Dropdown-Liste ** Typ [B] **
Daraufhin wird eine Liste der Typen angezeigt. ** Wählen Sie [Zeichenkette] ** und klicken Sie auf die Schaltfläche [OK].
Da der Einstellungsdialog genauso wie die Eingabe angezeigt wird, geben Sie ** onFailed in Name [A] ** ein und ändern Sie den Typ in ** [Nummer] [B] **
Wenn Sie die Taste [OK] drücken, können Sie sehen, dass der Verbraucherschlüssel zur Variablenliste hinzugefügt wurde.
Fügen Sie Consumer Secret, Access Token und Access Token Secret auf die gleiche Weise wie 5 hinzu.
Klicken Sie auf die Schaltfläche [OK], um ein ** Tweet-Feld ** im Flussdiagramm zu erstellen.
Jetzt ist die Außenseite der Box fertig.
In das Tweet-Feld importieren wir die folgenden Bibliotheken für die OAuth-Authentifizierung.
Beim Betrachten der Anforderungen.txt dieser Bibliothek stellte ich fest, dass auch die folgenden Bibliotheken erforderlich sind, also auch diese Ich werde es aufnehmen.
Ich denke, ich sollte das Paketverwaltungstool richtig verwenden, aber zunächst möchte ich die oben genannten drei Bibliotheken verwenden, und ich werde versuchen, die Bibliotheksdateien wie folgt in das Projekt zu integrieren.
Wählen Sie dieses Mal ** [ZIP herunterladen] ** und laden Sie die Dateien im Repository mit ZIP herunter.
Erstellen Sie einen lib-Ordner in einem geeigneten Ordner, extrahieren Sie die drei heruntergeladenen ZIP-Dateien und fügen Sie sie in der folgenden Konfiguration zusammen.
lib
requests_oauthlib
__init__.py
oauthlib
__init__.py
requests
__init__.py
Klicken Sie im Bereich [Projektinhalt] auf die Schaltfläche ** Hinzufügen [+] und wählen Sie [Ordner importieren ...] **
Das Dialogfeld [Zu importierenden Ordner auswählen] wird geöffnet. Wählen Sie den in 2. erstellten Ordner lib
aus und klicken Sie auf die Schaltfläche ** [Ordner auswählen] **.
Das lib-Verzeichnis wird zur Dateiliste hinzugefügt. Erweitern Sie daher den Verzeichnisbaum und stellen Sie sicher, dass die Dateien importiert werden.
Sie sollten nun in der Lage sein, die Python-Bibliothek als Projektdatei zu importieren (sollte). Schreiben Sie als nächstes als Python-Skript für die Tweet-Box Code, der diese Bibliotheken zum Twittern verwendet.
Doppelklicken Sie auf das Tweet-Feld, um den Skript-Editor zu öffnen und das folgende Skript einzufügen.
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.framemanager = ALProxy("ALFrameManager")
self.folderName = None
def onUnload(self):
import sys
if self.folderName and self.folderName in sys.path:
sys.path.remove(self.folderName)
self.folderName = None
def onInput_onStart(self, p):
import sys, os
self.folderName = os.path.join(
self.framemanager.getBehaviorPath(self.behaviorId), "../lib")
if self.folderName not in sys.path:
sys.path.append(self.folderName)
for moduleName in os.listdir(self.folderName):
#Modul neu laden
if moduleName in sys.modules:
self.logger.info("Loaded: %s, %s" % (moduleName, sys.modules[moduleName].__file__))
reload(sys.modules[moduleName])
from requests_oauthlib import OAuth1Session
self.logger.info("Tweeten... %s" % p)
url = "https://api.twitter.com/1.1/statuses/update.json"
#Tweet Körper
params = {"status": p}
twitter = OAuth1Session(self.getParameter("Consumer Key"),
self.getParameter("Consumer Secret"),
self.getParameter("Access Token"),
self.getParameter("Access Token Secret"))
req = twitter.post(url, params = params)
if req.status_code == 200:
self.logger.info("OK")
self.onStopped()
else:
self.logger.warn("Failed: %d" % req.status_code)
self.onFailed(req.status_code)
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
Der Punkt des Codes ist ...
Rufen Sie zunächst bei onLoad einen Verweis auf ALFrameManager (der für die Pfadauflösung von Dateien im Projekt verwendet wird) ab und initialisieren Sie Variablen.
def onLoad(self):
self.framemanager = ALProxy("ALFrameManager")
self.folderName = None
Die von sys.path
zu [Projektinhalt] hinzugefügte Python-Bibliothek kann zu Beginn der onStart-Verarbeitung importiert werden.
def onInput_onStart(self, p):
import sys, os
self.folderName = os.path.join(
self.framemanager.getBehaviorPath(self.behaviorId), "../lib")
if self.folderName not in sys.path:
sys.path.append(self.folderName)
Laden Sie die Python-Bibliothek in das Projekt und verarbeiten Sie sie
from requests_oauthlib import OAuth1Session
self.logger.info("Tweeten... %s" % p)
...
Rufen Sie nach Abschluss des Vorgangs die Ausgabe mit dem Rückgabewert des Twitter-API-Aufrufs auf.
...
if req.status_code == 200:
self.logger.info("OK")
self.onStopped()
else:
self.logger.warn("Failed: %d" % req.status_code)
self.onFailed(req.status_code)
Der Pfad zur Python-Bibliothek des Projekts wurde beim Entladen aus sys.path
entfernt
def onUnload(self):
import sys
if self.folderName and self.folderName in sys.path:
sys.path.remove(self.folderName)
self.folderName = None
Fühle mich wie. Persönlich fühlt sich das Umschreiben des sys.path
ein bisschen brutal an ... (Wenn Sie dies für jede Anwendung tun, ist es wahrscheinlich ein Konflikt)
Ich hoffe, dass pip in Zukunft gut integriert wird.
Erstellen Sie die folgende Anwendung, um die erstellte Tweet-Box auszuprobieren.
Platzieren Sie Datenbearbeitung> Textbearbeitung in der Standardboxbibliothek
Schließen Sie die Boxen wie folgt an
Setzen Sie den Parameter Tweet-Box auf ** Consumer Key, Consumer Secret, Access Token, Access Token Secret ** von Twitter.
Geben Sie den Inhalt, den Sie twittern möchten, in das Feld Textbearbeitung ein
Sie haben jetzt einen Flow erstellt, um eine Nachricht zu twittern. Es funktionierte auf einem realen Pepper oder einem virtuellen Roboter (nur Mac). Kann vom virtuellen Windows-Roboter nicht ausgeführt werden. Es scheint, dass das SSL-Modul nicht gültig ist ...
Sie können Pepper so twittern lassen. Ich dachte, wenn ich ein Foto von der Kamera machen und es twittern könnte, wäre Pepper in der Lage, die Live-Hackason-Arbeit zu erledigen. Ich werde weiter schreiben, wenn ich Material habe.
Recommended Posts