So erstellen Sie Twitter-, Instagram- und Reddit-Bots mit Python

So erstellen Sie Twitter-, Instagram- und Reddit-Bots mit Python

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 sind sie deshalb überall. Umarme unsere Bot-Overlords, indem du ihrem Rang beitrittst.





In diesem Artikel zeige ich Ihnen, wie Sie Python nutzen können, um automatisch mit Ihren Twitter-, Reddit- und Instagram-Konten zu interagieren.





Arbeiten mit Python

Diese exemplarische Vorgehensweise verwendet Python als bevorzugte Sprache. Die Vorteile der Benutzerfreundlichkeit von Python überwiegen alle Geschwindigkeitsmängel, die es im Vergleich zu anderen Sprachen hat. Sie können Python für fast jedes Betriebssystem herunterladen. Verwenden der Editor deiner Wahl .





Python-Distributionen werden mit dem Dienstprogramm namens

Wie füge ich Apps zu meinem Vizio Smart TV hinzu?
pip

. Zum Zeitpunkt des Schreibens stehen über 168.000 Bibliotheken zum Download mit . zur Verfügung



pip

. Für die Bots, die Sie heute erstellen, werden nur drei benötigt.

Von der Befehlszeile aus 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.' Respekt, 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 (klingt nach einem lustigen Spiel!), legen Sie sie alle in eine einzige Datei namens 'credentials.py'. Diese Datei würde ungefähr so ​​aussehen:

# 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 Datenschutzvorschlag: Übergeben Sie dieser Datei keine Quellcodeverwaltung (z. B. Git). Sie möchten nicht, dass jemand anderes diese Schlüssel und Geheimnisse besitzt. Sie werden nicht ohne Grund Geheimnisse genannt.

Twitter-Zugriff einrichten

In unserem Leitfaden zum Einrichten eines Twitter-Bots mit Node.js erfahren Sie, wie Sie Ihre Twitter-App erstellen. Beachten Sie, dass Twitter einige Zeit braucht, um Ihr Konto zu überprüfen und sicherzustellen, dass Sie kein Spam-Konto erstellen.

Nachdem Sie diese Schritte ausgeführt haben, kopieren Sie den Consumer-Schlüssel, das Consumer-Geheimnis, das Zugriffstoken und das Zugriffstoken-Geheimnis in Ihre Datei 'credentials.py'.

Reddit-Zugriff einrichten

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.

Einloggen auf das Reddit-Konto Ihrer Wahl. Navigieren Sie zum Seite mit den Einstellungen für Apps und Klicken Sie auf eine andere App erstellen . Benennen Sie Ihren User-Agent etwas Nützliches. Skript auswählen für den Zweck Ihrer App. Die About-URL kann leer gelassen werden. Geben Sie eine beliebige Adresse für das Weiterleitungsfeld ein.

Nach dir Drücken Sie App erstellen , 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 des Instagram-Zugangs

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 Garnelen ist ein zweistufiger Prozess. Erstens ist das Einrichten des Zugriffs ein einzelner Funktionsaufruf der Reddit-Methode von praw. Dann wird unter Verwendung des initialisierten Objekts ein Subreddit mit der Methode new() durchsucht.

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)

Ändere das

sub_name

Variable, um Beiträge von verschiedenen Subreddits zu erhalten. Anstatt von

new()

, andere Methoden wie

hot()

sind verfügbar, um Beiträge zu erhalten.

Durchsuchen von Instagram Hashtags über InstagramAPI

Der erste Schritt bei der Verwendung der Instagram-API besteht darin, ein Objekt mit der Client-ID und dem Geheimnis 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 Verwendung der API ist etwas komplizierter als die ihres Reddit-Pendants. In diesem Beispiel verwendet das Skript getHashtagFeed, um ein sehr großes JSON-Antwortobjekt von Instagram abzurufen.

Beim Durchsuchen der Antwort sucht das Skript nach Beschriftungstext und druckt 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)

Bilder zu sozialen Medien hinzufügen

In Zukunft möchten Sie vielleicht, dass Ihr Skript die Bilder in diesem Hashtag-Feed erhält. Um dies zu tun, durchlaufen Sie die JSON-Antwort und suchen Sie die mit jedem Beitrag verknüpften Medien. Hier ist 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 von Bild-'Kandidaten' in der JSON-Antwort. Wählen Sie das größte dieser Bilder aus, damit die Medien in der höchsten Auflösung angezeigt werden.

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 können Sie, sobald der Link zum Bild gefunden wurde, das Bild lokal speichern, indem Sie den Inhalt in eine Datei schreiben. Verwendung der

requests

Bibliothek 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 mit Ihren Geheimnissen und Schlüsseln 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-Bots ist in nur 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

Viele andere Dinge können mit dieser Bibliothek getan werden. Um diese exemplarische Vorgehensweise abzuschließen, können Sie die

get_images_from_hashtag

Funktion des zuvor erstellten Instagram-Bots, um Bilder und Bildunterschriften zu twittern.

Darüber hinaus kann Ihr Twitter-Bot Reddit nach neuen Beiträgen durchsuchen und diese ebenfalls twittern. Um diese beiden Funktionen zusammenzufassen, sieht es so 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:
{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

Ihr Python-basierter Social-Media-Bot ist bereit!

Jetzt haben Sie also eine Menge Code, der Medien von einer Site abruft und auf einer anderen postet. Sie können auch mischen und kombinieren. Ziehen Sie Tweets und posten Sie sie auf Reddit. Sammle Instagram-Bilder zum Posten in Subreddits. Machen Sie einen Bot und werden Sie Teil des echten Internets.

Schließlich möchten Sie, dass Ihre Bots in einer Schleife auf einem Server laufen, um diesen Prozess vollständig zu automatisieren. Dies könnte auf Ihrem eigenen Computer mit einem Zeitplaner sein. Oder entstauben Sie den alten Raspberry Pi, der in Ihrem Schrank war, und schauen Sie sich diese süßen Twitter-Bot-Projekte für den Pi an.

Teilen Teilen Tweet Email Hier ist der Grund, warum das FBI eine Warnung vor Hive Ransomware herausgegeben hat

Das FBI warnte vor einem besonders bösartigen Ransomware-Stamm. Aus diesem Grund müssen Sie bei Hive-Ransomware besonders vorsichtig sein.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Python
  • Social-Media-Bots
  • Codierungs-Tutorials
Über den Autor Tom Johnson(3 Artikel veröffentlicht)

Tom ist ein Software-Ingenieur aus Florida (ein Gruß an Florida Man) mit einer Leidenschaft für das Schreiben, College-Football (go Gators!), CrossFit und Oxford-Kommas.

Mehr von Tom Johnsen

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren