[PYTHON] Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots

Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots

Es ist wichtig, Informationen auf Websites, Twitter, Blogs, Papieren usw. zu sammeln, um die neuesten Themen zu kennen, aber es ist sehr problematisch. Dieses Mal haben wir die folgenden Funktionen in Slack realisiert, um die Effizienz der Informationserfassung zu verbessern.

Es ist praktisch, dass Sie die erforderlichen Informationen zentral verwalten können, ohne die Zeitachse jeder Site zu überprüfen, und dass der Leseverlauf erhalten bleibt.

Das Erstellen eines automatischen Erfassungssystems für Twitter ist am schwierigsten (obwohl die meisten kopiert werden können) und verwendet technisch die Twitter-API, Heroku und Python (Tweepy).

Gießen Sie RSS in Slack

Ein RSS-Reader wird als App-Funktion von Slack bereitgestellt und ist sehr einfach auszuführen. RSS kann kanalweise gestreamt werden, und Lesezeichen und gelesene Elemente werden als Slack-Funktionen bereitgestellt, sodass Sie es ähnlich wie Feedly verwenden können.

Es gibt bereits viele Informationen dazu.

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

https://ferret-plus.com/14641

Sie können auch Post-Informationen zu bestimmten Qiita-Tags per RSS sammeln. Es ist einfach, weil Sie nicht jedes Mal auf die Zeitachse schauen müssen.

Mail an Slack senden

Ich sammle Informationen auch über verschiedene E-Mail-Newsletter und Google-Benachrichtigungen, sodass ich sie in Slack einfügen muss. Auch hier gibt es bereits viele Informationen. Es gibt verschiedene Methoden, aber ich mache Folgendes.

  1. Geben Sie eine E-Mail-Adresse ein, um sie an Slack Direct Messages weiterzuleiten
  1. Google Mail leitet bestimmte E-Mails an die oben genannten Adressen weiter

Andere Methoden umfassen: Ich habe verschiedene Dinge ausprobiert, aber das Obige war das Beste in Bezug auf die Benutzerfreundlichkeit.

Zapier

--Senden Sie eine bestimmte E-Mail an einen bestimmten Kanal.

Slack Email App

――Ich habe es nicht ausprobiert, weil es aufgeladen ist. Es hat jedoch den Vorteil, dass es einfach einzurichten ist und Sie E-Mails an einen bestimmten Kanal weiterleiten können. Es erscheint daher praktisch, wenn Sie dafür bezahlen können.

Slack for Gmail

Spannende Implementierung mithilfe der API

――Ich habe es nicht ausprobiert, weil es Zeit zu brauchen scheint.

Gießen Sie bestimmte Benutzer-Tweets in Slack

Zuerst dachte ich, es wäre einfach mit IFTTT, aber es war nicht einfach zu bedienen und ich gab schließlich auf. Ich habe einen automatischen Twitter-Sammlungsbot erstellt. Das allgemeine Verfahren ist wie folgt.

  1. Umgebungskonstruktion, Serviceregistrierung, Token-Erwerb
  2. Tweet-Sammlung und Slack-Transfer-System
  3. Heroku ausführbare Datei
  4. Bereitstellen

Die folgenden beiden sind sehr hilfreich. Es ist eher eine Kopie.

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

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

Umgebung

Verwendet hauptsächlich Python. Tweepy wird als Paket benötigt.

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

pip install tweepy
pip install requests

Ich benutze Pytz auch für die detaillierte Verarbeitung. Ich brauche auch git.

Registrierung für verschiedene Dienste

Verwenden Sie Twitter API, Slack Webhook, Heroku.

Die Twitter-API erfordert ein Zugriffstoken.

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

Für Slack Webhook ist die URL des Kanals erforderlich. Notieren Sie sich diese ebenfalls.

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

Heroku verwendet die kostenlose Version (keine Kreditregistrierung). Da ich jedoch einen Monat lang nicht voll ausgelastet sein kann, plane ich, mich in Zukunft für eine Gutschrift zu registrieren.

Sammle Tweets und leite sie an Slack weiter

Ich verwende Streaming anstelle der Rest-API. Dies ist viel einfacher zu implementieren. Übergeben Sie insbesondere die Liste der Benutzer-IDs, die Sie als "Abfrage" erfassen möchten, an "tweepy.StreamListener.filter (follow = query)". Das Konvertieren eines Benutzernamens in einen Benutzernamen ist mit tweepy ebenfalls einfach. Neben der Überwachung bestimmter Benutzer können Sie auch Schlüsselwörter überwachen.

Die eigentliche Implementierung des Slack-Übertragungsteils erfolgt in der Methode "on_status" von "tweepy.StreamListener".

--Verarbeitung zum Filtern unnötiger Tweets wie Retweets --Verarbeitungsprozess zum Formatieren von Daten für die Slack-Übertragung --Verfahren Sie, um zu Slack zu übertragen

Ich werde dich beißen. Das Filtern nach unerwünschten Tweets sieht beispielsweise wie folgt aus.

def is_invalid_tweet(self, status):             
    if isinstance(status.in_reply_to_status_id, int):
        #Richtig für die Antwort
        return True

    if "RT @" in status.text[0:4]:
        #Richtig für RT
        return True

    return False

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

Unten ist die Formatierung zu json.

import json
from datetime import timedelta 

def format_status(status):
    channel = '#twitter_collection'
    text = status.text
    status.created_at += timedelta(hours=9) #In Japan Zeit
    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
                   

Das Übertragen auf Slack ist sehr einfach. Verwenden Sie einfach request.post.

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

Heroku ausführbare Datei

Bei Verwendung von Heroku,

Sie benötigen die Datei. Profil beschreibt die Hauptverarbeitung zur Laufzeit. Die erforderlichen Pakete sind in den Anforderungen.txt aufgeführt.

worker: python main.py

requirements.txt


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

Beachten Sie, dass Sie Worker als Dyno anstelle des Webs verwenden. Im Web erhalte ich "Fehler R10".

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

Bereitstellen

Es sieht wie folgt aus.

heroku login
git init 
git add .
git commit -m "test"
heroku create #Registrieren Sie die App
git push heroku master #App übertragen
heroku scale worker=1 #Führen Sie die App aus

Ein Webprozess kann mit "git push heroku master" bereitgestellt werden, für einen Arbeitsprozess ist jedoch "heroku scale worker = 1" erforderlich.

Protokollüberwachung ist

heroku logs -t
heroku ps

Der Stopp ist wie folgt.

heroku scale worker=0

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

Löschen

heroku apps:destroy --App App Name

Es wird sein.

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

Verbesserungspunkte

Recommended Posts

Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Sammeln von Informationen von Twitter mit Python (Twitter API)
Twittern Sie regelmäßig mit der Twitter-API in Go-Sprache
Klicken Sie nach der Oauth-Authentifizierung mit Django auf die Twitter-API
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Es ist zu einfach, mit rauth auf die Twitter-API zuzugreifen, und ich habe sie ...
Verwenden Sie die Twitter-API mit Python
Ich habe versucht, Follow Management mit Twitter API und Python (einfach)
Informationen erhalten Sie mit zabbix api
Versuchen Sie es mit der Twitter-API
Unterstützen Sie sich mit der Twitter API
Rufen Sie die API mit python3 auf.
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Erfolgreiches update_with_media mit Twitter API
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
Gewähren Sie mit dem Befehl curl ein Zugriffstoken und POSTEN Sie die API
Klicken Sie mit Python auf die Etherpad-Lite-API
Führe errBot ein und arbeite mit Slack
Greifen Sie mit Python auf die Twitter-API zu
[MS Azure] Slack-Benachrichtigung über Wettbewerbsinformationen mit Azure-Funktionen und der Kaggle-API
Suchen Sie mit tweepy nach Twitter-Keywords und schreiben Sie die Ergebnisse in Excel
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Seien Sie vorsichtig, wenn Sie in regelmäßigen Abständen Tweets mit der Twitter-API abrufen
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Erhalten Sie Verzögerungsinformationen auf Twitter und twittern Sie
Greifen Sie mit Requests auf die Docker Remote API zu
Berühren Sie die Twitter-Liste mit Tweepy
Einfacher Slack API-Client mit Python
Tweet mit der Twitter-API in Python
Poste von einem anderen Konto mit Twitter API
Holen Sie sich Urlaub mit der Google Kalender-API
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Extrahieren Sie plötzliche beliebte Wörter mit der Twitter-Streaming-API
Spielen Sie mit Dajare mithilfe der COTOHA-API
Erhalten Sie Informationen zur virtuellen Währung mit der API coin
Ich kann den Parameter "next_results" nicht in der Twitter API Search API verwenden! ?? Ursachen und Abhilfemaßnahmen
Abrufen von Informationen zu Songwriting, Komposition und Arrangement von der Tower Records-Website mit Python
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Bitten Sie den Bot, Ihnen das Wetter (Niederschlagsinformationen) mithilfe der Wetterinformations-API (YOLP) mitzuteilen, die von Yahoo ~ Slack Bot Development mit Python ④ ~ bereitgestellt wird