Kako zgraditi Twitter, Instagram in Reddit Bote z uporabo Pythona

Kako zgraditi Twitter, Instagram in Reddit Bote z uporabo Pythona

Leto 2019 je. Slišali ste za bote. Obstajajo roboti za klepet, e -poštni roboti, roboti za strganje po spletu in roboti za družabne medije. Ste že ustvarili bot? Presenetljivo je lahko. Verjetno so zato povsod. Sprejmite naše nadrejene bote, tako da se jim pridružite.





V tem članku vam bom pokazal, kako lahko uporabite Python za samodejno interakcijo z vašimi računi Twitter, Reddit in Instagram.





Delo s Pythonom

Ta sprehod uporablja Python kot svoj izbrani jezik. Prednosti enostavne uporabe Pythona odtehtajo vse pomanjkljivosti hitrosti v primerjavi z drugimi jeziki. Python lahko prenesete za skoraj vse operacijske sisteme. Uporaba urednik po vaši izbiri .





Distribucije Python so povezane s pripomočkom, imenovanim

razlika med airpods 1 in 2
pip

. V času pisanja je na voljo za prenos več kot 168.000 knjižnic



pip

. Za bote, ki jih boste ustvarili danes, potrebujete le tri.

Iz ukazne vrstice lahko s temi tremi vrsticami namestite potrebne knjižnice.





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

Zdaj boste lahko po potrebi uvozili te knjižnice.

Pridobivanje aplikacijskih ključev in skrivnosti

Modri ​​filozof je nekoč rekel: 'Skrivnosti, skrivnosti niso zabavne. Skrivnosti, skrivnosti nekoga poškodujejo. ' S spoštovanjem, roboti potrebujejo skrivnosti. Naslednji korak pri nastavitvi vaših robotov je, da jim omogočite dostop do API -ja vsakega spletnega mesta. Če želite to narediti, potrebujete ključ aplikacije ali skrivnost.





Ko zbirate ključe, skrivnosti, žetone in še več (zveni kot zabavna igra!), Jih vse zložite v eno datoteko, imenovano 'credentials.py'. Ta datoteka bi izgledala nekako takole:

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

Zelo pomemben predlog glede zasebnosti: tej datoteki ne pripisujte nobenega izvornega nadzora (npr. Git). Ne želite, da bi kdo drug imel te ključe in skrivnosti. Z razlogom se imenujejo skrivnosti.

Nastavitev dostopa do Twitterja

Oglejte si naš vodnik za nastavitev Twitter -bot z Node.js vam bo pokazal, kako ustvarite svojo Twitter aplikacijo. Upoštevajte, da bo Twitter potreboval nekaj časa, da preveri vaš račun in se prepriča, da ne ustvarjate neželene pošte.

Ko sledite tem korakom, kopirajte potrošniški ključ, potrošniško skrivnost, žeton za dostop in skrivnost žetona za dostop v datoteko credentials.py.

Nastavitev dostopa do Reddita

Pridobitev ID -ja odjemalca in skrivnosti za Reddit je zelo podobna Twitterju. Aplikacijo boste morali registrirati kot uporabniški agent Reddit. Ko to storite, v svoj življenjepis obvezno vnesite »Reddit User Agent«.

Prijaviti se na izbrani račun Reddit. Pomaknite se do stran z nastavitvami aplikacij in Kliknite Ustvari drugo aplikacijo . Poimenujte svojega uporabniškega agenta nekaj uporabnega. Izberite skript za namen vaše aplikacije. O URL -ju približno lahko pustite prazno. Izpolnite kateri koli naslov polja za preusmeritev.

Za tabo Pritisnite Ustvari aplikacijo , se vam prikaže naslednji zaslon s seznamom vaših aplikacij. Številke pod imenom vaše aplikacije predstavljajo ID odjemalca, pod tem pa je skrivnost odjemalca. Kopirajte te vrednosti v datoteko credentials.py.

Nastavitev dostopa do Instagrama

