Kuidas ehitada Twitteri, Instagrami ja Redditi roboteid Pythoni abil

Kuidas ehitada Twitteri, Instagrami ja Redditi roboteid Pythoni abil

On aasta 2019. Olete robotitest kuulnud. Seal on vestlusrobotid, e -posti robotid, veebi kraapimisrobotid ja sotsiaalmeedia robotid. Kas olete juba loonud roboti? See on üllatavalt lihtne. Ilmselt sellepärast, et neid on igal pool. Võtke oma botide ülemused omaks, liitudes nende auastmega.





Selles artiklis näitan teile, kuidas saate Pythoni kasutada oma Twitteri, Redditi ja Instagrami kontodega automaatselt suhtlemiseks.





Pythoniga töötamine

Selles juhendis kasutatakse valitud keelena Pythoni. Pythoni kasutusmugavuse eelised kaaluvad üles kõik kiirusega seotud puudused võrreldes teiste keeltega. Pythoni saate alla laadida peaaegu kõigi OS -ide jaoks. Kasutamine teie valitud toimetaja .





Pythoni distributsioonid on seotud utiliidiga nimega

kuidas installida nintendont wii u
pip

. Selle kirjutamise ajal on allalaadimiseks saadaval üle 168 000 raamatukogu



pip

. Täna loodud robotite jaoks on vaja ainult kolme.

Käsurealt saate nende kolme rea abil installida vajalikud teegid.





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

Nüüd saate neid teeke vajaduse korral importida.

Rakendusvõtmete ja saladuste hankimine

Üks tark filosoof ütles kord: „Saladused, saladused pole lõbus. Saladused, saladused teevad kellelegi haiget. ' Lugupidamisega vajavad robotid saladusi. Järgmine samm robotite seadistamisel on võimaldada neile juurdepääs iga saidi API -le. Selleks vajate rakenduse võtit või saladust.





Võtmeid, saladusi, märke ja muud kogudes (kõlab nagu lõbus mäng!), Pange need kõik ühte faili nimega „credentials.py”. See fail näeks välja umbes selline:

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

Väga oluline privaatsusnõuanne: ärge pange sellele failile allikakontrolli (nt Git). Te ei soovi, et kellelgi teisel oleksid need võtmed ja saladused. Neid nimetatakse põhjusel saladusteks.

Twitteri juurdepääsu seadistamine

Vaadake meie juhendit Twitteri roboti seadistamiseks saidiga Node.js, mis näitab teile, kuidas oma Twitteri rakendust luua. Pange tähele, et Twitter võtab teie konto kinnitamiseks ja veendumaks, et te ei loo rämpsposti kontot, aega.

Pärast nende toimingute tegemist kopeerige oma volikirjade.py faili tarbijavõti, tarbijasaladus, juurdepääsuluba ja juurdepääsuloa saladus.

Redditi juurdepääsu seadistamine

Redditi kliendi -ID ja saladuse saamine on Twitteriga väga sarnane. Peate registreerima rakenduse Redditi kasutajaagendina. Pärast seda peaksite oma CV -sse kindlasti panema 'Reddit User Agent'.

Logi sisse teie valitud Redditi kontole. Liikuge lehele rakenduste eelistuste leht ja Klõpsake käsul Loo teine ​​rakendus . Nimetage oma kasutajaagendile midagi kasulikku. Valige skript teie rakenduse eesmärgil. Umbes URL -i võib tühjaks jätta. Täitke ümbersuunamise kasti mis tahes aadress.

Pärast sind Vajutage rakenduse loomist , kuvatakse teile järgmine ekraan koos teie rakenduste loendiga. Teie rakenduse nime all olevad numbrid tähistavad kliendi ID -d ja kliendi saladus asub selle all. Kopeerige need väärtused oma credentials.py faili.

Instagrami juurdepääsu seadistamine

