Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python

Je vais vous montrer comment implémenter un bot Twitter qui fonctionne sur Heroku en Python. Je pense que c'est épuisé, mais c'est la version 2016.

La solution consiste à déployer un script Python sur Heroku et à utiliser Heroku Scheduler pour exécuter le script régulièrement.

Le code source de la version finale est ci-dessous. https://github.com/k-enomoto/minimum_twitter_bot

Que expliquer dans cet article

--Code source minimum pour Twitter Bot --Déployer sur Heroku

Non expliqué dans cet article

Il existe d'autres articles détaillés pour chacun, veuillez donc les consulter.

Préparation de la bibliothèque

Installez la bibliothèque que vous souhaitez utiliser.

$ pip install python-twitter
$ pip install bottle

Nous devons dire à Heroku quelle bibliothèque utiliser, alors créez requirements.txt.

$ pip freeze -l > requirements.txt

Ce sera peut-être comme ça.

bottle==0.12.9
future==0.15.2
oauthlib==1.1.2
python-twitter==3.1
requests==2.10.0
requests-oauthlib==0.6.2

Code pour accéder à l'API Twitter

Obtenez l'API Twitter consumer_key, consumer_secret, ʻaccess_token_key, ʻaccess_token_secret à l'avance. Veuillez vous référer à l'article suivant pour la méthode d'acquisition. Tweet en utilisant l'API Twitter dans Ruby De plus, pour des raisons de sécurité, chaque clé est définie dans une variable d'environnement. Comment définir les variables d'environnement dans Heroku sera décrit plus loin.

N'hésitez pas à organiser le contenu du tweet dès qu'il est extrait de l'API Web.

tweet.py


# -*- coding: utf-8 -*-

import os
from datetime import datetime

import twitter


api = twitter.Api(consumer_key=os.environ["CONSUMER_KEY"],
                  consumer_secret=os.environ["CONSUMER_SECRET"],
                  access_token_key=os.environ["ACCESS_TOKEN_KEY"],
                  access_token_secret=os.environ["ACCESS_TOKEN_SECRET"]
                  )
api.PostUpdate("system time is %s" % datetime.now())

Code d'application Web (factice)

C'est le point de cette fois. Préparez une application Web factice pour maintenir le processus en cours d'exécution sur Heroku. Dans cet article, nous avons utilisé la bouteille de cadre Web léger. L'exemple de code dans documentation de bouteille est utilisé tel quel.

index.py


# -*- coding: utf-8 -*-

import os
from bottle import route, run


@route("/")
def hello_world():
    return "" #Quoi que vous retourniez ici

run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))

Procfile Le Procfile contient les commandes à exécuter dans le conteneur Heroku. Décrit la commande pour démarrer l'application Web factice ci-dessus.

Procfile


web: python index.py

runtime.txt C'est le point 2. Créez runtime.txt et décrivez le runtime à utiliser.

runtime.txt


python-3.5.2

Déployer

Vous avez maintenant tous les fichiers nécessaires.

index.py
tweet.py
requirements.txt
runtime.txt
Procfile

Afin de déployer sur Heroku, les fichiers doivent être gérés par Git. Commit à Git.

git add .
git commit -m "Initial commit"

Déployez-vous sur Heroku. De plus, les variables d'environnement mentionnées ci-dessus sont définies ici. Veuillez remplacer your_cosumer_key, your_consumer_secret, your_access_token_key, your_access_token_secret par vos propres valeurs.

$ heroku create --stack cedar
$ git push heroku master
$ heroku config:set CONSUMER_KEY=your_cosumer_key CONSUMER_SECRET=your_consumer_secret ACCESS_TOKEN_KEY=your_access_token_key ACCESS_TOKEN_SECRET=your_access_token_secret

Assurez-vous que vous pouvez le déployer correctement.

$ heroku logs

Enregistrement d'une tâche du planificateur

Enfin, enregistrez la tâche avec Heroku Scheduler. Entrez la commande suivante pour afficher la page d'enregistrement du planificateur.

$ heroku addons:create scheduler:standard
$ heroku addons:open scheduler

Définissez la commande à exécuter par le planificateur et la fréquence. Configurons un script Python pour tweeter.

$ python tweet.py
scsho.png

Ceci termine le bot Twitter.

Recommended Posts

Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
Créer un bot Twitter Trend avec heroku + Python
Résumé des points à garder à l'esprit lors de l'écriture d'un programme qui s'exécute sur Python 2.5
Notification Slack lorsqu'un mot spécifique est murmuré sur Twitter en utilisant Heroku avec python
Une classe qui résume les méthodes fréquemment utilisées dans l'api twitter (python)
[Python] Créez un LineBot qui s'exécute régulièrement
Créez un bot qui stimule les tendances Twitter
Faisons un bot Twitter avec Python!
Présentation d'une bibliothèque qui n'était pas incluse dans pip sur Python / Windows
[Python] J'ai créé un bot Twitter qui génère des tweets semblables à des amis avec des règles de chaîne de Markov.
J'ai créé un bot Discord en Python qui se traduit quand il réagit
twitter avec python3
Un mémo qui a fait un tutoriel pour exécuter python sur heroku
Un mémo que j'ai écrit un tri rapide en Python
Un programme qui supprime les instructions en double en Python
Une histoire sur l'exécution de Python sur PHP sur Heroku
Étapes pour créer un bot Twitter avec Python
Un mémorandum pour toucher Python Flask avec Heroku
Un mémo sur lequel je suis tombé par hasard en faisant une citation RT sur Twitter Bot
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
Créer un bot de collecte de données en Python à l'aide de Selenium
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Un modèle personnellement utilisé pour créer Discord BOT en Python (Notes)
Une note sur l'implémentation de la bibliothèque qui explore les hyperparamètres à l'aide de l'optimisation bayésienne en Python
Jusqu'à dessiner un graphe 3D avec Python dans Windows10
Mettre en œuvre des recommandations en Python
J'ai créé une VM qui exécute OpenCV pour Python
J'ai essayé d'implémenter un pseudo pachislot en Python
Implémenter XENO avec python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
J'ai essayé de faire LINE BOT avec Python et Heroku
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
L'émulateur Linux "iSH" qui fonctionne sur iPad est un sujet brûlant en moi
Implémenter sum en Python
[Super facile] Faisons un LINE BOT avec Python.
Implémenter Traceroute dans Python 3
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Programme Python du "Livre qui enseigne facilement la programmation difficile"
Un programme polyvalent qui formate les chaînes de commande Linux avec python
Un mémorandum où je suis tombé sur mon HEROKU & Python personnel (Flask)
Publication d'une bibliothèque qui masque les données de caractères dans les images Python
[Python] Créez un linebot qui dessine n'importe quelle date sur une photo
Créons un script qui s'enregistre avec Ideone.com en Python.
Utilisez une macro qui s'exécute lors de l'enregistrement de python avec vscode
Une note quand j'ai touché l'API de reconnaissance faciale de Microsoft avec Python
J'ai essayé "un programme qui supprime les déclarations en double en Python"
Exécutez LINE Bot implémenté en Python (Flask) "sans utiliser Heroku"
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créez le code qui renvoie "A et prétendant B" en python
[MQTT / Python] Implémentation d'une classe qui fait Pub / Sub de MQTT en Python
Une histoire sur la tentative d'implémentation de variables privées en Python.
Un ensemble de fichiers de script qui font wordcloud avec Python3