[PYTHON] Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos

Einführung

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.

Endziel

Erhalten Sie regelmäßig Tweets → Herunterladen, wenn ein Bild vorhanden ist → Laden Sie das heruntergeladene Bild auf Google Photo hoch.

Umgebung

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.

Vor der Entwicklung

Dieses Mal werden wir GCP, Google API (Fotos), Twitter API und verschiedene APIs verwenden, sodass wir verschiedene Einstellungen vornehmen werden.

GCP bezogen

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.

Implementierung

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.

Vorsichtsmaßnahmen für die Umsetzung

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.

Prüfung

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.

Einstellungen für Google Cloud-Funktionen

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.

Google Cloud Scheduler-Einstellungen

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.

Schließlich

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

Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Laden Sie Dateien mit Django-Speicher in Google Cloud Storages hoch und löschen Sie sie
Erhalten Sie Antworten auf bestimmte Tweets mit tweepy
Funktion zum Speichern von Bildern nach Datum [python3]
Fügen Sie mit Pythonista Bilder zu iOS-Fotos hinzu
Laden Sie Bilder mit Python auf Google Drive hoch
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
Speichern Sie Bilder und Videos, die von der Twitter-Suche aufgerufen wurden, automatisch mit Pythonista3 auf dem iPhone
Speichern Sie automatisch Bilder Ihrer Lieblingsfiguren aus der Google Bildsuche mit Python
Speichern Sie den Tweet von Twitter mit Geo als CSV und zeichnen Sie ihn auf Google Map.
Erhalten Sie Datenbeschriftungen, indem Sie bei der Vorschau von Bildern mit Rails eine Verknüpfung mit der Google Cloud Vision-API herstellen
[Notizen] ① Tweets abrufen und speichern ~ Ich möchte die Nachrichten-Tweets identifizieren, die verbreitet werden ~
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
Holen Sie sich Twitter-Tweets, Follower, Follower, Likes, mit urllib und beautifulSoup
Holen Sie sich Tweets mit Tweepy
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
LGTM - Erstellen Sie LGTM-Bilder mit Videos und Fotos und geben Sie GIF-Animationen aus
Cloud-Funktionen zum Ändern der Bildgröße mithilfe von OpenCV mit Cloud Storage-Trigger
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
kobitonote.py - Mit Kobito bearbeitete Elemente in Evernote synchronisieren
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Holen Sie sich eine globale IP und exportieren Sie sie in Google Spreadsheets
Versuchen Sie, Lebensmittelfotos mithilfe der Google Cloud Vision-API zu beurteilen
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Laden Sie Bilder automatisch mit Scraping herunter
Speichern Sie Bilder mit Web Scraping
Speichern Sie das Ergebnis des Crawls mit Scrapy im Google Data Store
Apache Beam 2.0.x mit Google Cloud Dataflow beginnend mit IntelliJ und Gradle
Korrespondenzanalyse von Sätzen mit COTOHA API und Speichern in Datei
Herstellen einer Verbindung zum Cloud Firestore über Google Cloud-Funktionen mit Python-Code
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
Die stärkste Möglichkeit, MeCab und CaboCha mit Google Colab zu verwenden
Holen Sie sich OCTA-Simulationsbedingungen aus einer Datei und speichern Sie sie mit Pandas
Ich habe versucht, automatisch Bilder von Kanna Hashimoto mit Python zu sammeln! !!
Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Laden Sie die Bilder und Videos herunter, die in den Tweets enthalten sind, die Ihnen auf Twitter gefallen haben, und laden Sie sie auf Google Drive hoch