© khak/Shutterstock.com
Möglicherweise haben Sie einen Tweet gesehen, dem ein kleines „automatisiertes“ Tag vorangestellt ist. Dieses Tag zeigt an, dass ein Roboter den Tweet im Auftrag eines Benutzers erstellt hat, der bestimmt hat, welche Art von Beiträgen dieser Bot wann machen soll. Während die Idee, einen persönlichen Roboter zu haben, der Tweets für Sie erstellt, wie eine große Aufgabe klingt, ist es eigentlich überraschend einfach! So können Sie also Ihren eigenen Twitter-Bot zum Laufen bringen.
Voraussetzungen
Zunächst müssen Sie einige vorausgesetzte Aufgaben erledigen, die Sie mit der API von Twitter einrichten. Für den Anfang benötigen Sie ein Entwicklerkonto. Diese sind leicht zu bekommen; Twitter verteilt sie einfach kostenlos. Folgen Sie diesem Link, um Ihre Twitter-Entwicklerreise zu beginnen. (Nein, wirklich. Ich habe nur für diesen Artikel ein Twitter-Entwicklerkonto.)
Als Nächstes müssen Sie im Entwicklerportal ein Projekt erstellen. Dazu müssen Sie einige Informationen zu Ihrem Projekt eingeben. Beispielsweise müssen Sie die Kennung des Kontos, das Sie für das Projekt registrieren möchten, und die zugehörige E-Mail-Adresse angeben. Sie müssen auch das Land angeben, von dem aus Sie Ihr Projekt betreiben, Ihren spezifischen Anwendungsfall und ob Sie mit staatlichen Stellen zusammenarbeiten werden. Schließlich müssen Sie Ihre E-Mail-Adresse bestätigen, sobald Sie das unten stehende Formular ausgefüllt haben.
Sie müssen auch eine App mit den Anmeldeinformationen erstellen, die Sie benötigen, um die Twitter API V2.0 zu verwenden. Dies wird einfach erreicht; Sie werden mit einem Bildschirm begrüßt, der Sie auffordert, Ihrer App einen Namen zu geben, um einen API-Schlüssel zu erhalten, sobald Sie die E-Mail-Bestätigung abgeschlossen haben.
Sie müssen auch die Python-Abhängigkeiten herunterladen, die Sie finden können hier. Wenn Sie dies nicht tun, können Sie nicht einmal anfangen, da Sie die Pakete, die Sie zum Erstellen eines Twitter-Bots benötigen, nicht herunterladen können.
Schritt 1: Tweeten Sie in Ihrem Namen Beides
Obwohl es widersprüchlich klingen mag, im Namen Ihres Bots zu twittern, müssen Sie die Funktionalität Ihres Bots ausprobieren, bevor Sie mit der Entwicklung beginnen können. Zum Beispiel möchten Sie Ihr Python-Skript nicht halb durcharbeiten, nur um herauszufinden, dass Ihr API-Schlüssel einen kritischen Fehler enthält und Sie Hilfe vom Twitter-Support benötigen.
Twitter hat eine Website erstellt, die Sie erstellt haben können Sie verwenden, um mithilfe der Bot-API-Funktionalität manuell im Namen Ihres Bots zu twittern. Diese Website twittert einen Hundefakt an das Twitter-Konto, bei dem Sie sich angemeldet haben, wenn das Konto mit a verknüpft ist funktionierender Bot-API-Schlüssel. Der Rest dieses Artikels wird Ihnen beibringen, wie Sie im Wesentlichen Ihre eigene Version dieser Website erstellen, die auf Ihrer Datenbank läuft und automatisch twittert, anstatt dass Sie einen Tweet manuell initiieren.
Schritt 2: Umgang mit Oauth 2.0-Tokens mit a Datenbank
Als Erstes müssen Sie die Token Ihrer App verwalten. OAuth 2.0-Token sind nur zwei Stunden nach ihrer Generierung gültig. Da Bots normalerweise so programmiert sind, dass sie ein-oder mehrmals am Tag selbstständig posten, ohne Eingaben des Erstellers, müssen sie in der Lage sein, Schlüssel selbst zu generieren, zu speichern und zu aktualisieren.
Da Sie Da Sie die generierten Token irgendwo speichern müssen, müssen Sie eine Datenbank einrichten, aus der Ihre App ziehen kann, um zu sehen, ob sie über verwendbare Token verfügt, und um weitere Token zu speichern, wenn sie generiert werden. Dies ist besonders wichtig, wenn Ihr Bot mehr als einmal alle zwei Stunden twittern soll.
Wenn Ihr Bot nur einmal alle zwei Stunden twittert, sind die Token bereits abgelaufen, wenn Ihr Bot zum Tweeten übergeht nochmal. Sie benötigen immer noch einen Ort zum Speichern der Token, während Ihr Bot sie verarbeitet, und zum Speichern Ihrer Aktualisierungstoken, sodass Sie nicht aus der Entwicklung einer Datenbank für Ihre Token herauskommen, indem Sie Ihren Bot seltener tweeten lassen.
Sie können Render verwenden, um Ihre Datenbank zu erstellen, wodurch eine Redis-Datenbank mit Twitter kompatibel wird. Sie können ihre Preise und Programme hier einsehen. Sie müssen auch ein Programm erstellen, um von außerhalb der Programme von Render eine Verbindung zu Redis herzustellen.
Alle Informationen, die Sie zum Konfigurieren und Verbinden mit Ihrer Redis-Instanz benötigen, finden Sie unter Render-Dokumentation.
Sobald Sie Ihre Datenbank erstellt haben, benötigen Sie um Ihren externen Schlüssel zu verwenden, um die Umgebungsvariable in Ihrem Terminal auf Ihr Redis festzulegen. Sie können dies tun, indem Sie die folgende Zeichenfolge in Ihr Terminal eingeben.
export
REDIS_URL=’external_connection_string’
Sie sollten’external_connection_string’durch die externe Variable ersetzen, die so aussieht: rediss://username:[E-Mail-geschützt]:Port (d. h. rediss://example:[E-Mail-geschützt]:4040).
Schritt 3: Installieren Sie erforderliche Pakete
Sie müssen dies tun Installieren Sie einige Pakete, die es Ihnen ermöglichen, mit der Twitter-API von außerhalb der Twitter-Websites zu kommunizieren. Sobald Sie Ihre Redis-Umgebung mit Ihrem Terminal eingerichtet haben, sollten Sie Folgendes in Ihr Terminal eingeben:
pip install requirements redis reviews_oauthlib Flask
Schritt 4: Erstellen Ihrer main.py-Datei
Wir werden Python als Programmiersprache verwenden, um diesen Roboter zu erstellen. Python ist jedoch nicht die einzige Sprache, die Sie verwenden können, um Twitter-Bots zu erstellen. Wenn Sie jedoch eine andere Programmiersprache beherrschen, wären Sie nicht hier … oder?
Jetzt, da Sie Ihre vorausgesetzten Pakete haben, müssen Sie eine main.py-Datei für Ihren Bot erstellen. Sie können dies tun, indem Sie die folgenden Zeichenfolgen in Ihr Terminal eingeben:
mkdir bot-name-variable
cd bot-name-variable
touch main.py
Ersetzen Sie einfach „bot-name-variable “ mit etwas, das Ihren Twitter-Bot beschreibt, wie „dog-fact-twitter-bot“ oder „pandas-hourly-twitter“. Was Namen betrifft, steht Ihnen die Welt offen, aber stellen Sie sicher, dass Sie sich später an sie erinnern können.
Schritt 5: Bearbeiten Ihres Twitter-Bots
Als Nächstes müssen Sie die Datei main.py bearbeiten Datei in Ihrem Code-Studio Ihrer Wahl. Es liegt an Ihnen, welches Code Studio Sie verwenden. Stellen Sie sicher, dass Sie alle Ihre Python-Datenbanken heruntergeladen und einsatzbereit haben, da sie für Ihren Twitter-Bot benötigt werden, selbst wenn Sie unseren Code kopieren und in das Studio einfügen.
Zuerst müssen Sie dies tun Importieren Sie alle Pakete, die für die Ausführung Ihres Twitter-Bots erforderlich sind. Sie können dies mit dem folgenden Codeblock tun.
import base64
import hashlib
import os
import re
import json
import reviews
import redis
from Requests.auth Import AuthBase, HTTPBasicAuth
aus Requests_oauthlib Import OAuth2Session, TokenUpdated
aus Flask Import Flask, Request, Redirect, Session, url_for, Render_Template
Da Sie eine Redis-Datenbank verwenden werden, benötigen Sie um es in einer eigenen Variablen zu speichern, die Twitter Ihnen höflich empfiehlt, „r“ zu nennen. Das Festlegen der Variablen kann mit dem folgenden Codeblock erfolgen.
r=redis.from_url(os.environ[“REDIS_URL”])
Jetzt benötigen Sie eine Variable, die Ihr Code verwenden kann, um Ihre zu initialisieren Twitter-App. Verwenden Sie dazu den folgenden Codeblock.
app=Flask(__name__)
app.secret_key=os.urandom(50)
Sie müssen OAuth 2.0 autorisieren, um Tweets im Namen anderer zu autorisieren Benutzer. Befolgen Sie dazu die im Entwicklerportal unter „Benutzerauthentifizierungseinstellungen“ beschriebenen Schritte.
Der Bot benötigt eine Umleitungs-URI, auch Rückruf-URL genannt. Um den Bot lokal zu testen, geben Sie Folgendes ein:
http://127.0.0.1:5000/oauth/callback
Andernfalls können Sie dies auf die Website festlegen, die Sie zum Posten von Tweets in Ihrem Namen verwenden. Die Website zeigt die OAuth 2.0-Client-ID und die geheime ID unter Ihrem Schlüssel-und Token-Menü an. Öffnen Sie Ihr Terminal, um eine Umgebung dafür zu erstellen, indem Sie Folgendes in Ihr Terminal eingeben:
export CLIENT_ID=’CLIENT_ID’
export CLIENT_SECRET=’CLIENT_SECRET_ID’
export REDIRECT_URI=’http://127.0.0.1:5000/oauth/callback’
Sie müssen es mit den Variablen eingeben, die in Ihre Client-und geheimen IDs geändert wurden.
Gehen Sie jetzt zurück zu Ihrer Python-Datei und erstellen Sie Variablen für diese Umgebungen. Auf diese Weise kann Ihr Bot die Umgebungen, die Sie zum Ausführen Ihres Programms erstellt haben, problemlos abrufen. Sie können dazu den folgenden Code verwenden.
client_id=os.environ.get(“CLIENT_ID”)
client_secret=os.environ.get(“CLIENT_SECRET_ID”)
auth_url=”https://twitter.com/i/oauth2/authorize”
token_url=”https://api.twitter.com/2/oauth2/token”
redirect_uri=os.environ.get(“REDIRECT_URI”)
Denken Sie daran, alle Umgebungsinformationen in IDs und Umleitungs-URI für Ihren Bot zu ändern.
Der nächste Schritt ist die Definition Ihrer Bereiche. Gültigkeitsbereiche bestimmen, wann und wo auf Variablen zugegriffen werden kann. Sie können Ihre Bereiche mit dem folgenden Code festlegen:
scopes=[„tweet.read“, „users.read“, „tweet.write“, „offline.access“]
tweet.read erlaubt dem Bot zum Lesen von Tweets, users.read ermöglicht es dem Bot, Informationen über Benutzer zu erhalten, tweet.write ermöglicht es dem Bot, Tweets zu schreiben, und offline.access ermöglicht es dem Bot, länger als zwei Stunden mit Twitter verbunden zu bleiben.
Twitters OAuth 2.0 ist PCKE-kompatibel. Sie müssen also einen Code-Verifizierer einrichten, um ihn zu verwenden. Sie können dies mit dem folgenden Code tun:
code_verifier=base64.urlsafe_b64encode(os.urandom(30)).decode(“utf-8”)
code_verifier=re.sub(“[^a-zA-Z0-9]+”,””, code_verifier)
Sie müssen auch eine Code-Herausforderung bestehen, um mit OAuth 2.0 zu verifizieren. Sie können dies mit dem folgenden Code tun:
code_challenge=hashlib.sha256(code_verifier.encode(“utf-8”)).digest()
code_challenge=base64.urlsafe_b64encode(code_challenge).decode(“utf-8”)
code_challenge=code_challenge.replace(“=”,””)
Damit der Bot Tweets verwalten und erstellen kann, müssen Sie das verdammte Ding zum Erstellen von Token bekommen. Sie können das mit diesem Code tun:
def make_token():
return OAuth2Session(client_id, forward_uri=redirect_uri, scope=scopes)
Hier wird der Code für neue Leute etwas heikel. Sie müssen herausfinden, was Ihr Bot posten wird und woher er diese Informationen erhält.
Wenn Sie beabsichtigen, Ihre Informationen aus einer vorhandenen API zu ziehen, können Sie eine Variable erstellen, die aus der API schöpft und eine.json-Datei erstellt, aus der gepostet werden kann. Zum Beispiel hat Twitter eine Dog-Fact-API, die es als Beispiel verwendet. Sie können Hundefakten aus dieser API mit dem folgenden Code ziehen:
def parse_dog_fact():
url=http://dog-api.kinduff.com/api/facts
dog_fact=request.request (“GET”, url).json()
return dog_fact[“facts”][0]
Nun möchten Sie, dass das Konto den Tweet postet. Wenn Sie mit dem Dog-Facts-Bot fortfahren, können Sie den folgenden Code verwenden. Fahren Sie andernfalls mit Schritt 6 fort.
def post_tweet(payload, token):
print(“Tweeting!”)
return reviews.request(
“POST”,
“https://api.twitter.com/2/tweets“,
json=payload,
headers={
“Authorization”:”Bearer {}”.format(token[“access_token”]),
“Content-Type”:”application/json”,
},
)
Nun benötigen Sie eine Webseite, auf der Ihr Bot landen kann und die es dem Bot ermöglicht, sich bei der API von Twitter zu authentifizieren. Sie müssen also eine Website erstellen. Es muss nicht schick sein, aber es muss Authentifizierungs-API von Twitter eingebettet, damit der Bot darauf zugreifen und sich in Ihrem Namen authentifizieren kann.
Dann müssen Sie eine Codezeichenfolge erstellen, mit der sich der Bot anmelden kann die Seite. Sie können dies mit dem folgenden Code tun:
@app.route(“/”)
def demo():
global twitter
twitter=make_token()
authorization_url, state=twitter.authorization_url(
auth_url, code_challenge=code_challenge, code_challenge_method=”S256″
)
session[“oauth_state”]=state
return forward(authorization_url)
Schließlich brauchen Sie den Bot um die abgekratzten Hundefakten in eine JSON-Nutzlast umzuwandeln, die der Bot auf Twitter posten kann. Coden Sie Folgendes:
@app.route(“/oauth/callback”, methods=[“GET”])
def callback():
code=request.args.get(“code”)
token=twitter.fetch_token(
token_url=token_url,
client_secret=client_secret,
code_verifier=code_verifier,
code=code,
)
st_token='”{ }”‘.format(token)
j_token=json.loads(st_token)
r.set(“token”, j_token)
dog_fact=parse_dog_fact()
payload={“text”:”{}”.format(dog_fact)}
response=post_tweet(payload, token).json()
return response
if __name__==”__main__”:
app.run()
Damit ist Ihr Bot komplett! Sie müssen es nur automatisieren, damit das Skript unabhängig läuft.
Um die Datei lokal zu testen, geben Sie Folgendes in Ihr Terminal ein:
python main.py
Wenn Ihr Code erfolgreich ist, sehen Sie eine JSON-Nutzlast in Ihrem Browser wie die folgende:
{„Daten“:{ „ID“: „56258425364861“, „Text“: „Hunde sind nicht farbenblind. Sie können mehrere Schattierungen von Gelb und Blau sehen.“ }}
Schritt 6: Posten eines Tweets mit der Tweepy-API
Sie können auch die Tweepy-API verwenden, um Tweets zu erstellen, ohne etwas von einer anderen Quelle anzufordern. Sie können dies tun, indem Sie zuerst die API von Tweepy installieren, indem Sie Folgendes in Ihr Terminal eingeben:
pip install tweepy
Das wird die API von Tweepy installieren und Sie zum Tweeten bereit machen. Anschließend müssen Sie Ihre OAuth-IDs in Ihrer Python-Datei authentifizieren. Tun Sie dies mit dem folgenden Code, wobei alle Schlüssel in die Schlüssel für Ihren Twitter-Bot geändert werden:
import tweepy
API_KEY:’API_KEY’
CONSUMER_SECRET=’API_SECRET_KEY’
ACCESS_KEY=’ACCESS_KEY’
ACCESS_SECRET=’ACCESS_SECRET_KEY’
auth=tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api=tweepy.API(auth)
api.update_status(“Hallo, Welt!”)
Schritt 7: Automatisierung deines Bots
Jetzt, da du einen Bot hast, der auf Twitter postet, wenn er läuft, musst du ihn automatisieren, damit er immer von alleine läuft so oft und postet einen Tweet ohne Ihr Zutun. Dazu müssen Sie eine neue Python-Datei erstellen.
Berühren Sie twit_auto.py
Sie können sie beliebig benennen; Wir haben uns für etwas entschieden, das genau beschreibt, was es tut. Sie müssen dies in Ihr Terminal eingeben, um eine neue Python-Datei zu erstellen.
Als Erstes soll dieses Skript Ihre main.py importieren. Dann brauchen Sie es, um die anderen Pakete zu importieren, die es ausführen muss.
import main
import redis
import json
import os
Jetzt brauchen Sie eine Variable namens „twitter“, die das tut „make_token.“
twitter=main.make_token()
client_id=os.environ.get(“CLIENT_ID”)
client_secret=os.environ.get(“CLIENT_SECRET”)
token_url=„https://api.twitter.com/2/oauth2/token“
Dann müssen Sie auf Redis zugreifen und das Token abrufen, das wir treffend „Token“ genannt haben.
t=main.r. get(“token”)
bb_t=t.decode(“utf8”).replace(“‘”,'”‘)
data=json.loads(bb_t)
OAuth 2.0-Token sind nur gültig für zwei Stunden. Sie benötigen also das Programm, um Ihr Token mit den Aktualisierungstoken von Twitter zu aktualisieren.
refreshed_token=twitter.refresh_token(
client_id=client_id,
client_secret=client_secret,
token_url=token_url,
refresh_token=data[“refresh_token”],
)
Sie benötigen es, um das Token in ein JSON-Objekt zu laden, bevor Sie es mit dem Tokenwert wieder in Redis speichern können Das können Sie mit dem tun folgenden Code:
st_refreshed_token='”{}”‘.format(refreshed_token)
j_refreshed_token=json.loads(st_refreshed_token)
main.r.set(“token”, j_refreshed_token)
Jetzt , müssen Sie das Programm dazu zwingen, einen Hundefakt aus Ihrer API zu kratzen und auf Twitter zu posten. Folgender Code:
dog_fact=main.parse_dog_fact()
payload={“text”:”{}”.format(dog_fact)}
main.post_tweet(payload, updated_token)
Zum Testen Um die Datei lokal abzurufen, geben Sie Folgendes in Ihr Terminal ein:
python twit_auto.py
Dann müssen Sie nur noch den Code so einstellen, dass er so lange von selbst läuft, wie Sie möchten, und Sie haben einen Twitter-Bot!
Abschließende Gedanken
Es gibt Hunderte von anderen Arten von Twitter-Bots, die Sie erstellen können, und es gibt auch viele Tutorials zum Programmieren verschiedener Typen von Twitter-Bots. Je mehr Sie über Python erfahren, desto mehr können Sie Ihren Twitter-Bot anpassen und ändern. Denken Sie also daran, wenn Sie nach Twitter-Bots suchen. Es gibt mehr als einen Weg, um die Arbeit zu erledigen!