Notification Slack lorsqu'un mot spécifique est murmuré sur Twitter en utilisant Heroku avec python

** Cet article a été publié le 23 novembre 2019. ** **

Bonjour. C'est @kosukeobata. Récemment, il y a beaucoup de titres comme PdM et marketer, mais depuis que l'ingénierie a repris, je posterai un peu ridicule.

Cette fois, je décrirai comment créer un BOT qui avertit Slack lorsqu'un mot spécifique est murmuré sur Twitter. Ce n'est pas très beau sur GitHub, mais comme le code source est ouvert au public, je pense que vous pouvez le faire en vous y référant. https://github.com/kosukeobata/twitter-bot

■ Exigences

--Slack notification lorsqu'un mot spécifique est publié sur Twitter

■ Technologie

■ Ce que vous faites

Utilisez le module complémentaire programmé de Heroku pour rechercher sur Twitter toutes les 10 minutes. Toutes les publications qui sont capturées seront notifiées au Slack spécifique que vous spécifiez.

À ce moment-là, le plus grand identifiant de tweet parmi les tweets acquis est enregistré dans sqlite3. En recherchant uniquement les tweets dont la taille est supérieure à l'ID enregistré lors de la prochaine exécution, le partage d'ID de tweet en double sera éliminé.

■ Procédure d'installation

  1. Créez un compte API Twitter.
  2. Créez un compte Heroku et ajoutez une instance.
  3. Paramètres du Webhook dans Slack.
  4. git clone de mon référentiel.
  5. Ajoutez le fichier config.py.
  6. Déployez sur Heroku.
  7. Ajout du planificateur à Heroku.

1. Créez un compte API Twitter

Inscrivez-vous sur https://developer.twitter.com/ et faites une demande d'utilisation. Veuillez noter que cela prend du temps entre la demande et l'approbation. Voir Qiita ici pour plus de détails. Résumé des procédures depuis l'enregistrement de l'API Twitter (méthode de demande de compte) jusqu'à l'approbation * Informations en août 2019

2. Créez un compte Heroku

Inscrivez-vous sur https://jp.heroku.com/. Il n'y a rien de particulièrement difficile, donc je pense que vous pouvez le faire en douceur.

Une fois que vous avez créé un compte, créons une instance. Dans cet article, par exemple, le nom de l'instance est "qiita-katsuo". Donc, en ce qui concerne la partie de qiita-katsuo qui apparaît dans cet article, je pense qu'il y a un nom que vous vous êtes donné, alors veuillez le remplacer par ce nom et lisez la suite.

3. Paramètres de Slack Webhook

Il y a divers articles Qiita ici aussi, alors veuillez vous y référer. Utiliser les webhooks entrants de Slack Une fois que vous obtenez l'URL qui commence par "https://hooks.slack.com/services/", vous avez terminé.

  1. git clone Allez dans le répertoire avec lequel vous voulez travailler et clonez-le.

$ git clone [email protected]:kosukeobata/twitter-bot.git



### 5. Ajoutez le fichier config.py
 Puisqu'il s'agit d'un fichier qui décrit le jeton d'accès, etc., il n'est pas téléchargé sur GitHub.
 Veuillez ajouter le fichier vous-même.
 Ce n'est pas grave si le fichier est comme suit.

 ―― Les quatre premiers sont les paramètres de l'API Twitter.
 --WEB_HOOK_KEY est le paramètre du Webhook de Slack.
 --Pour SEARCH_KEYWORD, spécifiez le mot-clé que vous souhaitez publier lorsqu'il est marmonné sur Twitter.
 --Pour CHANNEL_NAME, spécifiez le nom de la chaîne pour laquelle vous souhaitez être notifié par Slack.

CONSUMER_KEY = "" CONSUMER_SECRET = "" ACCESS_TOKEN = "" ACCESS_TOKEN_SECRET = "" WEB_HOOK_KEY = "" SEARCH_KEYWORD = "" CHANNEL_NAME = "#*********"


 À ce stade, vous pouvez l'exécuter localement.
 Si vous souhaitez tester localement, exécutez d'abord la commande suivante pour préparer l'environnement local.
 ** Installer pip **

$ curl -O https://bootstrap.pypa.io/get-pip.py $ python get-pip.py --user $ export PATH="HOME/Library/Python/2.7/bin:PATH" $ echo 'export PATH="HOME/Library/Python/2.7/bin:PATH"' >> ~/.bash_profile $ source ~/.bash_profile


 ** Demande d'installation **
```$ pip install requests requests_oauthlib --user```

 ** Courir **

#### **`$ python get_twitter_data.py`**
```py


### 6. Déployer sur Heroku
 Déployez sur l'instance créée à l'étape 2.
 Tout d'abord, l'authentification de connexion est effectuée dans le terminal, puis l'instance est liée, puis transmise à heroku.

$ heroku login $ git init $ heroku git:remote -a qiita-katsuo $ git add . $ git commit -am "make it better" $ git push heroku master


### 7. Enregistrez le programme dans Heroku.
 Avec le module complémentaire Schedular, vous pourrez effectuer une recherche sur Twitter toutes les 10 minutes.
 Ce n'est pas en temps réel, mais je pense que ce n'est pas grave si c'est aussi fréquent.
 Tout d'abord, ajoutez le module complémentaire en appuyant sur la commande suivante dans le terminal.

#### **`$ heroku addons:create scheduler:standard --app qiita-katsuo`**

Ensuite, vous pouvez enregistrer le programme à partir de l'écran heroku. https://dashboard.heroku.com/apps/qiita-katsuo/scheduler Spécifiez la commande suivante comme Job à spécifier.

$ python get_twitter_data.py



 Ceci termine les réglages.
 Si vous souhaitez modifier d'autres petits paramètres, veuillez les régler petit à petit.


Recommended Posts

Notification Slack lorsqu'un mot spécifique est murmuré sur Twitter en utilisant Heroku avec python
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé
Utilisons AWS Lambda pour créer un mécanisme pour notifier Slack lorsque la valeur surveillée par CloudWatch est dépassée sur Python
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
Comment utiliser is et == en Python
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
Utilisation pratique des couches lors du chargement de bibliothèques sur Lambda
Comment notifier les canaux Discord en Python
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Choses à noter lors de l'initialisation d'une liste en Python
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Un script qui transfère les tweets contenant des mots-clés spécifiques sur Twitter vers Slack en temps réel.
Comment utiliser la méthode __call__ dans la classe Python
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
Résumé des points à garder à l'esprit lors de l'écriture d'un programme qui s'exécute sur Python 2.5
Lorsque vous souhaitez lancer une commande UNIX sur Python
Publier sur Slack en Python
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Notez ce que vous avez fait pour utiliser Flycheck avec Python
Un jeu pour partir à l'aventure en mode interactif de python
Publier un message d'IBM Cloud Functions sur Slack en Python
[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Spécification du fuseau horaire lors de la conversion d'une chaîne de caractères en type datetime avec python
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment déployer une application Django sur heroku en seulement 5 minutes
Que faire lorsque le type de valeur est ambigu en Python?
Utilisez le tissu tel quel en python (fabric3)
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Lors de l'écriture d'un programme en Python
Utilisez AWS lambda pour récupérer les actualités et notifier régulièrement LINE des mises à jour [python]
Points à surveiller lors de la création d'un environnement Python sur un Mac
Que faire s'il y a un décimal dans python json .dumps
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
Notifier à l'aide du Centre de notifications lorsque l'environnement d'exécution est macOS en Python
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
Ajouter des mots au dictionnaire utilisateur de MeCab sur Ubuntu pour une utilisation en Python
python Comment notifier automatiquement par téléphone lorsque le système tombe en panne
Notifier Slack lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
[Introduction à Python] Comment utiliser la classe en Python?
Utiliser l'impression dans l'expression lambda Python2
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique
L'histoire de la création de Botonyan qui renvoie le contenu de Google Docs en réponse à un mot-clé spécifique sur Slack
Précautions lors du décapage d'une fonction en python
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir stacktrace en python