In letzter Zeit ist es mühsam, Twitter-Bilder einzeln während der Arbeit herunterzuladen und zu Google Fotos zu bringen. Es ist ein Datensatz, den Sie als Ingenieur automatisieren können.
Ich möchte nur ein Bild eines Idols, das ein Twitter-Bild herunterladen möchte. Es hat keinen anderen Zweck.
Erhalten Sie regelmäßig Tweets → Herunterladen, wenn ein Bild vorhanden ist → Laden Sie das heruntergeladene Bild auf Google Photo hoch.
Google Cloud Functions https://cloud.google.com/functions/?hl=ja
Ein Dienst, der eine bestimmte Funktion ausführt. Es ist eher ein kleines Programm als ein großes. Dieses Mal hat das Programm ungefähr 120 Zeilen, also habe ich diese gewählt.
Wenn der Preis nicht gut ist, wird er den permanenten freien Rahmen nicht überschreiten (ich denke, selbst wenn Sie viele Funktionen ausführen, wird er ihn nicht überschreiten). Da dieses Programm eine Kommunikation außerhalb der Google-API verursacht (Tweet-Erfassung und Bild-Download), ergreifen wir Maßnahmen, um die Ausführungshäufigkeit zu verringern. Da wir jedoch nicht wissen, wo wir die Netzwerknutzung betrachten sollen, ist es schwierig zu wissen, wie viel Kommunikation tatsächlich stattfindet, selbst wenn wir den Betrieb aufnehmen.
Die diesmal für die Funktion eingestellte Sprache ist Python. Der Grund ist, dass ich es in letzter Zeit für geschäftliche Zwecke verwendet habe. Es gibt andere Sprachen, die verwendet werden können. Lassen Sie uns dies überprüfen, bevor Sie mit der Entwicklung beginnen (ich werde es hier nicht schreiben, da es sich ändern kann).
Die Preisliste ist hier.
Google Cloud Scheduler https://cloud.google.com/scheduler/?hl=ja
Es ist einfach, eine Verbindung zu Google Cloud-Funktionen herzustellen, daher überlasse ich es diesem Typen zur regelmäßigen Ausführung. Die Gebühr richtet sich nach der Anzahl der Jobs, ist jedoch ein Service, der billig und einfach zu nutzen ist, selbst wenn er das kostenlose Limit überschreitet.
Die Preisliste ist hier.
Dieses Mal werden wir GCP, Google API (Fotos), Twitter API und verschiedene APIs verwenden, sodass wir verschiedene Einstellungen vornehmen werden.
https://cloud.google.com/?hl=ja
Das Einrichten ist nicht besonders mühsam, sodass es schnell abgeschlossen wird.
Google Photos API https://developers.google.com/photos
Sie müssen die API über die oben angegebene URL aktivieren. Die Aktivierung selbst ist einfach, Sie müssen jedoch die Verwendung von OAuth zum Aufrufen der API autorisieren. Hier Muss erhalten werden, bis das Aktualisierungstoken erhalten wird, also machen wir es im Voraus.
Twitter API https://developer.twitter.com/content/developer-twitter/ja.html
Dies war das problematischste. Die Bedienung ist einfach, aber da bei der Registrierung als Entwickler die Erklärung der Anwendung in Englisch erforderlich ist, muss die Erklärung für eine bestimmte Länge in Englisch verfasst sein. Ich habe den Eindruck, dass sich die Richtlinien beim Erstellen einer App erheblich ändern. Seien Sie also beim Arbeiten vorsichtig.
Es gab Informationen, dass Japanisch in Ordnung war, aber ab Januar 2020 war Englisch obligatorisch.
Selbst wenn Sie nicht viel Englisch haben, können Sie durch die Übersetzung von einfachem Japanisch in Google durchbrechen, sodass Sie nicht zu viel nachdenken müssen. Es ist definitiv schwieriger als auf Japanisch zu schreiben.
Die Prüfung selbst war sofort abgeschlossen. Vielleicht hängt es davon ab, wie Sie Ihre Optionen auswählen, sodass es für jede Person unterschiedlich sein kann.
Das Programm selbst ist unter github aufgeführt. Die vollständige Version finden Sie hier. Wenn Sie eine Umgebungsvariable oder ".env" erstellen, können Sie diese lokal ausführen.
In Bezug auf die Verarbeitung verwende ich einfach python-twitter
, um den in der Umgebungsvariablen definierten Tweet von USER_LIST abzurufen und ihn vom Download hochzuladen, wenn ein Bild vorhanden ist.
Aufgrund der Spezifikationen der Google Foto-API gibt es kein Problem, selbst wenn Sie dasselbe Bild angeben (wahrscheinlich anhand des Dateinamens beurteilt). Wenn der erhaltene Tweet also ein Bild enthält, haben Sie es mit demselben Verfahren hochgeladen. Es ist nutzlose Kommunikation, aber ich mache es, weil ich vorerst keine Probleme habe. Wenn es stimmt, ist es besser, ein Programm zu erstellen, das die ID irgendwo speichert und von dort abruft, aber ich habe der Veröffentlichung Priorität eingeräumt, da es einige Zeit zu dauern scheint.
Es wird empfohlen, es in Firebase zu speichern, da es lokal ausgeführt werden kann, da es häufig kostenlos mit dem GCP-System ausgeführt wird.
Offiziell ist äußerst einfach zu verstehen, wie Firebase aus Python-Code verwendet wird. Informationen zum lokalen Testen finden Sie im Artikel.
Cloud SQL ist nicht immer kostenlos, daher habe ich diesmal aufgegeben.
Nachtrag 2020/02/01 Aufgrund der Spezifikationen von Twitter erhalten Sie gehackten Text, wenn Sie tweet_mode nicht auf "erweitert" setzen. Bitte beachten Sie, dass Sie Tweet_mode = "erweitert" setzen müssen, da das Medium für einen solchen Tweet nicht richtig eingestellt wird.
Die Quelle von Github wurde aktualisiert.
Beachten Sie, dass Ereignisauslöser ein Argument für die Startfunktion erfordern.
pub/sub => event, context http => request, response
ist. Ich vergaß und wurde ein wenig süchtig. Da nur zwei Dateien, MAIN.PY und REQUIREMENTS.TXT, festgelegt werden können, muss sie in diesem Bereich implementiert werden. Ein kompliziertes Programm zu schreiben ist schmerzhaft.
Wenn Sie ein Protokoll benötigen, ist der Druck in Ordnung. Bereiten wir es also vor.
Wenn alles lokal erledigt werden kann, ist es meiner Meinung nach einfacher zu bestätigen, dass es lokal funktioniert. Es scheint, dass dies mit Cloud-Funktionen möglich ist, aber wie oben erwähnt, ist es nicht möglich, auf einen mysteriösen Fehler zu stoßen.
Nachtrag 2020/04/17 Der Test für Cloud-Funktionen wurde durchgeführt, weil die Timeout-Einstellung standardmäßig festgelegt wurde. Bei Programmen mit langen Ausführungszeiten führt der Test hier zu einem Fehler. Es scheint jedoch, dass die Ausführung selbst abgeschlossen ist, sodass Sie im Protokoll überprüfen können, ob Sie vollständig ausgeführt werden können.
Die Speichereinstellungen ändern sich je nach Programm, aber mit diesem Programm waren 256 MB ausreichend. Trigger werden in Cloud Pub / Sub erstellt. Sie können ein maximales Zeitlimit von 518 Sekunden festlegen, sodass Sie sicher sein können, dass Sie vorerst das Maximum festlegen. Dieses Mal dauerte das Programm ungefähr 200 Sekunden, also habe ich es in 60 Sekunden gemacht und bin abgelaufen.
Setzen Sie einfach den Auslöser auf pub / sub und das Thema auf den in Google Cloud Functions festgelegten Wert. Die Ausführungszeit wird mit der Cron-Methode geschrieben. Ich habe es nur gelegentlich eingestellt, damit ich nicht lernen möchte, wie man es schreibt, aber es gibt eine Site wie diese, also lasst uns davon Gebrauch machen.
Wenn Sie es sofort ausführen möchten, drücken Sie die Taste, und es wird ausgeführt. Stellen Sie daher sicher, dass es erfolgreich ist.
Es ist einfach, kleine Programme regelmäßig auf dem Server auszuführen, daher eignet es sich hervorragend zur Automatisierung kleiner Dinge. Diesmal dauerte die Implementierung etwa 3 Stunden und die Einrichtung 1 Stunde. Daher war es sehr sinnvoll, in kurzer Zeit Hobbys, praktische Vorteile und Studien zu machen.
Es gibt immer noch Probleme beim Testen von Firebase- und Cloud-Funktionen, aber wir werden daran arbeiten, sobald wir sie kennen. Ich denke, ich werde einen Artikel schreiben, wenn er vorbei ist.
Recommended Posts