Erfahren Sie, wie Sie Twitter überwachen und Tweets mit bestimmten Schlüsselwörtern in Echtzeit an Slack weiterleiten. Das Skript ist python3 und die Twitter-API "statuses / filter.json" wird verwendet, um Tweets in Echtzeit abzurufen.
Stellen Sie sich diese Systemkonfiguration vor. Dieser Artikel enthält ein Beispiel für das Skript "twitter_monitoring.py" unten links in dieser Abbildung.
Das Verhalten des Skripts besteht darin, Tweets mit bestimmten Schlüsselwörtern mit der Twitter-API "statuses / filter.json" abzurufen und Slackbot die Tweets über die Slack-API auf einem beliebigen Kanal veröffentlichen zu lassen.
Machen Sie sich bereit, die Twitter-API und die Slack-API zu verwenden.
Es ist in Ordnung, wenn Sie ein Twitter-API-Konto erstellen und die folgenden 4 Token erhalten.
Für die Erstellung eines Kontos war die folgende Website hilfreich.
Erstellen Sie auf der Slack-API-Seite einen Bot als Benutzer für Tweet-Posts.
Nach dem Erstellen des Slackbot ist es in Ordnung, wenn Sie die folgenden Token auf der Seite "OAuth & Permissions" der Slack API-Verwaltungssite abrufen können.
Für die Erstellung von Slackbot war die folgende Website hilfreich.
Für die Einstellung des Gültigkeitsbereichs (Berechtigung) von Slackbot reicht es aus, nur "chat: write" für diesen Zweck zuzulassen.
Ich werde etwas über die diesmal erstellte twitter_monitoring.py
erklären.
Unten finden Sie ein Codierungsbeispiel für ein Python-Skript (insgesamt 45 Zeilen).
twitter_monitoring.py
# coding: utf-8
import json
import logging
from time import sleep
import requests_oauthlib
import slack
# Parameters
keyword = 'keyword' #Geben Sie ein Suchschlüsselwort an
# Twitter parameters
consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxx' # Twitter API key
consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # Twitter API secret key
access_token = '9999999999999999999-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # Twitter Access token
access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # Twitter Access token secret
# Slack parameters
bot_token = "xoxb-999999999999-9999999999999-xxxxxxxxxxxxxxxxxxxxxxxx" # Slack Bot User OAuth Access Token
channel_id = 'xxxxxxxxxxx' # Slack channel ID
# Logging
logging.basicConfig(filename='twitter_monitoring.log', format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.WARNING)
#wird bearbeitet
uri = 'https://stream.twitter.com/1.1/statuses/filter.json'
twitter_session = requests_oauthlib.OAuth1Session(consumer_key, consumer_secret, access_token, access_token_secret)
slack_client = slack.WebClient(token = bot_token)
while True:
try:
logging.info("Request to Twitter API.")
twitter_response = twitter_session.post(uri, data=dict(track=keyword), stream=True)
if twitter_response.status_code != 200: #Wenn Sie in das Twitter-Ratenlimit usw. geraten.
logging.warning("status_code:%s, reason:%s", twitter_response.status_code, twitter_response.reason)
sleep(900) #Warten Sie 15 Minuten
continue
for line in twitter_response.iter_lines():
if not line: #Kein entsprechender Tweet
logging.info("No any tweets.")
continue
tweet_dict = json.loads(line.decode("utf-8"))
tweet_link = 'https://twitter.com/i/web/status/' + tweet_dict['id_str']
slack_response = slack_client.chat_postMessage(channel = channel_id , text = tweet_link) #Übertragen Sie Tweet-Links zu Slack
except Exception as e:
logging.error(f'{e}')
Da der Code selbst kurz ist, werden in diesem Beispiel die Konfigurationsparameter in das Skript eingebettet. Geben Sie die Werte verschiedener Token und Parameter in den folgenden Variablen an.
Einstufung | Ziel | Variablennamen | Erläuterung |
---|---|---|---|
Zeichen | consumer_key | Twitter API key | |
Zeichen | consumer_secret | Twitter API secret key | |
Zeichen | access_token | Twitter Access token | |
Zeichen | access_token_secret | Twitter Access token secret | |
Zeichen | Slack | bot_token | Slack Bot User OAuth Access Token |
Parameter | keyword | Twitter-Suchbegriffe | |
Parameter | Slack | channel_id | Post an Slack Channel ID[^1] |
[^ 1]: Das Ende der Link-URL für den Slack-Kanal.
Das Ausführen dieses Skripts mit allgemeinen Schlüsselwörtern für Schlüsselwörter kann den Ziel-Slack-Kanal mit einer großen Anzahl von Tweets überfordern. Daher ist es eine gute Idee, es zuerst mit einem Test-Slack-Kanal zu versuchen.
Ich habe die Einstellung "Protokollierung" für das Debuggen festgelegt, aber Sie können sie löschen, wenn Sie sie nicht benötigen. Wenn Sie es so ausführen, wie es ist, wird der folgende Vorgang ausgeführt.
logging.info
definierte Protokoll auszugeben, ändern Sie im Voraus den Parameter level
von logging.basicConfig
im Code in logging.INFO
.Führen Sie das Python-Skript mit der folgenden Methode aus.
Installieren Sie die erforderliche Python-Bibliothek im Voraus.
sudo pip install --upgrade pip
sudo pip install slackclient
sudo pip install requests_oauthlib
sudo pip install logging
Führen Sie das Python-Skript mit dem folgenden Befehl aus.
nohup python twitter_monitoring.py &
Durch Ausführen mit nohup wird sichergestellt, dass das Skript auch dann weiter ausgeführt wird, wenn Sie sich vom Python-Executor abmelden.
das ist alles. Stellen Sie nach der Ausführung sicher, dass der Link des Tweets mit der im Schlüsselwort angegebenen Zeichenfolge weiterhin in Echtzeit auf den Ziel-Slack-Kanal übertragen wird.
Recommended Posts