So erstellen Sie Twitter-, Instagram- und Reddit-Bots mit Python
Werbung
Es ist 2019. Sie haben von Bots gehört. Es gibt Chat-Bots, E-Mail-Bots, Web-Scraping-Bots und Social-Media-Bots. Hast du schon einen Bot erstellt? Es ist überraschend einfach. Wahrscheinlich, warum sie überall sind. Umfassen Sie unsere Bot-Overlords, indem Sie sich ihrem Rang anschließen.
In diesem Artikel zeige ich Ihnen, wie Sie Python nutzen können, um automatisch mit Ihren Twitter-, Reddit- und Instagram-Konten zu interagieren.
Mit Python arbeiten
In diesem Rundgang wird Python als Programmiersprache verwendet. 6 Gründe, warum Python die Programmiersprache der Zukunft ist 6 Gründe, warum Python die Programmiersprache der Zukunft ist Sie möchten Ihre Programmierkenntnisse erlernen oder erweitern? Deshalb ist Python die beste Programmiersprache, die Sie in diesem Jahr lernen können. Weiterlesen . Die benutzerfreundlichen Vorteile von Python überwiegen die Geschwindigkeitsmängel, die es im Vergleich zu anderen Sprachen aufweist. Sie können Python für fast jedes Betriebssystem herunterladen. Verwenden Sie den Editor Ihrer Wahl.
Python-Distributionen sind mit dem Dienstprogramm pip
verknüpft. Zum Zeitpunkt des Schreibens stehen über 168.000 Bibliotheken zum Herunterladen mit pip
zur Verfügung. Für die Bots, die Sie heute erstellen, werden nur drei benötigt.
Über die Befehlszeile können Sie die benötigten Bibliotheken mithilfe dieser drei Zeilen installieren.
pip install --upgrade InstagramAPI pip install --upgrade tweepy pip install --upgrade praw
Jetzt können Sie diese Bibliotheken bei Bedarf importieren.
Abrufen von Anwendungsschlüsseln und -geheimnissen
Ein weiser Philosoph sagte einmal: „Geheimnisse, Geheimnisse machen keinen Spaß. Geheimnisse, Geheimnisse verletzen jemanden. “Respektvoll, die Bots brauchen Geheimnisse. Der nächste Schritt beim Einrichten Ihrer Bots besteht darin, ihnen den Zugriff auf die API jeder Site zu ermöglichen. Dazu benötigen Sie einen Anwendungsschlüssel oder ein Geheimnis.
Wenn Sie Schlüssel, Geheimnisse, Token und mehr sammeln (das klingt nach einem unterhaltsamen Spiel!), Speichern Sie diese in einer einzigen Datei mit dem Namen „credentials.py“. Diese Datei sieht folgendermaßen aus:
# keys twitter_consumer_key = '' twitter_consumer_secret = '' twitter_access_token = '' twitter_access_token_secret = '' reddit_client_id = '' reddit_client_secret = '' reddit_user_agent = '' instagram_client_id = '' instagram_client_secret = ''
Sehr wichtiger Hinweis zum Datenschutz: Übernehmen Sie für diese Datei keine Quellcodeverwaltung (z. B. Git). Sie möchten nicht, dass jemand anderes diese Schlüssel und Geheimnisse hat. Sie werden aus einem bestimmten Grund Geheimnisse genannt.
Twitter-Zugang einrichten
In unserer Anleitung zum Einrichten eines Twitter-Bots mit Node.js erfahren Sie, wie Sie Ihre Twitter-App erstellen. So erstellen Sie einen Twitter-Bot zum Tweeten von Fotos mit Raspberry Pi und Node.js So erstellen Sie einen Twitter-Bot zum Tweeten von Fotos mit Raspberry Pi und Node.js Beginnen Sie mit Node.js und erstellen Sie einen Twitter-Bot, der Fotos und Informationen mit nur einem Raspberry Pi twittert! Weiterlesen . Beachten Sie, dass Twitter einige Zeit benötigt, um Ihr Konto zu überprüfen und sicherzustellen, dass Sie kein Spam-Konto erstellen.
Kopieren Sie den Consumer-Schlüssel, das Consumer-Geheimnis, das Zugriffstoken und das Zugriffstoken-Geheimnis in Ihre Datei credentials.py, nachdem Sie diese Schritte ausgeführt haben.
Einrichten von Reddit Access
Das Abrufen Ihrer Reddit-Client-ID und Ihres Geheimnisses ist Twitter sehr ähnlich. Sie müssen eine App als Reddit User Agent registrieren. Danach sollten Sie unbedingt "Reddit User Agent" in Ihren Lebenslauf aufnehmen.
Melden Sie sich bei dem Reddit-Konto Ihrer Wahl an. Navigieren Sie zur Seite mit den App- Einstellungen und klicken Sie auf Weitere App erstellen . Nennen Sie Ihrem Benutzeragenten etwas Nützliches. Wählen Sie ein Skript für den Zweck Ihrer App aus. Die About-URL kann leer gelassen werden. Geben Sie eine beliebige Adresse für das Umleitungsfeld ein.
Nachdem Sie auf App erstellen geklickt haben, wird Ihnen der folgende Bildschirm mit einer Liste Ihrer Apps angezeigt. Die Ziffern unter Ihrem Anwendungsnamen stellen die Client-ID dar und das Client-Geheimnis befindet sich darunter. Kopieren Sie diese Werte in Ihre Datei credentials.py.
Einrichten von Instagram Access
Der Instagram-Zugriff unterscheidet sich von Twitter und Reddit. Anstatt eine App zu registrieren, verwenden Sie Ihren Benutzernamen und Ihr Passwort. Ich schlage vor, ein separates öffentliches Konto zu erstellen und diese Details für Ihren Bot zu verwenden.
Zugriff auf Reddit mit Praw
Die Verwendung von Praw erfolgt in zwei Schritten. Erstens ist das Einrichten des Zugriffs ein einzelner Funktionsaufruf der Praw-Methode von Reddit. Anschließend wird unter Verwendung des initialisierten Objekts eine Subreddit-Suche mit der new () -Methode durchgeführt.
import praw from credentials import * my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent) sub_name = 'technology' max_posts = 10 for submission in my_reddit.subreddit(sub_name).new(limit=max_posts): print(submission.title)
Ändern Sie die Variable sub_name
, um Beiträge von verschiedenen Subreddits sub_name
. Anstelle von new()
stehen andere Methoden wie hot()
zum Abrufen von Beiträgen zur Verfügung.
Suche nach Instagram Hashtags über InstagramAPI
Der erste Schritt bei der Verwendung der Instagram-API besteht darin, ein Objekt mit der Client-ID und dem geheimen Schlüssel einzurichten. Rufen Sie direkt danach die Methode login () auf, um die Einrichtung abzuschließen.
from InstagramAPI import InstagramAPI from credentials import instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI(instagram_client_id, instagram_client_secret) my_insta_api.login()
Die API ist etwas komplizierter als das Reddit-Gegenstück. In diesem Beispiel verwendet das Skript getHashtagFeed, um ein sehr großes JSON-Antwortobjekt von Instagram abzurufen.
Durchsucht die Antwort, sucht das Skript nach Untertiteltext und druckt ihn dann auf dem Bildschirm aus, um ihn anzuzeigen.
get_hashtag = my_insta_api.getHashtagFeed(hashtag) if get_hashtag != False: for item in my_insta_api.LastJson['items']: if 'caption' in item.keys() and 'text' in item['caption'].keys(): caption = item['caption']['text'] print(caption)
Hinzufügen von Bildern zu Social Media
In Zukunft möchten Sie vielleicht, dass Ihr Skript die Bilder in diesem Hashtag-Feed abruft. Führen Sie dazu eine Schleife durch die JSON-Antwort und suchen Sie die Medien, die den einzelnen Posts zugeordnet sind. Im Folgenden finden Sie eine Implementierung zum Extrahieren der Informationen aus der JSON-Antwort:
def get_images_from_hashtag(hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed(hashtag) if get_hashtag == False: return images for item in my_insta_api.LastJson['items']: if item['media_type'] == 1 and 'image_versions2' in item.keys(): candidate = get_largest_image(item['image_versions2']['candidates']) # get image filename = self.save_image_from_candidate(candidate['url']) if filename != '': # get status, save as tuple caption = get_caption(item) images.append((filename, caption)) if len(images) >= num_images: break return images
In dieser Funktion werden zwei Hilfsfunktionen verwendet. Instagram sendet eine Liste mit Bildkandidaten in der JSON-Antwort. Wählen Sie das größte dieser Bilder aus, damit das Medium in der höchsten Auflösung angezeigt wird.
def get_largest_image(candidates): candidate = {} pixels = 0 for cand in candidates: # pick the highest resolution one res = cand['height']*cand['width'] if res > pixels: pixels = res candidate = cand return candidate
Zweitens, sobald der Link zum Bild gefunden wurde, können Sie das Bild lokal speichern, indem Sie den Inhalt in eine Datei schreiben. Die Verwendung der requests
macht dies einfach.
def save_image_from_candidate(url): filename = '' response = requests.get(url) # check the response status code, 200 means good if response.status_code == 200: filename = url.split("/")[-1].split('?')[0] with open(filename, 'wb') as f: f.write(response.content) return filename
Tweeten von Medien mit Tweepy
Zuerst müssen Sie den Twitter-Zugang unter Verwendung Ihrer Geheimnisse und Schlüssel einrichten.
import tweepy from credentials import * tw_auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret) tw_auth.set_access_token(twitter_access_token, twitter_access_token_secret) tw_api = tweepy.API(tw_auth)
Das Erstellen eines generischen Retweet-Bot ist in wenigen Zeilen erledigt.
for tweet in tweepy.Cursor(tw_api.search, q='MakeUseOf').items(10): try: tweet.favorite() tweet.retweet() time.sleep(2) except tweepy.TweepError as e: print(e.reason) except StopIteration: break
Mit dieser Bibliothek können viele andere Dinge erledigt werden. Um diesen Rundgang abzuschließen, können Sie die Funktion get_images_from_hashtag
des zuvor erstellten Instagram-Bots verwenden, um Bilder und Bildunterschriften zu twittern.
Außerdem kann Ihr Twitter-Bot in Reddit nach neuen Posts suchen und diese ebenfalls twittern. Das Zusammenfassen dieser beiden Funktionen sieht folgendermaßen aus:
# use r/ for reddit search # and # for instagram search hashtag = 'technology' num_posts = 5 # tweet reddit info reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts) for submission in reddit_posts: title = submission.title url = 'www.reddit.com{}'.format(submission.permalink) tweet_str = f'Reddit r/{sub} update:\n\n{title} #{sub} {url}' tweet_str = trim_to_280(tweet_str) tw_api.update(tweet_str) # tweet instagram media media_info = get_images_from_hashtag(hashtag, num_posts) for (filename, message) in media_info: try: tweet_str = trim_to_280(message) tw_api.update_with_media(filename, status=tweet_str) except tweepy.TweepError as e: print(e.reason) except StopIteration: break
Dein Python-basierter Social Media Bot ist fertig!
Nun haben Sie eine Reihe von Code, der Medien von einer Site abruft und an eine andere sendet. Sie können auch mischen und anpassen. Ziehe Tweets und poste sie bei Reddit. Sammle Instagram-Bilder, um sie in Subreddits zu veröffentlichen. Machen Sie einen Bot und seien Sie ein Teil des echten Internets.
Um diesen Prozess vollständig zu automatisieren, möchten Sie, dass Ihre Bots in einer Schleife auf einem Server ausgeführt werden. Dies könnte auf Ihrem eigenen Computer mit einem Zeitplaner sein. Oder entstauben Sie den alten Himbeer-Pi, der sich in Ihrem Schrank befunden hat, und sehen Sie sich diese süßen Twitter-Bot-Projekte für den Pi an. 10 Beste Twitter-Bot-Projekte für den Himbeer-Pi 10 Beste Twitter-Bot-Projekte für den Himbeer-Pi Lesen Sie mehr.
Erfahren Sie mehr über: Coding Tutorials, Python, Social Media Bots.