Juurdepääs Instagramile erineb Twitterist ja Redditist. Rakenduse registreerimise asemel kasutate oma kasutajanime ja parooli. Soovitan luua eraldi avaliku konto ja kasutada neid üksikasju oma roboti jaoks.

Juurdepääs Redditile Prawiga

Praw kasutamine on kaheastmeline protsess. Esiteks on juurdepääsu seadistamine ühe funktsiooniga üleskutse Reddit praw meetodile. Seejärel tehakse lähtestatud objekti abil alamrediti otsimine uue () meetodi abil.

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)

Muuda

sub_name

muutuja, et saada postitusi erinevatest alamrediitidest. Selle asemel

new()

, muud meetodid nagu

hot()

on postituste saamiseks saadaval.

Instagrami hashtagide otsimine InstagramAPI kaudu

Instagrami API kasutamise esimene samm on kliendi ID ja saladusega objekti seadistamine. Vahetult pärast seda helistage seadistamise lõpuleviimiseks login () meetodile.

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

API kasutamine on pisut keerulisem kui selle Redditi vasted. Selles näites kasutab skript väga suure JSON -vastusobjekti saamiseks Instagramist getHashtagFeed.

Vastust otsides otsib skript pealdiste teksti ja prindib selle vaatamiseks ekraanile.

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)

Lisage pilte sotsiaalmeediasse

Edaspidi võite soovida, et teie skript saaks selle hashtagi voo pildid. Selleks lugege JSON -i vastust ja leidke iga postitusega seotud meedia. Siin on rakendus JSONi vastusest teabe hankimiseks:

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

Selles funktsioonis kasutatakse kahte abifunktsiooni. Instagram saadab JSONi vastuses piltide kandidaatide loendi. Valige neist piltidest suurim, et meediat kuvataks kõrgeima eraldusvõimega.

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

Teiseks, kui link pildile on leitud, saate pildi kohalikult salvestada, kirjutades sisu faili. Kasutades

requests

Raamatukogu teeb selle lihtsaks.

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

Meedia säutsumine Tweepy abil

Esiteks peate oma saladuste ja võtmete abil seadistama juurdepääsu Twitterile.

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)

Üldise retweet -botti loomine toimub vaid mõne reaga.

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

Selle raamatukoguga saab teha palju muid asju. Selle läbimise lõpetamiseks võite kasutada

get_images_from_hashtag

funktsioon varem tehtud Instagrami botist piltide ja subtiitrite säutsimiseks.

Lisaks saab teie Twitteri robot otsida Redditist uusi postitusi ja neid ka piiksutada. Mõlema funktsiooni ühendamine näeb välja selline:

# 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

Teie Pythoni toega sotsiaalmeedia robot on valmis!

Niisiis, nüüd on teil hunnik koodi, mis tõmbab meedia ühelt saidilt ja postitab teisele. Võite ka segada ja sobitada. Tõmmake säutsud ja postitage Redditi. Koguge Instagrami pilte subredditidesse postitamiseks. Tehke robot ja olge osa tõelisest Internetist.

Lõpuks, selle protsessi täielikuks automatiseerimiseks soovite, et teie robotid töötaksid serveris ahelas. See võib olla teie ajaarvuti abil teie arvutis. Või eemaldage tolmust see vana Raspberry Pi, mis on teie kapis olnud, ja vaadake neid magusaid Twitteri botiprojekte Pi jaoks.

Jaga Jaga Piiksuma E -post Siin on põhjus, miks FBI andis hoiatuse taru lunavara eest

FBI andis hoiatuse eriti vastiku lunavara tüve eest. Siin on põhjus, miks peate Hive lunavara suhtes eriti ettevaatlik olema.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Python
  • Sotsiaalmeedia robotid
  • Kodeerimise õpetused
Autori kohta Tom Johnsen(3 artiklit avaldatud)

Tom on tarkvaratehnik Floridast (hüüdke Florida Manile), kelle kirg on kirjutamine, kolledži jalgpall (go Gators!), CrossFit ja Oxfordi komad.

Veel Tom Johnsenilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin