Vil du bygge dine egne sociale medier bots?  Her er, hvordan du automatisk poster opdateringer til Twitter, Instagram og Reddit ved hjælp af Python.

Sådan oprettes bots på Twitter, Instagram og reddit ved hjælp af Python

Reklame Det er 2019. Du har hørt om bots. Der er chat-bots, e-mail-bots, skraber-bots på nettet og sociale medier-bots. Har du oprettet en bot endnu? Det er overraskende let. Sandsynligvis hvorfor de er overalt. Omfavn vores botherrer ved at tilslutte sig deres rang. I denne artikel viser jeg dig, hvordan du automatisk kan udnytte Python til at interagere med dine Twitter-, Reddit- og Instagram-konti.

Reklame

Det er 2019. Du har hørt om bots. Der er chat-bots, e-mail-bots, skraber-bots på nettet og sociale medier-bots. Har du oprettet en bot endnu? Det er overraskende let. Sandsynligvis hvorfor de er overalt. Omfavn vores botherrer ved at tilslutte sig deres rang.

I denne artikel viser jeg dig, hvordan du automatisk kan udnytte Python til at interagere med dine Twitter-, Reddit- og Instagram-konti.

Arbejde med Python

Denne gennemgang bruger Python som dets valg af sprog 6 grunde til, at Python er fremtidens programmeringssprog 6 grunde til, at Python er fremtidens programmeringssprog Vil du lære eller udvide dine programmeringsevner? Her er grunden til at Python er det bedste programmeringssprog at lære i år. Læs mere . Pythons brugervenlige fordele opvejer alle hastighedsmangler, den har sammenlignet med andre sprog. Du kan downloade Python til næsten ethvert operativsystem. Brug den valgte redaktør.

Python-distributioner kommer i forbindelse med værktøjet, der kaldes pip . I skrivende stund er der over 168.000 biblioteker, der kan downloades ved hjælp af pip . For de bots, du opretter i dag, er der kun tre behov.

Fra kommandolinjen kan du installere de nødvendige biblioteker ved hjælp af disse tre linjer.

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

Nu kan du importere disse biblioteker efter behov.

Hent applikationstaster og hemmeligheder

En klog filosof sagde engang ”Hemmeligheder, hemmeligheder er ikke sjovt. Hemmeligheder, hemmeligheder skader nogen. ”Respektivt har botserne brug for hemmeligheder. Det næste trin i opsætningen af ​​dine bots er at give dem adgang til API'et på hvert websted. For at gøre dette skal du bruge en applikationsnøgle eller hemmelighed.

Når du samler nøgler, hemmeligheder, tokens og mere (lyder som et sjovt spil!), Lægger du dem alle i en enkelt fil kaldet “credentials.py.” Denne fil ser sådan ud:

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

Meget vigtigt forslag til beskyttelse af personlige oplysninger: Brug ikke denne fil nogen kildekontrol (f.eks. Git). Du ønsker ikke, at andre skal have disse nøgler og hemmeligheder. De kaldes hemmeligheder af en grund.

Opsætning af Twitter-adgang

Se vores guide til opsætning af en Twitter-bot med Node.js vil vise dig, hvordan du opretter din Twitter-app Sådan oprettes et foto, der kvitterer Twitter-bot med Raspberry Pi og Node.js Sådan oprettes et foto, der kvitterer Twitter-bot med Raspberry Pi og Node.js Kom i gang med Node.js og opret en Twitter-bot, der tweets fotos og information ved hjælp af bare en Raspberry Pi! Læs mere . Bemærk, at Twitter vil tage nogen tid at bekræfte din konto og sikre, at du ikke opretter en spam-konto.

Når du har fulgt disse trin, skal du kopiere forbrugernøglen, forbrugerhemmeligheden, adgangstoken og adgangstokenhemmeligheden til din credentials.py-fil.

Opsætning af Reddit Access

At få dit Reddit-klient-id og hemmelighed ligner meget Twitter. Du skal registrere en app som en Reddit-brugeragent. Efter at have gjort dette, skal du absolut sætte “Reddit User Agent” på dit CV.

Log ind på den Reddit-konto, du vælger. Naviger til siden med appsindstillinger, og klik på Opret en anden app . Navngiv din brugeragent til noget nyttigt. Vælg script til formålet med din app. Den omkring URL kan stå tom. Udfyld enhver adresse til omdirigeringsfeltet.

Reddit App Bot Python

Når du har trykket på Opret app, vises følgende skærmbillede for dig med en liste over dine apps. Cifrene under dit applikationsnavn repræsenterer klient-idet, og klienthemmeligheden findes under det. Kopier disse værdier til din credentials.py-fil.

Reddit App API Secret Python

Opsætning af Instagram-adgang

Instagram-adgang adskiller sig fra Twitter og Reddit. I stedet for at registrere en app, bruger du dit brugernavn og din adgangskode. Jeg foreslår, at du opretter en separat offentlig konto og bruger disse detaljer til din bot.

Adgang til Reddit With Praw

Brug af rov er en totrinsproces. For det første er opsætningen af ​​adgangen et enkelt funktionskald til reddit-metoden til blegning. Derefter, ved hjælp af det initialiserede objekt, søges en subreddit udføres ved hjælp af den nye () -metode.

 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) 

Skift variabel sub_name at få indlæg fra forskellige subreddits. I stedet for new() er andre metoder, såsom hot(), tilgængelige for at få indlæg.

Søger på Instagram Hashtags via InstagramAPI

Det første trin i brugen af ​​Instagram API er at konfigurere et objekt med klient-id og hemmelighed. Direkte derefter kalder du på login () -metoden for at afslutte opsætningen.

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

Brug af API er lidt mere kompliceret end dets Reddit-modstykke. I dette eksempel bruger scriptet getHashtagFeed til at få et meget stort JSON-svarobjekt fra Instagram.

Når man søger gennem svaret, søger scriptet efter billedtekst og udskrives derefter til skærmen for at 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) 

Føj billeder til sociale medier

Når du bevæger dig fremad, ønsker du måske, at dit script skal få billederne i dette hashtag-feed. For at gøre dette skal du gå igennem JSON-svaret og finde de medier, der er knyttet til hvert indlæg. Her er en implementering til at udtrække oplysningerne fra 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 

Der er to hjælpefunktioner, der bruges i denne funktion. Instagram sender en liste over billedkandidater i JSON-svaret. Vælg det største af disse billeder, så medierne vises i sin højeste oplø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 

For det andet, når linket til billede er fundet, kan du gemme billedet lokalt ved at skrive indholdet til en fil. Brug af requests biblioteket gør dette ligetil.

 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 medier med tweepy

Først skal du indstille Twitter-adgang vha. Dine hemmeligheder og nøgler.

 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) 

Oprettelse af en generisk retweet-bot udføres på kun et par linjer.

 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 

Mange andre ting kan gøres med dette bibliotek. For at afslutte denne gennemgang kan du bruge get_images_from_hashtag funktionen fra Instagram-bot, der er foretaget tidligere til at tweet ud billeder og billedtekster.

Derudover kan din Twitter-bot søge på Reddit efter nye indlæg og tweet dem også. At sammensætte begge disse funktionaliteter ser sådan ud:

 # 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-drevne sociale mediebot er klar!

Så nu har du en masse kode, der trækker medier fra et sted og indlæg til et andet. Du kan også mikse og matche. Træk tweets, og skriv til Reddit. Saml Instagram-billeder til udstationering på subreddits. Lav en bot og vær en del af det rigtige internet.

Til sidst, for at automatisere denne proces fuldt ud, vil du have, at dine bots skal køre i en løkke på en server. Dette kan være på din egen computer med en tidsplanlægning. Eller støv den gamle Raspberry Pi, der har været i dit skab, og tjek disse søde Twitter-bot-projekter til Pi 10 Bedste Twitter Bot-projekter til Raspberry Pi 10 Bedste Twitter Bot-projekter til Raspberry Pi Læs mere.

Udforsk mere om: Kodetutorials, Python, Bots til sociale medier.