Vuoi costruire i tuoi robot sui social media?  Ecco come pubblicare automaticamente gli aggiornamenti su Twitter, Instagram e Reddit usando Python.

Come costruire bot di Twitter, Instagram e Reddit usando Python

Annuncio pubblicitario È il 2019. Hai sentito parlare di robot. Ci sono robot di chat, robot di posta elettronica, robot di web scraping e bot di social media. Hai già creato un bot? È sorprendentemente facile. Probabilmente perché sono dappertutto. Abbraccia i nostri signori bot unendosi al loro rango. In

Annuncio pubblicitario

È il 2019. Hai sentito parlare di robot. Ci sono robot di chat, robot di posta elettronica, robot di web scraping e bot di social media. Hai già creato un bot? È sorprendentemente facile. Probabilmente perché sono dappertutto. Abbraccia i nostri signori bot unendosi 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

Questo walk-through usa Python come linguaggio di scelta 6 Ragioni per cui Python è il linguaggio di programmazione del futuro 6 Ragioni per cui Python è il linguaggio di programmazione del futuro Vuoi imparare o espandere le tue abilità di programmazione? Ecco perché Python è il miglior linguaggio di programmazione da imparare quest'anno. Leggi di più . I vantaggi di Python per la facilità d'uso superano qualsiasi carenza di velocità rispetto ad altre lingue. Puoi scaricare Python per quasi tutti i sistemi operativi. Usa l'editor di tua scelta.

Le distribuzioni Python vengono associate all'utilità chiamata pip . Al momento in cui scrivo, ci sono oltre 168.000 librerie disponibili per il download usando pip . Per i robot che creerai oggi, sono necessari solo tre.

Dalla riga di comando, è possibile 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 robot hanno bisogno di segreti. Il prossimo passo nella configurazione dei tuoi bot è consentire loro di accedere all'API di ciascun sito. Per fare ciò, avrai bisogno di una chiave dell'applicazione o di un segreto.

Man mano che raccogli chiavi, segreti, token e altro (sembra un gioco divertente!), Inseriscili tutti in un unico file chiamato "credentials.py". Questo file assomiglierebbe 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 molto importante sulla privacy: non eseguire il commit di questo file su alcun controllo del codice sorgente (ad esempio Git). Non vuoi che nessun altro abbia queste chiavi e questi segreti. Sono chiamati segreti per un motivo.

Configurare l'accesso a Twitter

Dai un'occhiata alla nostra guida per configurare un bot Twitter con Node.js che ti mostrerà come creare la tua app Twitter Come costruire un Twitter di foto Twitter Twitter con Raspberry Pi e Node.js Come costruire una foto Twitter di Twitter Bot con Raspberry Pi e Node.js Inizia con Node.js e crea un bot Twitter che twitta foto e informazioni usando solo un Raspberry Pi! Leggi di più . Tieni presente che Twitter richiederà del tempo per verificare il tuo account e assicurarti di non creare un account spam.

Dopo aver seguito questi passaggi, copiare la chiave del consumatore, il segreto del consumatore, il token di accesso e il segreto del token di accesso nel file credentials.py.

Configurare l'accesso Reddit

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

Accedi all'account Reddit di tua scelta. Passare alla pagina delle preferenze delle app e fare clic su Crea un'altra app . Dai un nome al tuo agente utente come qualcosa di utile. Seleziona lo script ai fini della tua app. L'URL about può essere lasciato vuoto. Inserisci qualsiasi indirizzo per la casella di reindirizzamento.

Reddit App Bot Python

Dopo aver premuto Crea app, ti verrà presentata la seguente schermata con un elenco delle tue app. Le cifre sotto il nome dell'applicazione rappresentano l'ID client e il segreto del client si trova sotto quello. Copia questi valori nel tuo file credentials.py.

Reddit API API Secret Python

Configurare l'accesso a Instagram

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

Accesso a Reddit con Praw

L'uso di praw è 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 di 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) 

Modifica la variabile sub_name per ottenere post da diversi subreddit. Invece di new(), sono disponibili altri metodi come hot() per ottenere post.

Ricerca di hashtag Instagram tramite InstagramAPI

Il primo passo nell'uso dell'API di Instagram è la configurazione di un oggetto con ID client e 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'uso dell'API è un po 'più complicato della sua controparte Reddit. In questo esempio, lo script utilizza getHashtagFeed per ottenere un oggetto di risposta JSON molto grande da Instagram.

Cercando attraverso la risposta, lo script cerca il testo della didascalia e quindi 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 hashtag. Per fare ciò, scorrere la risposta JSON e trovare i media associati a ciascun post. Ecco un'implementazione per l'estrazione delle 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 

Esistono 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 nella sua 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. L'uso della libreria delle requests rende 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 

Tweet su media con Tweepy

Innanzitutto, devi configurare l'accesso a Twitter usando 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 viene eseguita 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 la funzione get_images_from_hashtag dal bot Instagram creato in precedenza per twittare immagini e didascalie.

Inoltre, il tuo bot Twitter può cercare su Reddit nuovi post e twittare anche quelli. Mettere insieme entrambe queste funzionalità assomiglia a questo:

 # 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 

Il tuo bot per social media basato su Python è pronto!

Quindi, ora hai un sacco di codice che estrae i media da un sito e li pubblica in un altro. Puoi anche mescolare e abbinare. Estrai i tweet e pubblica su Reddit. Raccogli le immagini di Instagram per pubblicarle su subreddits. Crea un bot ed entra a far parte della vera Internet.

Infine, per automatizzare completamente questo processo, vorrai che i tuoi robot funzionino 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 bot di Twitter per i migliori 10 progetti di bot di Twitter per Raspberry Pi 10 migliori progetti di bot di Twitter per Raspberry Pi Leggi di più.

Ulteriori informazioni su: Tutorial sulla codifica, Python, Social Media Bots.