[PYTHON] Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack

Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack

Il est important de collecter des informations sur des sites Web, Twitter, blogs, journaux, etc. afin de connaître les derniers sujets, mais c'est très gênant. Cette fois, nous avons réalisé les fonctions suivantes dans Slack pour améliorer l'efficacité de la collecte d'informations.

--Versez du RSS dans Slack --Injectez des e-mails (principalement des alertes Google) dans Slack --Injectez des tweets d'utilisateurs spécifiques dans Slack

Il est pratique que vous puissiez gérer de manière centralisée les informations nécessaires sans vérifier la chronologie de chaque site, et que l'historique de lecture reste.

Construire un système de collecte automatique pour Twitter est le plus difficile (bien que la plupart puissent être copiés), et techniquement, il utilise l'API Twitter, heroku et Python (Tweepy).

Versez du RSS dans Slack

Un lecteur RSS est fourni en tant que fonction d'application de Slack et il est très facile à exécuter. Le flux RSS peut être diffusé canal par canal, et les signets et les éléments de lecture sont fournis sous forme de fonctions Slack, vous pouvez donc l'utiliser de la même manière que Feedly.

Il existe déjà de nombreuses informations sur la manière de procéder.

https://slack.com/intl/ja-jp/help/articles/218688467-Slack-に-RSS-フィードを追加する

https://ferret-plus.com/14641

Vous pouvez également collecter des informations de publication de balises spécifiques de Qiita par RSS. C'est facile car vous n'avez pas à regarder la chronologie à chaque fois.

Envoyer un e-mail à Slack

Je recueille également des informations via diverses newsletters par e-mail et des alertes Google, je dois donc les mettre dans Slack. Il y a déjà beaucoup d'informations ici aussi. Il existe plusieurs méthodes, mais je fais ce qui suit.

  1. Émettez une adresse e-mail à transférer vers Slack Direct Messages --Envoyez un email à https://slack.com/intl/ja-jp/help/articles/206819278-Slack- -C'est la section "Définir l'adresse e-mail de transfert" sur la page ↑.
  2. Gmail transfère des e-mails spécifiques aux adresses ci-dessus

D'autres méthodes incluent: J'ai essayé diverses choses, mais ce qui précède était le meilleur en termes de convivialité.

Zapier

Application de messagerie Slack

――Je ne l'ai pas essayé car il est chargé. Cependant, il a l'avantage d'être facile à configurer et de transférer des e-mails vers un canal spécifique, il semble donc pratique que vous puissiez payer pour cela.

Slack for Gmail

Implémentation saisissante à l'aide de l'API

«Je ne l'ai pas essayé car cela semble prendre du temps.

Versez des tweets d'utilisateurs spécifiques dans Slack

Au début, je pensais que ce serait facile avec IFTTT, mais ce n'était pas facile à utiliser et j'ai abandonné après tout. J'ai construit un robot de collecte automatique Twitter. La procédure générale est la suivante.

  1. Construction de l'environnement, enregistrement de service, acquisition de jetons
  2. Collecte de tweets et système de transfert Slack
  3. fichier exécutable heroku
  4. Déployer

Les deux suivants sont très utiles. C'est plutôt presque une copie.

https://qiita.com/yuhkan/items/805159f88dd0ad6b21c7

https://stefafafan.hatenablog.com/entry/2015/11/14/220601

Environnement

Utilise principalement Python. Tweepy est requis en tant que package.

https://kurozumi.github.io/tweepy/

pip install tweepy
pip install requests

J'utilise également pytz pour un traitement détaillé. J'ai aussi besoin de git.

Inscription à divers services

Utilisez l'API Twitter, Slack Webhook, heroku.

L'API Twitter nécessite un jeton d'accès.

https://qiita.com/kngsym2018/items/2524d21455aac111cdee#consumer-api-keysアクセストークン情報を使用したpythonスクリプト

Slack Webhook requiert l'URL de la chaîne, alors notez-la également.

https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-での-Incoming-Webhook-の利用

heroku utilise la version gratuite (pas d'enregistrement de crédit). Cependant, je ne pourrai pas fonctionner à pleine capacité pendant un mois, je prévois donc de m'inscrire au crédit à l'avenir.

Collecter les tweets et les transmettre à Slack

J'utilise Streaming au lieu de Rest API. C'est beaucoup plus facile à mettre en œuvre. Plus précisément, transmettez la liste des ID utilisateur que vous souhaitez collecter en tant que query à tweepy.StreamListener.filter (follow = query). La conversion d'un nom d'utilisateur en nom d'utilisateur est également facile avec tweepy. En plus de surveiller des utilisateurs spécifiques, vous pouvez également surveiller les mots-clés.

L'implémentation réelle de la partie transfert Slack est dans la méthode ʻon_status de tweepy.StreamListener`,

Je vais te mordre. Le filtrage des tweets indésirables se présente comme ci-dessous, par exemple.

def is_invalid_tweet(self, status):             
    if isinstance(status.in_reply_to_status_id, int):
        #Vrai pour la réponse
        return True

    if "RT @" in status.text[0:4]:
        #Vrai pour RT
        return True

    return False

https://www.pytry3g.com/entry/twitter-api-seq2seq

Vous trouverez ci-dessous le formatage en json.

import json
from datetime import timedelta 

def format_status(status):
    channel = '#twitter_collection'
    text = status.text
    status.created_at += timedelta(hours=9) #Au Japon, heure
    username = str(status.user.name) + '@' + str(status.user.screen_name) + ' (from twitter)'

    json_dat = {
        "channel": channel,
        "username": username,
        "icon_url": status.user.profile_image_url,
        "text": text
    }
    json_dat = json.dumps(json_dat)

    return json_dat
                   

Le transfert vers Slack est très simple, utilisez simplement request.post.

def post_to_slack(json_dat):
    url = SLACK_WEBJOOK_URL
    requests.post(url, data=json_dat)
    return    

fichier exécutable heroku

Lorsque vous utilisez heroku,

Vous aurez besoin du fichier. Profile décrit le traitement principal au moment de l'exécution. Les packages requis sont répertoriés dans requirements.txt.

worker: python main.py

requirements.txt


tweepy==3.8.0
requests==2.22.0
pytz==2019.3

Notez que vous utilisez worker en tant que Dyno au lieu du Web. Sur le Web, «Erreur R10» se produit.

https://qiita.com/m_rn/items/9a580d04781b34f64693

Déployer

Cela ressemble à ce qui suit.

heroku login
git init 
git add .
git commit -m "test"
heroku create #Enregistrez l'appli
git push heroku master #Transférer l'application
heroku scale worker=1 #Exécutez l'application

Un processus Web peut être déployé avec git push heroku master, mais un processus de travail nécessite heroku scale worker = 1.

La surveillance des journaux est

heroku logs -t
heroku ps

L'arrêt est le suivant.

heroku scale worker=0

https://qiita.com/naberina/items/da4a6d3c480aa7a62b06

Effacer

heroku apps:destroy --app Nom de l'application

Ce sera.

https://qiita.com/chihiro/items/5c3ff400f6cb99deb945

Points d'amélioration

Recommended Posts

Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Collecter des informations sur Twitter avec Python (API Twitter)
Tweetez régulièrement avec l'API Twitter Go language
Accédez à l'API Twitter après l'authentification Oauth avec Django
Exploration avec Python et Twitter API 1 - Fonction de recherche simple
Obtenez des commentaires et des abonnés avec l'API de données YouTube
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
C'est trop facile d'accéder à l'API Twitter avec rauth et je l'ai ...
Utiliser l'API Twitter avec Python
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
Obtenir des informations avec l'API Zabbix
Essayez d'utiliser l'API Twitter
Soutenez-vous avec l'API Twitter
Appelez l'API avec python3.
Collecte d'informations sur Twitter avec Python (intégration de MySQL et Python)
[Python x Zapier] Obtenez des informations d'alerte et notifiez avec Slack
Update_with_media réussi avec l'API Twitter
Exploration avec Python et Twitter API 2-Implémentation de la fonction de recherche d'utilisateurs
Accordez un jeton d'accès avec la commande curl et POST l'API
Accédez à l'API Etherpad-lite avec Python
Introduisez errBot et travaillez avec Slack
Accéder à l'API Twitter avec Python
[MS Azure] Notification Slack des informations de compétition avec Azure Functions et l'API Kaggle
Recherchez des mots-clés Twitter avec tweepy et écrivez les résultats dans Excel
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Soyez prudent lorsque vous récupérez des tweets à intervalles réguliers avec l'API Twitter
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez des informations sur les retards sur Twitter et tweet
Accéder à l'API Docker Remote avec des requêtes
Touchez la liste Twitter avec tweepy
Client API Slack simple réalisé avec Python
Tweet à l'aide de l'API Twitter en Python
Publier à partir d'un autre compte avec l'API Twitter
Obtenez des vacances avec l'API Google Agenda
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Extraire des mots populaires soudains avec l'API de streaming Twitter
Jouez avec Dajare en utilisant l'API COTOHA
Obtenez des informations sur la monnaie virtuelle Coincheck avec l'API ♪
Je ne peux pas utiliser le paramètre "next_results" dans l'API de recherche d'API Twitter! ?? Causes et remèdes
Récupération des informations sur l'écriture, la composition et l'arrangement du site Tower Records avec Python
Obtenez des informations sur les 100 utilisateurs techniques de Twitter les plus influents au monde avec python.
Créez une base de données propre pour les tests avec FastAPI et effectuez le test Unittest de l'API avec pytest
Demandez au bot de vous indiquer la météo (informations sur les précipitations) à l'aide de l'API d'informations météorologiques (YOLP) fournie par Yahoo ~ développement de bot slack avec python ④ ~