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).
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.
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.
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.
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.
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
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.
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.
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
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
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
Recommended Posts