Dostop do Instagrama se razlikuje od Twitterja in Reddita. Namesto registracije aplikacije uporabite svoje uporabniško ime in geslo. Predlagam, da ustvarite ločen javni račun in te podatke uporabite za svojega bota.

Dostop do Reddita s programom Praw

Uporaba kozice je postopek v dveh korakih. Prvič, nastavitev dostopa je klic ene funkcije za metodo Reddit za kozico. Nato se z inicializiranim objektom po metodi new () opravi iskanje podredita.

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)

Spremenite

sub_name

spremenljivko za pridobivanje objav iz različnih podredov. Namesto

new()

, druge metode, kot npr

hot()

so na voljo za objavo.

Iskanje po Instagram hashtagih prek InstagramAPI

Prvi korak pri uporabi API -ja Instagram je nastavitev predmeta z ID -jem odjemalca in skrivnostjo. Takoj za tem pokličite metodo login (), da dokončate nastavitev.

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

Uporaba API -ja je nekoliko bolj zapletena kot njegov kolega iz Reddita. V tem primeru skript uporablja getHashtagFeed, da od Instagrama dobi zelo velik odzivni objekt JSON.

Če išče po odzivu, skript poišče besedilo napisov in ga nato natisne na zaslon.

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)

Dodajte slike v družabne medije

Če se premaknete naprej, boste morda želeli, da vaš skript dobi slike v tem viru hashtagov. Če želite to narediti, prebrskajte odgovor JSON in poiščite medije, povezane z vsako objavo. Tu je izvedba za pridobivanje informacij iz odgovora JSON:

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

V tej funkciji sta uporabljeni dve pomožni funkciji. Instagram v odgovoru JSON pošlje seznam slik 'kandidatov'. Izberite največjo od teh slik, da bo medij prikazan v najvišji ločljivosti.

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

Drugič, ko najdete povezavo do slike, jo lahko lokalno shranite tako, da vsebino zapišete v datoteko. Uporabljati

requests

knjižnica to naredi preprosto.

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

Tweetanje medijev s Tweepyjem

Najprej morate s svojimi skrivnostmi in ključi nastaviti dostop do Twitterja.

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)

Ustvarjanje splošnega retweet bot -a je narejeno v le nekaj vrsticah.

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

S to knjižnico je mogoče narediti še veliko drugih stvari. Za zaključek tega postopka lahko uporabite datoteko

get_images_from_hashtag

funkcijo iz prejšnjega bota Instagram za tvitanje slik in napisov.

Poleg tega lahko vaš bot na Twitterju v Redditu išče nove objave in jih tudi tvita. Če združite obe funkciji, izgleda tako:

# 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:
{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

Vaš bot za družabne medije, ki ga poganja Python, je pripravljen!

Torej, zdaj imate kup kode, ki medije potegne z enega spletnega mesta in objavi na drugo. Lahko tudi mešate in ujemate. Povlecite tweete in jih objavite na Redditu. Zberite Instagram slike za objavo v podreditvah. Naredite bot in postanite del pravega interneta.

Nazadnje, če želite popolnoma avtomatizirati ta proces, boste želeli, da se vaši roboti izvajajo v zanki na strežniku. To je lahko na vašem računalniku s časovnikom. Ali pa odstranite prah s tiste stare Raspberry Pi, ki je bila v vaši omari, in si oglejte te sladke projekte Twitter bot za Pi.

Deliti Deliti Cvrkutati E-naslov Tukaj je razlog, zakaj je FBI izdal opozorilo za panjsko odkupno programsko opremo

FBI je izdal opozorilo o še posebej grdi vrsti odkupne programske opreme. Evo, zakaj morate biti še posebej previdni pri odkupni programski opremi Hive.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Python
  • Boti za družabne medije
  • Kodiranje vadnic
O avtorju Tom Johnsen(3 objavljeni članki)

Tom je programski inženir s Floride (vzklikni na Florida Man) s strastjo do pisanja, univerzitetnega nogometa (go Gators!), CrossFita in vejice v Oxfordu.

Več od Toma Johnsena

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite