Vill du bygga dina egna sociala mediebots?  Så här posterar du automatiskt uppdateringar på Twitter, Instagram och Reddit med Python.

Hur man bygger Twitter-, Instagram- och redditbots med Python

Annons Det är 2019. Du har hört talas om bots. Det finns chattbots, e-postbots, webbskrapbots och sociala mediebots. Har du skapat en bot ännu? Det är förvånansvärt enkelt. Förmodligen varför de är överallt. Omfamna våra botherrar genom att gå med i deras rang. I den här artikeln visar jag dig hur du kan utnyttja Python för att interagera med dina Twitter-, Reddit- och Instagram-konton automatiskt. Arbeta med Py

Annons

Det är 2019. Du har hört talas om bots. Det finns chattbots, e-postbots, webbskrapbots och sociala mediebots. Har du skapat en bot ännu? Det är förvånansvärt enkelt. Förmodligen varför de är överallt. Omfamna våra botherrar genom att gå med i deras rang.

I den här artikeln visar jag dig hur du kan utnyttja Python för att interagera med dina Twitter-, Reddit- och Instagram-konton automatiskt.

Arbeta med Python

Denna genomgång använder Python som sitt språk att välja 6 skäl till varför Python är framtidens programmeringsspråk 6 skäl varför Python är framtidens programmeringsspråk Vill du lära dig eller utöka dina programmeringsfärdigheter? Här är varför Python är det bästa programmeringsspråket att lära sig i år. Läs mer . Pythons användarvänliga fördelar uppväger eventuella hastighetsbrister jämfört med andra språk. Du kan ladda ner Python för nästan alla operativsystem. Använd redigeraren du väljer.

Python-distributioner är associerade med verktyget som heter pip . I skrivande stund finns över 168 000 bibliotek tillgängliga för nedladdning med pip . För de bots du skapar idag behövs bara tre.

Från kommandoraden kan du installera de bibliotek som behövs med hjälp av dessa tre rader.

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

Nu kan du importera dessa bibliotek där det behövs.

Hämta applikationsnycklar och hemligheter

En klok filosof sa en gång ”Hemligheter, hemligheter är inte kul. Hemligheter, hemligheter skadar någon. ”Respektivt, robotarna behöver hemligheter. Nästa steg i installationen av dina bots är att ge dem åtkomst till API: n på varje webbplats. För att göra detta behöver du en applikationsnyckel eller hemlighet.

När du samlar nycklar, hemligheter, tokens och mer (låter som ett roligt spel!) Lägger du dem alla i en enda fil som heter "credentials.py." Den här filen ser ut så här:

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

Mycket viktigt integritetsförslag: begär inte den här filen någon källkontroll (t.ex. Git). Du vill inte att någon annan ska ha dessa nycklar och hemligheter. De kallas hemligheter av en anledning.

Ställa in Twitter-åtkomst

Kolla in vår guide för att ställa in en Twitter-bot med Node.js kommer att visa dig hur du skapar din Twitter-app. Hur man bygger ett foto Tweetar Twitter Bot med Raspberry Pi och Node.js Hur man bygger ett foto Tweetar Twitter Bot med Raspberry Pi och Node.js Kom igång med Node.js och skapa en Twitter-bot som tweetsar foton och information med bara en Raspberry Pi! Läs mer . Observera att Twitter kommer att ta lite tid att verifiera ditt konto och se till att du inte skapar ett spam-konto.

När du har följt dessa steg kopierar du konsumentnyckeln, konsumenthemligheten, åtkomsttoken och åtkomsttokenhemden till din credentials.py-fil.

Ställa in Reddit Access

Att få ditt Reddit-klient-ID och hemlighet är mycket lik Twitter. Du måste registrera en app som Reddit User Agent. När du har gjort detta bör du absolut lägga "Reddit User Agent" på din CV.

Logga in på Reddit-kontot du väljer. Navigera till appens inställningssida och klicka på Skapa en annan app . Namnge din användaragent något användbart. Välj skript för din app. Den om URL kan lämnas tom. Fyll i valfri adress för omdirigeringsrutan.

Reddit App Bot Python

När du har tryckt på skapa app kommer följande skärm att presenteras för dig med en lista över dina appar. Siffrorna under ditt applikationsnamn representerar klient-ID och klienthemligheten finns under det. Kopiera dessa värden till din credentials.py-fil.

Reddit App API Secret Python

Ställa in Instagram Access

Instagramåtkomst skiljer sig från Twitter och Reddit. Istället för att registrera en app använder du ditt användarnamn och lösenord. Jag föreslår att du skapar ett separat offentligt konto och använder dessa detaljer för din bot.

Få tillgång till Reddit With Praw

Att använda ropa är en tvåstegsprocess. Först är inställningen av åtkomst ett enda samtal till Reddit-metoden för praw. Sedan med hjälp av det initialiserade objektet, söker du i en subreddit görs med den nya metoden ().

 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) 

Ändra sub_name att få inlägg från olika subreddits. I stället för new() finns andra metoder som hot() att få inlägg.

Söker på Instagram Hashtags via InstagramAPI

Det första steget i att använda Instagram API är att ställa in ett objekt med klient-ID och hemlighet. Direkt efter det, ring inloggningsmetoden () för att slutföra installationen.

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

Att använda API är lite mer komplicerat än dess Reddit-motsvarighet. I det här exemplet använder manuset getHashtagFeed för att få ett mycket stort JSON-svarobjekt från Instagram.

Genom att söka igenom svaret letar skriptet efter texttext och skrivs sedan ut på skärmen för att se det.

 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) 

Lägg till bilder i sociala medier

När du går framåt kanske du vill att ditt skript ska få bilderna i detta hashtag-flöde. För att göra detta, gå igenom JSON-svaret och hitta media som är associerade med varje inlägg. Här är en implementering för att extrahera informationen från JSON-svaret:

 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 

Det finns två hjälpfunktioner som används i den här funktionen. Instagram skickar en lista med bildkandidater i JSON-svaret. Välj den största av dessa bilder så att media visas i högsta upplösning.

 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 

För det andra, när länken till bilden hittats kan du spara bilden lokalt genom att skriva innehållet till en fil. Att använda requests gör detta enkelt.

 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 

Tweeta ut media med Tweepy

Först måste du ställa in Twitter-åtkomst med dina hemligheter och nycklar.

 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) 

Skapa en generisk retweet-bot görs på bara några få rader.

 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 

Många andra saker kan göras med detta bibliotek. För att avsluta denna genomgång kan du använda funktionen get_images_from_hashtag från Instagram-botten som gjordes tidigare för att tweeta ut bilder och bildtexter.

Dessutom kan din Twitter-bot söka på Reddit efter nya inlägg och tweeta ut dem också. Att sätta ihop båda dessa funktioner ser ut så här:

 # 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 

Din Python-powered Social Media Bot är redo!

Så nu har du ett gäng kod som drar media från en webbplats och inlägg till en annan. Du kan också blanda och matcha. Dra tweets och skicka till Reddit. Samla Instagram-bilder för att lägga till subreddits. Gör en bot och vara en del av det verkliga internet.

Slutligen, för att automatisera den här processen, vill du att dina bots ska köras i en slinga på en server. Detta kan vara på din egen dator med en tidsplanerare. Eller stoft av den gamla Raspberry Pi som har varit i din garderob, och kolla in dessa söta Twitter-botprojekt för Pi 10 Bästa Twitter Bot-projekt för Raspberry Pi 10 Bästa Twitter Bot-projekt för Raspberry Pi Läs mer.

Utforska mer om: Coding Tutorials, Python, Bots för sociala medier.