Récemment, il est difficile de télécharger des images Twitter une par une tout en travaillant et de les apporter à Google Photos. C'est un record que si vous êtes ingénieur, vous pouvez l'automatiser.
Je veux juste une image d'une idole qui veut télécharger une image Twitter. Cela n'a pas d'autre but.
Recevez régulièrement des tweets → Téléchargez s'il y a une image → Téléchargez l'image téléchargée sur Google Photo.
Google Cloud Functions https://cloud.google.com/functions/?hl=ja
Un service qui exécute une fonction spécifique. Cela ressemble plus à un petit programme qu'à l'exécution d'un grand programme. Cette fois, le programme compte environ 120 lignes, j'ai donc choisi celui-ci.
Si le prix n'est pas bon, il ne dépassera pas le cadre libre permanent (je pense que même si vous faites pas mal de fonctions, cela ne le dépassera pas). Étant donné que ce programme provoque une communication en dehors de l'API Google (acquisition de Tweet et téléchargement d'image), nous prenons des mesures pour réduire la fréquence d'exécution. Cependant, comme nous ne savons pas où regarder l'utilisation du réseau, il est difficile de savoir combien de communication se produit réellement, même maintenant que nous avons commencé à fonctionner.
Le langage défini pour la fonction cette fois est python. La raison en est que je l'utilise récemment pour mon entreprise. Il y a d'autres langages qui peuvent être utilisés, donc vérifions avant de commencer le développement (je ne l'écrirai pas ici car cela peut changer)
La liste de prix est ici.
Google Cloud Scheduler https://cloud.google.com/scheduler/?hl=ja
Il est facile de se connecter à Google Cloud Functions, je vais donc laisser à ce type le soin de s'exécuter régulièrement. Les frais sont déterminés par le nombre d'emplois, mais c'est un service bon marché et facile à utiliser même s'il dépasse la limite gratuite.
La liste de prix est ici.
Cette fois, nous utiliserons GCP, Google API (Photos), Twitter API et diverses API, nous allons donc définir divers paramètres.
https://cloud.google.com/?hl=ja
Ce n'est pas particulièrement gênant à mettre en place, donc ça se termine rapidement.
Google Photos API https://developers.google.com/photos
Vous devez activer l'API à partir de l'URL ci-dessus. L'activation elle-même est facile, mais vous devez autoriser l'utilisation d'OAuth pour appeler l'API. Ici Doit être obtenu jusqu'à ce que le jeton de rafraîchissement soit obtenu, alors faisons-le à l'avance.
Twitter API https://developer.twitter.com/content/developer-twitter/ja.html
C'était le plus gênant. L'opération est simple, mais comme l'explication de l'application en anglais est requise lors de l'inscription en tant que développeur, l'explication doit être rédigée en anglais sur une certaine longueur. J'ai l'impression que la politique lors de la création d'une application change considérablement, alors soyez prudent lorsque vous travaillez.
Il y avait des informations selon lesquelles le japonais allait bien, mais à partir de janvier 2020, l'anglais était obligatoire.
Même si vous n'avez pas beaucoup d'anglais, vous pouvez percer en traduisant du japonais simple vers Google, pour ne pas avoir à réfléchir trop fort. C'est certainement plus gênant que d'écrire en japonais.
L'examen lui-même s'est terminé en un instant. Cela dépend peut-être de la façon dont vous choisissez vos options, donc cela peut être différent pour chaque personne.
Le programme lui-même est répertorié sur github, veuillez donc le voir pour la version complète.
Si vous créez une variable d'environnement ou .env
, vous pouvez l'exécuter localement.
En termes de traitement, j'utilise simplement python-twitter
pour obtenir le tweet de USER_LIST défini dans la variable d'environnement et le télécharger à partir du téléchargement s'il y a une image.
En raison des spécifications de l'API Google Photo, il n'y a pas de problème même si vous donnez la même image (probablement jugée par le nom du fichier), donc s'il y a une image dans le tweet que vous avez, vous l'avez téléchargée avec la même procédure. C'est une communication inutile, mais je le fais parce que je ne suis pas en difficulté pour le moment. Si c'est vrai, il serait préférable de faire en sorte que le programme enregistre l'id quelque part et le récupère à partir de là, mais j'ai donné la priorité à la publication car cela semble prendre du temps.
Il est recommandé de l'enregistrer dans Firebase car il peut être exécuté localement car il est souvent fait gratuitement à l'aide du système GCP.
Officiel est extrêmement facile à comprendre comment utiliser Firebase à partir de code python, veuillez donc vous y référer. Veuillez vous référer à l 'Article pour savoir comment tester localement.
Cloud SQL n'a pas Always Free, j'ai donc abandonné cette fois.
Post-scriptum 2020/02/01 En raison des spécifications de Twitter, si vous ne définissez pas tweet_mode = "extended", vous obtiendrez du texte haché. Veuillez noter que vous devez définir tweet_mode = "extended" car le média ne sera pas défini correctement pour un tel Tweet.
La source de Github a été mise à jour.
Notez que les déclencheurs d'événements nécessitent un argument pour la fonction de départ.
pub/sub => event, context http => request, response
est. J'ai oublié et je suis devenu un peu accro. De plus, comme seuls deux fichiers, MAIN.PY et REQUIREMENTS.TXT, peuvent être définis, il doit être implémenté dans cette plage. Ecrire un programme compliqué est douloureux.
Si vous avez besoin d'un journal, l'impression est bonne, alors préparons-le.
Si tout peut être fait localement, je pense qu'il est plus facile de confirmer que cela fonctionne localement. Il semble que cela puisse être fait sur Cloud Functions, mais comme mentionné ci-dessus, il n'est pas possible de rencontrer une erreur mystérieuse.
2020/04/17 PostScript Le test sur Cloud Functions était dû au fait que le paramètre de délai d'expiration était défini par défaut. Pour les programmes de longue durée, le test ici entraînera une erreur. Cependant, il semble que l'exécution elle-même soit terminée, vous pouvez donc vérifier dans le journal si vous pouvez exécuter complètement.
Les paramètres de mémoire changent en fonction du programme, mais avec ce programme, 256 Mo suffisaient. Les déclencheurs sont créés dans Cloud Pub / Sub. Vous pouvez définir un délai maximum de 518 secondes, vous pouvez donc être assuré que vous définissez le maximum pour le moment. Cette fois, le programme a pris environ 200 secondes, donc je l'ai fait en 60 secondes et j'ai expiré.
Définissez simplement le déclencheur sur pub / sub et le sujet sur la valeur définie dans Google Cloud Functions. Le temps d'exécution est écrit par la méthode cron. Je ne le configure qu'occasionnellement, donc je n'ai pas envie d'apprendre à l'écrire, mais il existe un site comme celui-ci, alors utilisons-le.
Si vous voulez l'exécuter tout de suite, appuyez sur le bouton et il fonctionnera, alors assurez-vous qu'il réussit.
Il est facile d'exécuter régulièrement de petits programmes sur le serveur, c'est donc idéal pour automatiser de petites choses. Cette fois, il a fallu environ 3 heures pour la mise en œuvre et 1 heure pour la mise en place, il était donc très significatif de pouvoir faire des passe-temps, des avantages pratiques et étudier en peu de temps.
Il y a encore des problèmes autour des tests Firebase et Cloud Functions, mais nous y travaillerons dès que nous les connaîtrons. Je pense que j'écrirai un article quand ce sera fini.
Recommended Posts