Oglas

2019. godina Čuli ste za robota. Postoje botovi za chat, botovi za e-poštu, botovi za struganje putem weba i roboti na društvenim mrežama. Jeste li već stvorili robota? Iznenađujuće je jednostavno. Vjerojatno su oni svuda ovdje. Prigrlite našeg bot nadmoćnika pridružujući im se čin.

U ovom ću vam članku pokazati kako možete iskoristiti Python da automatski komunicira s vašim Twitter, Reddit i Instagram računima.

Rad sa Python-om

Ova upotreba koristi Python kao jezik izbora 6 razloga zašto je Python programski jezik budućnostiŽelite naučiti ili proširiti svoje programiranje? Evo zašto je Python najbolji programski jezik koji se uči ove godine. Čitaj više . 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.

instagram viewer

Iz naredbenog retka možete instalirati potrebne biblioteke pomoću ova tri retka.

pip install - nadogradite InstagramAPI. pip install --upgrade tweepy pip install - nadogradnja praw

Sada ćete moći uvesti te knjižnice tamo gdje je to potrebno.

Dobivanje tipki i tajni programa

Mudri filozof jednom je rekao: „Tajne, tajne nisu zabava. Tajne, tajne, vrijeđaju nekoga. " Botovima s poštovanjem trebaju tajne. Sljedeći je korak u postavljanju vaših botova omogućen 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 "vjerodajnice.py." Ova bi datoteka izgledala ovako:

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

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 Twitter bota s Node.js pokazat će vam kako stvorite svoju aplikaciju Twitter Kako izgraditi fotografiju cvrkut Twitter Bot s Raspberry Pi i Node.jsZapočnite s Node.js i stvorite Twitter bot koji tweeta fotografije i informacije koristeći samo Raspberry Pi! Čitaj više . 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 u svoju datoteku vjerodajnice.py.

Postavljanje Reddit pristupa

Dobivanje vašeg Reddit ID-a klijenta i tajne vrlo je slično na Twitteru. Morat ćete registrirati aplikaciju kao Reddit korisnički agent. Nakon što ste to učinili, trebali biste apsolutno staviti "Reddit User Agent" na svoj životopis.

Prijaviti se na račun Reddit po vašem izboru. Dođite do odjeljka stranica postavki 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.

Reddit App Bot Python

Poslije tebe Pritisnite stvoriti aplikaciju, prikazat će vam se sljedeći ekran s popisom 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.

Reddit App API Secret Python

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 kreirate zasebni javni račun i koristite te detalje za svog robota.

Pristup Redditu Praw-om

Korištenje praw-a je postupak u dva koraka. Prvo, postavljanje pristupa jednostruki poziv funkciji Reddit metode praw. Zatim se pomoću inicijaliziranog objekta pretraživanje podreddita vrši novom () metodom.

uvoz praw. iz uvoznih vjerodajnica * 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.subreddit (pod_ime) .new (limit = max_posts): ispis (submit.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 hashtagova putem InstagramAPI

Prvi korak u korištenju Instagram API-ja je postavljanje objekta s ID-om klijenta i tajnom. Odmah nakon toga, pozovite metodu login () da biste dovršili postavljanje.

s uvozom na Instagram. iz vjerodajnica uvoz 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) ako get_hashtag! = False: za stavku u my_insta_api. LastJson ['items']: ako je 'napis' u item.keys () i 'text' u item ['caption']. Tipke (): caption = item ['caption'] ['text'] print (opis)

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: vrati slike za stavku u mom_insta_api. LastJson ['items']: ako je stavka ['media_type'] == 1 i 'image_versions2' u item.keys (): kandidat = get_largest_image (item ['image_versions2'] ['kandidati']) # get image filename = self.save_image_from_candidate (kandidat ['url']) ako naziv datoteke! = '': # dobiti status, spremite kao tuple caption = get_caption (item) images.append ((ime datoteke, opis)) if len (images)> = num_images: prekinuti povratne slike. 

U toj se funkciji koriste dvije pomoćne funkcije. Instagram šalje popis slika "kandidata" u odgovoru JSON-a. 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 rezolucija jedna res = cand ['visina'] * cand ['width'] ako res> pixels: pixels = res kandidat = povratak cand kandidat. 

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 response.status_code == 200: filename = url.split ("/") [- 1] .split ('?') [0] with open (ime datoteke, 'wb') kao f: f.write (response.content ) povratak naziv datoteke. 

Tweepy iz medija

Prvo, morat ćete postaviti Twitter pristup pomoću vaših tajni i ključeva.

uvoz tweepy. iz uvoznih vjerodajnica * 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)

Stvaranje generičkog retweet bota vrši se u samo nekoliko redaka.

za tweet u tweepyju. Kursor (tw_api.search, q = 'MakeUseOf'). Stavke (10): probajte: tweet.favorite () tweet.retweet () time.sleep (2) osim tweepy. TweepError kao e: ispis (npr. Razlog) osim StopIteration: break. 

S ovom se knjižnicom mogu učiniti mnoge druge stvari. Za zaključak ovog koraka možete upotrijebiti get_images_from_hashtag funkcija od Instagram bota napravljena ranije za tweet slike i titla.

Uz to, vaš Twitter bot može pretraživati ​​Reddit za nove postove i tweetiti ih. Spojiti obje ove funkcionalnosti izgleda ovako:

# koristi r / za reddit pretraživanje. # i #za instagram pretraživanje. hashtag = 'tehnologija' num_posts = 5 # tweet reddit informacije. reddit_posts = my_reddit.subreddit (hashtag) .new (limit = broj_posts) za slanje 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 mediji. media_info = get_images_from_hashtag (hashtag, num_posts) for (ime datoteke, poruka) u media_info: pokušajte: tweet_str = trim_to_280 (poruka) tw_api.update_with_media (naziv datoteke, status = tweet_str) osim tweepy. TweepError kao e: ispis (npr. Razlog) osim StopIteration: break.

Vaš Bot za društvene medije na napajanju Python-a je spreman!

Dakle, sada imate gomilu koda koji povlače 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 proces, poželjet ćete da se vaši botovi izvode u petlji na poslužitelju. To se može dogoditi na vašem računalu s vremenskim rasporedom. Ili, ispraznite onu staru Raspberry Pi koja je bila u vašem ormaru i provjerite ove slatke Twitter bot projekti za Pi 10 najboljih Twitter Bot projekata za Raspberry Pi Čitaj više .

Tom je softverski inženjer s Floride (dovikiva Florida Manu) sa strašću za pisanjem, fakultetskim nogometom (idite Gators!), CrossFit i Oxford.