Come creare bot Twitter, Instagram e Reddit usando Python

Come creare bot Twitter, Instagram e Reddit usando Python

È il 2019. Hai sentito parlare di bot. Esistono chat bot, email bot, web scraping bot e social media bot. Hai già creato un bot? È sorprendentemente facile. Probabilmente perché sono dappertutto. Abbraccia i nostri signori dei bot unendoti al loro rango.





In questo articolo, ti mostrerò come puoi sfruttare Python per interagire automaticamente con i tuoi account Twitter, Reddit e Instagram.





Lavorare con Python

Questa procedura dettagliata usa Python come linguaggio preferito. I vantaggi di facilità d'uso di Python superano qualsiasi deficienza di velocità rispetto ad altri linguaggi. Puoi scaricare Python per quasi tutti i sistemi operativi. Utilizzo l'editor che preferisci .





Le distribuzioni Python sono associate all'utilità chiamata

come emulare un mac su windows
pip

. Al momento in cui scriviamo, ci sono oltre 168.000 librerie disponibili per il download utilizzando



pip

. Per i bot che creerai oggi, ne occorrono solo tre.

Dalla riga di comando, puoi installare le librerie necessarie utilizzando queste tre righe.





pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw

Ora sarai in grado di importare queste librerie dove necessario.

Ottenere chiavi e segreti dell'applicazione

Un saggio filosofo una volta disse: 'I segreti, i segreti non sono divertenti. Segreti, segreti fanno male a qualcuno». Rispettosamente, i bot hanno bisogno di segreti. Il passaggio successivo nella configurazione dei bot è consentire loro l'accesso all'API di ciascun sito. Per fare ciò, avrai bisogno di una chiave o un segreto dell'applicazione.





Mentre raccogli chiavi, segreti, gettoni e altro (sembra un gioco divertente!), inseriscili tutti in un unico file chiamato 'credentials.py'. Questo file sarebbe simile a questo:

# 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 = ''

Suggerimento sulla privacy molto importante: non eseguire il commit di questo file in alcun controllo del codice sorgente (ad es. Git). Non vuoi che nessun altro abbia queste chiavi e questi segreti. Si chiamano segreti per un motivo.

Configurazione dell'accesso a Twitter

Consulta la nostra guida alla configurazione di un bot Twitter con Node.js che ti mostrerà come creare la tua app Twitter. Tieni presente che Twitter impiegherà del tempo per verificare il tuo account e assicurarti di non creare un account spam.

Dopo aver seguito questi passaggi, copia la chiave utente, il segreto utente, il token di accesso e il segreto del token di accesso nel file credenziali.py.

Configurare l'accesso a Reddit

Ottenere il tuo ID client e segreto Reddit è molto simile a Twitter. Dovrai registrare un'app come agente utente Reddit. Dopo averlo fatto, dovresti assolutamente inserire 'Reddit User Agent' sul tuo curriculum.

Registrazione all'account Reddit di tua scelta. Vai a pagina delle preferenze delle app e Fai clic su crea un'altra app . Dai un nome al tuo agente utente con qualcosa di utile. Seleziona sceneggiatura ai fini della tua app. L'URL delle informazioni può essere lasciato vuoto. Compila qualsiasi indirizzo per la casella di reindirizzamento.

Dopo di te Premi crea app , ti verrà presentata la schermata seguente con un elenco delle tue app. Le cifre sotto il nome dell'applicazione rappresentano l'ID client e il segreto client si trova al di sotto di esso. Copia questi valori nel tuo file credenziali.py.

Configurazione dell'accesso a Instagram

L'accesso a Instagram è diverso da Twitter e Reddit. Invece di registrare un'app, usi il tuo nome utente e password. Suggerisco di creare un account pubblico separato e di utilizzare quei dettagli per il tuo bot.

Accedere a Reddit con Praw

L'uso di gamberi è un processo in due fasi. Innanzitutto, l'impostazione dell'accesso è una singola chiamata di funzione al metodo Reddit di praw. Quindi, utilizzando l'oggetto inizializzato, la ricerca in un subreddit viene eseguita utilizzando il metodo new().

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)

Cambiare il

sub_name

variabile per ottenere post da diversi subreddit. Invece di

new()

, altri metodi come

hot()

sono disponibili per ottenere i messaggi.

Ricerca di hashtag di Instagram tramite InstagramAPI

Il primo passaggio nell'utilizzo dell'API di Instagram consiste nell'impostare un oggetto con l'ID client e il segreto. Subito dopo, chiama il metodo login() per completare la configurazione.

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()

L'utilizzo dell'API è un po' più complicato rispetto alla sua controparte Reddit. In questo esempio, lo script usa getHashtagFeed per ottenere un oggetto di risposta JSON molto grande da Instagram.

Cercando nella risposta, lo script cerca il testo della didascalia e quindi lo stampa sullo schermo per visualizzarlo.

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)

Aggiungi immagini ai social media

Andando avanti, potresti volere che il tuo script ottenga le immagini in questo feed di hashtag. Per fare ciò, scorrere la risposta JSON e trovare i media associati a ciascun post. Ecco un'implementazione per estrarre le informazioni dalla risposta JSON:

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

Ci sono due funzioni di supporto utilizzate in questa funzione. Instagram invia un elenco di 'candidati' di immagini nella risposta JSON. Scegli la più grande di queste immagini in modo che il supporto venga visualizzato con la massima risoluzione.

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

In secondo luogo, una volta trovato il collegamento all'immagine, è possibile salvare l'immagine localmente scrivendo il contenuto in un file. Usando il

requests

libreria rende questo semplice.

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

Twittare i media con Tweepy

Innanzitutto, dovrai configurare l'accesso a Twitter utilizzando i tuoi segreti e le tue chiavi.

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)

La creazione di un bot di retweet generico avviene in poche righe.

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

Molte altre cose possono essere fatte con questa libreria. Per concludere questa procedura dettagliata, puoi utilizzare il

get_images_from_hashtag

funzione del bot di Instagram creato in precedenza per twittare immagini e didascalie.

Inoltre, il tuo bot di Twitter può cercare su Reddit nuovi post e twittare anche quelli. Per mettere insieme entrambe queste funzionalità si presenta così:

# 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

Il tuo social media bot basato su Python è pronto!

Quindi, ora hai un mucchio di codice che estrae i media da un sito e li pubblica su un altro. Puoi anche mescolare e abbinare. Tira i tweet e pubblicali su Reddit. Raccogli le immagini di Instagram per pubblicarle sui subreddit. Crea un bot ed entra a far parte del vero Internet.

Infine, per automatizzare completamente questo processo, vorrai che i tuoi bot vengano eseguiti in loop su un server. Questo potrebbe essere sul tuo computer con un programmatore orario. Oppure rispolvera quel vecchio Raspberry Pi che è stato nel tuo armadio e dai un'occhiata a questi dolci progetti di bot di Twitter per il Pi .

Condividere Condividere Tweet E-mail Ecco perché l'FBI ha emesso un avviso per il ransomware Hive

L'FBI ha emesso un avvertimento su un ceppo di ransomware particolarmente dannoso. Ecco perché devi prestare particolare attenzione al ransomware Hive.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Pitone
  • Bot di social media
  • Tutorial sulla programmazione
Circa l'autore Tom Johnsen(3 Articoli Pubblicati)

Tom è un ingegnere del software della Florida (un saluto a Florida Man) con la passione per la scrittura, il football universitario (go Gators!), CrossFit e le virgole di Oxford.

Altro da Tom Johnsen

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti