Kā izveidot Twitter, Instagram un Reddit robotus, izmantojot Python

Kā izveidot Twitter, Instagram un Reddit robotus, izmantojot Python

Ir 2019. Jūs esat dzirdējuši par robotprogrammatūru. Ir tērzēšanas roboti, e -pasta roboti, tīmekļa nokasīšanas roboti un sociālo mediju roboti. Vai esat jau izveidojis robotu? Tas ir pārsteidzoši viegli. Iespējams, tāpēc viņi ir visur. Apskatiet mūsu botu virsniekus, pievienojoties viņu rangam.





Šajā rakstā es jums parādīšu, kā jūs varat izmantot Python, lai automātiski mijiedarbotos ar jūsu Twitter, Reddit un Instagram kontiem.





Darbs ar Python

Šajā rokasgrāmatā tiek izmantota Python kā izvēlētā valoda. Python lietošanas ērtuma priekšrocības salīdzinājumā ar citām valodām atsver jebkādus ātruma trūkumus. Jūs varat lejupielādēt Python gandrīz jebkurai OS. Izmantot redaktors pēc jūsu izvēles .





Python izplatīšana ir saistīta ar utilītu ar nosaukumu

kā izveidot tabulu ilustratorā
pip

. Rakstīšanas laikā lejupielādei ir pieejamas vairāk nekā 168 000 bibliotēkas



pip

. Robotiem, kurus izveidosit šodien, ir nepieciešami tikai trīs.

Izmantojot komandrindu, jūs varat instalēt nepieciešamās bibliotēkas, izmantojot šīs trīs rindas.





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

Tagad jūs varēsit importēt šīs bibliotēkas, kur nepieciešams.

Lietojumprogrammu atslēgu un noslēpumu iegūšana

Kāds gudrs filozofs reiz teica: “Noslēpumi, noslēpumi nav jautri. Noslēpumi, noslēpumi kādu sāp. ' Ar cieņu robotiem ir vajadzīgi noslēpumi. Nākamais robotu iestatīšanas solis ir ļaut tiem piekļūt katras vietnes API. Lai to izdarītu, jums būs nepieciešama lietojumprogrammas atslēga vai noslēpums.





Vācot atslēgas, noslēpumus, žetonus un daudz ko citu (izklausās pēc jautras spēles!), Salieciet tos visus vienā failā ar nosaukumu “credentials.py”. Šis fails izskatīsies apmēram šādi:

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

Ļoti svarīgs privātuma ieteikums: neizmantojiet šim failam nekādu avota vadību (piemēram, Git). Jūs nevēlaties, lai kādam citam būtu šīs atslēgas un noslēpumi. Ne velti tos sauc par noslēpumiem.

Twitter piekļuves iestatīšana

Iepazīstieties ar mūsu ceļvedi par Twitter robota iestatīšanu, izmantojot Node.js, tiks parādīts, kā izveidot savu Twitter lietotni. Ņemiet vērā, ka Twitter būs nepieciešams zināms laiks, lai verificētu jūsu kontu un pārliecinātos, ka neveidojat surogātpasta kontu.

Pēc šo darbību veikšanas nokopējiet failā credentials.py patērētāja atslēgu, patērētāja noslēpumu, piekļuves pilnvaru un piekļuves pilnvaras noslēpumu.

Reddit piekļuves iestatīšana

Reddit klienta ID un noslēpuma iegūšana ir ļoti līdzīga Twitter. Jums būs jāreģistrē lietotne kā Reddit lietotāju aģents. Kad esat to izdarījis, savā CV noteikti ievietojiet “Reddit User Agent”.

Ielogoties uz jūsu izvēlēto Reddit kontu. Dodieties uz lietotņu preferenču lapa un Noklikšķiniet uz Izveidot citu lietotni . Nosauciet lietotāja aģentam kaut ko noderīgu. Izvēlieties skriptu jūsu lietotnes vajadzībām. Par URL var atstāt tukšu. Ievadiet jebkuru novirzīšanas lodziņa adresi.

Pēc tevis Nospiediet izveidot lietotni , tiks parādīts šāds ekrāns ar jūsu lietotņu sarakstu. Cipari zem jūsu lietojumprogrammas nosaukuma apzīmē klienta ID, un klienta noslēpums atrodas zem tā. Kopējiet šīs vērtības failā credentials.py.

Instagram piekļuves iestatīšana

Piekļuve Instagram atšķiras no Twitter un Reddit. Lietotnes reģistrēšanas vietā jūs izmantojat savu lietotājvārdu un paroli. Es iesaku izveidot atsevišķu publisku kontu un izmantot šo informāciju savam robotam.

Piekļuve Reddit, izmantojot Praw

Praw lietošana ir divpakāpju process. Pirmkārt, piekļuves iestatīšana ir vienas funkcijas izsaukums uz Reddit praw metodi. Pēc tam, izmantojot inicializēto objektu, apakšredita meklēšana tiek veikta, izmantojot jauno () metodi.

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)

Nomaini

sub_name

mainīgais, lai saņemtu ziņas no dažādiem apakšredītiem. Tā vietā

new()

, citas metodes, piemēram

hot()

ir pieejami, lai iegūtu ziņas.

Meklē Instagram hashtags, izmantojot InstagramAPI

Pirmais solis, izmantojot Instagram API, ir objekta iestatīšana ar klienta ID un noslēpumu. Tūlīt pēc tam izsauciet pieteikšanās () metodi, lai pabeigtu iestatīšanu.

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 izmantošana ir nedaudz sarežģītāka nekā tā Reddit ekvivalents. Šajā piemērā skripts izmanto getHashtagFeed, lai no Instagram iegūtu ļoti lielu JSON atbildes objektu.

Meklējot atbildi, skripts meklē parakstu tekstu un pēc tam izdrukā ekrānā, lai to apskatītu.

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)

Pievienojiet attēlus sociālajiem medijiem

Virzoties uz priekšu, iespējams, vēlēsities, lai jūsu skripts iegūtu attēlus šajā hashtag plūsmā. Lai to izdarītu, apskatiet JSON atbildi un atrodiet ar katru ziņu saistīto multividi. Lūk, kā iegūt informāciju no JSON atbildes:

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

Šajā funkcijā tiek izmantotas divas palīga funkcijas. Instagram JSON atbildē nosūta attēlu “kandidātu” sarakstu. Izvēlieties lielāko no šiem attēliem, lai multivide tiktu parādīta visaugstākajā izšķirtspējā.

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

Otrkārt, kad saite uz attēlu ir atrasta, attēlu var saglabāt lokāli, ierakstot saturu failā. Izmantojot

requests

bibliotēka padara to vienkāršu.

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

Plašsaziņas līdzekļu tvītošana ar Tweepy

Pirmkārt, jums ir jāiestata Twitter piekļuve, izmantojot savus noslēpumus un atslēgas.

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)

Vispārīga retvīta robota izveide tiek veikta tikai dažās rindās.

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

Ar šo bibliotēku var paveikt daudzas citas lietas. Lai pabeigtu šo pārskatu, varat izmantot

get_images_from_hashtag

funkcija no iepriekš izveidotā Instagram robota, lai tvītotu attēlus un parakstus.

Turklāt jūsu Twitter robots var meklēt Reddit jaunas ziņas un arī tos tweetēt. Lai apvienotu abas šīs funkcijas, tas izskatās šādi:

# 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

Jūsu Python darbinātais sociālo mediju robots ir gatavs!

Tātad, tagad jums ir virkne kodu, kas izvelk multividi no vienas vietnes un ievieto ziņas citā. Jūs varat arī sajaukt un saskaņot. Pavelciet tvītus un ievietojiet vietnē Reddit. Apkopojiet Instagram attēlus, lai tos publicētu apakšredītos. Izveidojiet robotu un esiet daļa no reālā interneta.

Visbeidzot, lai pilnībā automatizētu šo procesu, jūs vēlaties, lai jūsu roboti darbotos ciklā serverī. Tas varētu būt jūsu datorā ar laika plānotāju. Vai arī notīriet putekļus no vecā Raspberry Pi, kas ir bijis jūsu skapī, un pārbaudiet šos saldos Twitter robotu projektus Pi.

Kopīgot Kopīgot Čivināt E -pasts Lūk, kāpēc FIB izdeva brīdinājumu par Hive Ransomware

FIB izdeva brīdinājumu par īpaši nepatīkamu izpirkuma programmatūras celmu. Lūk, kāpēc jums īpaši jāuzmanās no Hive izpirkuma programmatūras.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Python
  • Sociālo mediju roboti
  • Kodēšanas apmācības
Par autoru Toms Džonsens(3 raksti publicēti)

Toms ir programmatūras inženieris no Floridas (kliedziens Floridas cilvēkam) ar aizraušanos ar rakstīšanu, koledžas futbolu (go Gators!), CrossFit un Oksfordas komatus.

Vairāk no Toma Džonsena

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu