
Michael Fisher
0
4897
73
2019. Čuli ste za robota. Postoje botovi za chat, botovi za e-poštu, botovi za web struganje i roboti na društvenim mrežama. Jeste li već stvorili robota? Iznenađujuće je jednostavno. Vjerojatno zašto su posvuda. Prigrlite našeg bot nadmoćnika pridružujući im se čin.
U ovom ću članku pokazati kako možete iskoristiti Python da automatski komunicira sa svojim Twitter, Reddit i Instagram računima.
Rad sa Python-om
Ovo poglavlje koristi Python kao jezik izbora. 6 razloga zašto je Python programski jezik budućnosti 6 razloga zašto je Python programski jezik budućnosti Želite li naučiti ili proširiti svoje programiranje? Evo zašto je Python najbolji programski jezik koji se uči ove godine. , Prednosti jednostavnosti upotrebe Pythona nadmašuju sve nedostatke brzine u usporedbi s drugim jezicima. Možete preuzeti Python za gotovo bilo koji OS. Koristite uređivač po izboru.
Python distribucije povezane su s uslužnim programom koji se zove zvjezdica
. U trenutku pisanja teksta dostupno je preko 168 000 knjižnica za preuzimanje zvjezdica
. Za botove koje ćete stvoriti danas potrebna su samo tri.
Iz naredbenog retka možete instalirati potrebne biblioteke pomoću ova tri retka.
pip instalacija - nadogradnja InstagramAPI pip instalacija - nadogradnja tweepy pip instalacija - nadogradnja praw
Sada ćete moći uvesti te knjižnice tamo gdje je to potrebno.
Dobivanje tipki i tajni programa
Jednom je rekao mudri filozof “Tajne, tajne nisu zabava. Tajne, tajne nekoga povrijede.” Botovima s poštovanjem trebaju tajne. Sljedeći korak u postavljanju vaših botova je omogućiti im pristup API-ju svake web lokacije. Da biste to učinili, trebat će vam aplikacijski ključ ili tajna.
Dok skupljate ključeve, tajne, tokene i još mnogo toga (zvuči kao zabavna igra!), Sve ih stavite u jednu datoteku pod nazivom “credentials.py.” Ova bi datoteka izgledala ovako:
# 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_ "
Vrlo važan prijedlog o privatnosti: ne obavezujte na ovu datoteku nikakvu kontrolu izvora (npr. Git). Ne želite da itko drugi ima ove ključeve i tajne. Nazivaju se tajnom s razlogom.
Postavljanje Twittera pristupa
Pogledajte naš vodič za postavljanje Twittera za bot s Node.js pokazat će vam kako stvoriti svoju aplikaciju za Twitter Kako izgraditi fotografiju Tweeting Twitter Bot With Raspberry Pi i Node.js Kako izgraditi fotografiju Tweetting Twitter Bot With Raspberry Pi i Node.js Započnite s Node.js i stvorite Twitter bot koji tweeta fotografije i informacije koristeći samo Raspberry Pi! , Imajte na umu da će Twitteru trebati neko vrijeme da potvrdi vaš račun i osigura da ne stvarate neželjeni račun.
Nakon sljedećih koraka kopirajte potrošački ključ, potrošačku tajnu, pristupni token i tajnu tokena za pristup u svoju datoteku vjerodajnice.py.
Postavljanje Reddit pristupa
Dobivanje vašeg Reddit ID-a klijenta i tajne vrlo je slično Twitteru. Morat ćete registrirati aplikaciju kao Reddit korisnički agent. Nakon što to učinite, trebali biste apsolutno staviti “Reddit korisnički agent” na vašem životopisu.
Prijaviti se na Reddit račun po vašem izboru. Dođite do stranice s postavkama aplikacija i Kliknite stvoriti drugu aplikaciju. Dajte korisničkom agentu nešto korisno. Odaberite skriptu u svrhu vaše aplikacije. Polje o URL-u može biti prazno. Ispunite bilo koju adresu za okvir za preusmjeravanje.
Poslije tebe Pritisnite stvoriti aplikaciju, na sljedećem zaslonu prikazat će vam se popis vaših aplikacija. Brojke pod nazivom vaše aplikacije predstavljaju ID klijenta, a tajna klijenta nalazi se ispod njega. Kopirajte te vrijednosti u datoteku vjerodajnice.py.
Postavljanje Instagram pristupa
Pristup Instagramu razlikuje se od Twittera i Reddita. Umjesto da registrirate aplikaciju, koristite svoje korisničko ime i zaporku. Predlažem da stvorite zasebni javni račun i da te detalje upotrebljavate za svog robota.
Pristup Redditu Praw-om
Korištenje praw-a je postupak u dva koraka. Prvo, postavljanje pristupa je jednostruki poziv funkciji Reddit metode praw. Zatim se pomoću inicijaliziranog objekta pretraživanje podreddita vrši novom () metodom.
uvoz praw iz vjerodajnica import * my_reddit = praw.Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'tehnologija' max_posts = 10 za podnošenje u my_reddit.subreddne (pod-limit) (podnaslov) (pod_knjiga) (pod_knjiga) (pod_knjiga) (pod_knjiga) (podv. granica) (submission.title)
Promijeni sub_name
varijabla za dobivanje postova različitih podredova. Umjesto novi()
, druge metode kao što su vruća ()
dostupni su za dobivanje postova.
Pretraživanje Instagram Hashtags putem InstagramAPI
Prvi korak u korištenju Instagram API-ja je postavljanje objekta s ID-om klijenta i tajnom. Odmah nakon toga nazovite metodu login () da biste dovršili postavljanje.
from InstagramAPI import InstagramAPI iz vjerodajnica import instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id, instagram_client_secret) my_insta_api.login ()
Korištenje API-ja malo je složenije od njegovog Reddit kolega. U ovom primjeru skripta koristi getHashtagFeed da bi od Instagrama dobio vrlo velik objekt JSON odgovora.
Pretražujući odgovor, skripta traži tekst opisa, a zatim ispisuje na zaslon kako bi ga pogledao.
get_hashtag = my_insta_api.getHashtagFeed (hashtag) if get_hashtag! = False: za stavku u my_insta_api.LastJson ['items']: ako je 'caption' u item.keys () i 'text' u item ['caption'] ključevima ( ): caption = item ['caption'] ['text'] ispis (naslov)
Dodajte slike društvenim medijima
Ako krenete naprijed, možda ćete htjeti da vaša skripta dobije slike u ovom feedu hashtaga. Da biste to učinili, pregledajte JSON odgovor i pronađite medije povezane sa svakim postom. Evo primjene za vađenje informacija iz odgovora JSON:
def get_images_from_hashtag (hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed (hashtag) ako get_hashtag == False: vratite slike za stavku u mom_insta_api.LastJson ['items' ]_tip ako stavka: i 'image_versions2' u item.keys (): kandidat = get_largest_image (stavka ['image_versions2'] ['kandidati']) # get image filename = self.save_image_from_candidate (kandidat ['url']) ako ime datoteke! = ": # dobiti status, spremite kao tuple caption = get_caption (stavka) images.append ((ime datoteke, opis)) ako je len (slike)> = num_images: prekinite povratne slike
U toj se funkciji koriste dvije pomoćne funkcije. Instagram šalje popis slika “kandidati” u odgovoru JSON. Odaberite najveću od ovih slika tako da se medij prikazuje u najvećoj razlučivosti.
def get_largest_image (kandidati): kandidat = piksela = 0 za svijest kod kandidata: # odaberite najveću rezoluciju jedna res = cand ['visina'] * cand ['širina'] ako res> pixels: pixels = res kandidat = cand kandidat za povratak
Drugo, nakon što se pronađe veza do slike, sliku možete spremiti lokalno tako što sadržaj upišete u datoteku. Koristiti zahtjevi
knjižnica to čini izravnim.
def save_image_from_candidate (url): naziv datoteke = "odgovor = zahtjevi.get (url) # provjeri kod statusa odgovora. 200 znači dobro ako odgovor.status_code == 200: naziv datoteke = url.split (" / ") [- 1]. split ('?') [0] with open (ime datoteke, 'wb') kao f: f.write (response.content) povratno ime datoteke
Tweepy iz medija
Prvo, morat ćete postaviti Twitter pristup pomoću vaših tajni i ključeva.
uvoz tweepy s vjerodajnica 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_api = tweepy.API)
Stvaranje generičkog retweet bota vrši se u samo nekoliko redaka.
za tweet u tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). stavke (10): pokušajte: tweet.favorite () tweet.retweet () vrijeme.sleep (2), osim tweepy.TweepError kao e: print ( npr. razlog) osim StopIteration: break
S ovom se knjižnicom mogu učiniti mnoge druge stvari. Za zaključak ovog koraka možete koristiti get_images_from_hashtag
funkcija iz Instagram bota napravljena ranije za tweet slike i titla.
Uz to, vaš Twitter bot može pretraživati Reddit za nove postove i tweetiti one. Spojiti obje ove funkcionalnosti izgleda ovako:
# koristite r / za reddit pretraživanje # i # za instagram pretraživanje hashtag = 'tehnologija' num_posts = 5 # tweet reddit info reddit_posts = my_reddit.subreddit (hashtag) .new (limit = broj_posts) za prijavu u reddit_posts: title = submit.title url = 'www.reddit.com '. format (submit.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) za (ime datoteke, poruke) u media_info: probajte: tweet_str = trim_to_280 (poruka) tw_api.update_with_media (ime datoteke, statusTe twee, osim tweee, osim tweee, osim tweee, osim tweee, osim tweee, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, osim tweera, tweera, tweera, tweera, tweera, tweera, twee, twee, twee, twee, twee, twee, twee, twee, twee,) kao e: ispis (npr. razlog) osim StopIteration: break
Vaš bot na društvenim mrežama na Python-u je spreman!
Dakle, sada imate gomilu koda koji povlači medije s jedne web stranice i postove na drugu. Možete i miješati i slagati. Povucite tweetove i objavite na Redditu. Prikupljajte slike na Instagramu za objavu u podredovima. Napravite robota i budite dio stvarnog interneta.
Konačno, da biste u potpunosti automatizirali ovaj postupak, poželjet ćete da se vaši roboti izvode u petlji na poslužitelju. To se može dogoditi na vašem računalu s vremenskim rasporedom. Ili prašinu sa onog starog Raspberry Pi-a koji se nalazio u vašem ormaru i pogledajte ove slatke projekte bot-bot-a za Pi 10 Best Project Bot-projekte za Raspberry Pi 10-ove najbolje Twitter Bot-projekte za Raspberry Pi .