
Brian Curtis
0
1241
150
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. . 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 det kaldte værktøj 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 installere - opgradere InstagramAPI pip installere - opgradere tweepy pip installere - opgradere 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 botsene 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!), Placeres 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! . Bemærk, at Twitter vil tage nogen tid at bekræfte din konto og sikre, at du ikke opretter en spam-konto.
Efter at have fulgt disse trin, kopierer du 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 brugeragent” på dit CV.
Log ind til 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 din app. Den omkring URL kan stå tom. Udfyld enhver adresse til omdirigeringsfeltet.
Efter dig Tryk på Opret app, følgende skærmbillede vil blive præsenteret 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.
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øgning i en subreddit udføres ved hjælp af den nye () metode.
import praw fra legitimationsoplysninger 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 til indsendelse i my_reddit.subreddit (sub_name) maxpost = limit). (submission.title)
Skift sub_name
variabel for at få indlæg fra forskellige subreddits. I stedet for ny()
, andre metoder såsom hed()
er tilgængelige for at få stillinger.
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.
fra InstagramAPI importere InstagramAPI fra legitimationsoplysninger 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) hvis get_hashtag! = False: for punkt i my_insta_api.LastJson ['items']: hvis 'billedtekst' i item.keys () og 'tekst' i punktet ['caption']. nøgler ( ): caption = item ['caption'] ['text'] print (billedtekst)
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) hvis get_hashtag == False: returner billeder til varen i my_insta_api.LastJson ['items']: if item ['media_type'] == 1 og 'image_versions2' i item.keys (): kandidat = get_largest_image (punkt ['image_versions2'] ['kandidater']) # få image filename = self.save_image_from_candidate (kandidat ['url']) hvis filnavn! = ": # få status, gem som tuple caption = get_caption (item) images.append ((filnavn, billedtekst)) hvis len (billeder)> = num_images: break return images
Der er to hjælperfunktioner, der bruges i denne funktion. Instagram sender en liste med billeder “kandidater” i JSON-svaret. Vælg det største af disse billeder, så medierne vises i sin højeste opløsning.
def get_largest_image (kandidater): kandidat = pixels = 0 for cand i kandidater: # vælg den højeste opløsning en res = cand ['højde'] * cand ['bredde'] hvis res> pixels: pixels = res kandidat = cand retur kandidat
For det andet, når linket til billede er fundet, kan du gemme billedet lokalt ved at skrive indholdet til en fil. Bruger anmodninger
biblioteket gør dette ligetil.
def save_image_from_candidate (url): filename = "response = request.get (url) # Kontroller koden for responsstatus, 200 betyder godt, hvis response.status_code == 200: filnavn = url.split (" / ") [- 1]. opdele ('?') [0] med åbent (filnavn, 'wb') som f: f.write (response.content) return filnavn
Tweet medier med tweepy
Først skal du indstille Twitter-adgang vha. Dine hemmeligheder og nøgler.
importer tweepy fra legitimationsoplysninger 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.
til tweet i tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). poster (10): prøv: tweet.favorite () tweet.retweet () time.sleep (2) undtagen tweepy.TweepError som e: print ( e.reason) undtagen StopIteration: break
Mange andre ting kan gøres med dette bibliotek. For at afslutte denne gennemgang kan du bruge get_images_from_hashtag
funktion fra Instagram-bot, der er foretaget tidligere for 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:
# brug r / til reddit-søgning # og # til instagram-søgning hashtag = 'teknologi' num_posts = 5 # tweet reddit info reddit_posts = my_reddit.subreddit (hashtag). nyt (limit = num_posts) til indsendelse i reddit_posts: title = submission.title url = 'www.reddit.com '. format (indsendelse.permalink) tweet_str = f'Reddit r / sub opdatering: \ 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 (filnavn, besked) i media_info: prøv: tweet_str = trim_to_280 (besked) tw_api.update_with_media (filnavn, status = tweet_str som e: print (e.reason) undtagen 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 .