Hogyan készítsünk Twitter, Instagram és Reddit robotokat a Python használatával

Hogyan készítsünk Twitter, Instagram és Reddit robotokat a Python használatával

2019 van. Hallottál robotokról. Vannak csevegőrobotok, e -mail robotok, webkaparó robotok és közösségi médiarobotok. Létrehoztál már robotot? Meglepően könnyű. Valószínűleg ezért vannak mindenhol. Ölelje át botfőnökeinket, ha csatlakozik rangjukhoz.





Ebben a cikkben megmutatom, hogyan használhatja ki a Python -t, hogy automatikusan interakcióba lépjen Twitter-, Reddit- és Instagram -fiókjaival.





Munka Python -szal

Ez az útmutató a Python-t használja választott nyelvként. A Python könnyű kezelhetőségének előnyei meghaladják a sebességgel kapcsolatos hiányosságokat más nyelvekhez képest. A Python letölthető szinte minden operációs rendszerhez. Használat az Ön által választott szerkesztő .





A Python disztribúciók az ún

játékok, amelyek nem igényelnek sok tárhelyet
pip

. Az írás idején több mint 168 000 könyvtár áll rendelkezésre letöltésre



pip

. A ma létrehozott robotokhoz csak háromra van szükség.

A parancssorból telepítheti a szükséges könyvtárakat e három sor segítségével.





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

Mostantól szükség esetén importálhatja ezeket a könyvtárakat.

Alkalmazáskulcsok és titkok beszerzése

Egy bölcs filozófus egyszer azt mondta: „Titkok, a titkok nem szórakoztatóak. Titkok, titkok bántanak valakit. Tisztelettel a botoknak titokra van szükségük. A robotok beállításának következő lépése az, hogy hozzáférést kell biztosítani az egyes webhelyek API -jához. Ehhez szüksége lesz egy alkalmazáskulcsra vagy titokra.





Miközben kulcsokat, titkokat, tokeneket és egyebeket gyűjt (szórakoztató játéknak tűnik!), Tegye mindezt egyetlen, 'credentials.py' nevű fájlba. Ez a fájl valahogy így nézne ki:

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

Nagyon fontos adatvédelmi javaslat: ne kövesse el ezt a fájlt semmilyen forrásvezérléssel (pl. Git). Nem akarja, hogy bárki más birtokolja ezeket a kulcsokat és titkokat. Okkal titoknak nevezik őket.

A Twitter -hozzáférés beállítása

Nézze meg útmutatónkat a Twitter -bot beállításához a Node.js használatával, és megmutatja, hogyan hozhatja létre Twitter -alkalmazását. Ne feledje, hogy a Twitter eltart egy ideig, amíg ellenőrzi a fiókját, és megbizonyosodik arról, hogy nem hoz létre spamfiókot.

Miután végrehajtotta ezeket a lépéseket, másolja a fogyasztói kulcsot, a fogyasztói titkot, a hozzáférési jogkivonatot és a hozzáférési jogkivonat titkát a credentials.py fájlba.

A Reddit hozzáférés beállítása

A Reddit ügyfél -azonosító és a titok megszerzése nagyon hasonlít a Twitterhez. Be kell regisztrálnia egy alkalmazást Reddit felhasználói ügynökként. Ezt követően feltétlenül fel kell vennie a „Reddit User Agent” -ot az önéletrajzába.

Bejelentkezés az Ön által választott Reddit -fiókba. Navigáljon a alkalmazások beállítási oldalát és Kattintson a másik alkalmazás létrehozása lehetőségre . Nevezzen valami hasznosat a felhasználói ügynöknek. Válassza ki a szkriptet alkalmazásod céljaira. A körülbelül URL üresen maradhat. Töltse ki az átirányítási mező tetszőleges címét.

Ön után Nyomja meg az alkalmazás létrehozása gombot , a következő képernyő jelenik meg az alkalmazások listájával. Az alkalmazás neve alatti számjegyek az ügyfél -azonosítót jelölik, az ügyfél titka pedig alatta található. Másolja ezeket az értékeket a credentials.py fájlba.

Az Instagram -hozzáférés beállítása

Az Instagram -hozzáférés eltér a Twittertől és a Reddit -től. Az alkalmazás regisztrálása helyett felhasználónevét és jelszavát használja. Javaslom, hogy hozzon létre egy külön nyilvános fiókot, és használja ezeket a részleteket a botjához.

A Reddit elérése a Praw segítségével

A praw használata kétlépéses folyamat. Először is, a hozzáférés beállítása egyetlen funkcióhívás a Reddit praw módszerhez. Ezután az inicializált objektum használatával az alreddit keresése az új () metódussal történik.

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)

Változtasd meg a

sub_name

változó, hogy bejegyzéseket kapjon a különböző alredditekből. Ahelyett

new()

, más módszerek, mint pl

hot()

áll rendelkezésre a bejegyzések beszerzéséhez.

Instagram hashtagek keresése az InstagramAPI -n keresztül

Az Instagram API használatának első lépése az ügyfél -azonosítóval és titokkal rendelkező objektum beállítása. Közvetlenül ezután hívja a login () metódust a beállítás befejezéséhez.

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

Az API használata kicsit bonyolultabb, mint a Reddit társa. Ebben a példában a szkript a getHashtagFeed segítségével nagyon nagy JSON válaszobjektumot kap az Instagram -tól.

A válaszban keresve a szkript feliratszöveget keres, majd kinyomtatja a képernyőre annak megtekintéséhez.

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)

Képek hozzáadása a közösségi médiához

Előrehaladva érdemes lehet, hogy a szkriptje megkapja a képeket ebben a hashtag feedben. Ehhez lapozzon végig a JSON válaszon, és keresse meg az egyes bejegyzésekhez társított médiát. Íme egy megvalósítás az információk kinyeréséhez a JSON válaszból:

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

Ebben a funkcióban két segítő funkciót használnak. Az Instagram a JSON válaszában elküldi a kép „jelöltjeinek” listáját. Válassza ki a képek közül a legnagyobbat, hogy a média a legnagyobb felbontásban jelenjen meg.

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

Másodszor, miután megtalálta a képre mutató linket, a képet helyben mentheti úgy, hogy a tartalmat fájlba írja. Használni a

requests

A könyvtár ezt egyértelművé teszi.

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

Média tweetelése Tweepy -vel

Először be kell állítania a Twitter -hozzáférést titkai és kulcsaival.

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)

Egy általános retweet bot létrehozása mindössze néhány sorban történik.

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

Ezzel a könyvtárral sok más dolgot is meg lehet tenni. A bemutató befejezéséhez használhatja a

get_images_from_hashtag

funkció a korábban készített Instagram botból a képek és feliratok tweeteléséhez.

Ezenkívül Twitter -botja a Redditben kereshet új bejegyzéseket, és tweetelheti is azokat. Mindkét funkció összekapcsolása így néz ki:

# 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

Python-alapú közösségi média botja készen áll!

Tehát most van egy csomó kódja, amely lehúzza a médiát az egyik webhelyről, és közzéteszi a másikat. Keverheted és párosíthatod is. Húzza a tweeteket, és tegye közzé a Redditben. Gyűjtsön Instagram -képeket a subreddits -be való közzétételhez. Készíts egy botot, és légy részese az igazi internetnek.

Végül, hogy teljesen automatizálhassa ezt a folyamatot, szeretné, ha robotjai ciklusban fussanak a szerveren. Ez lehet a saját számítógépén egy időütemezővel. Vagy porolja le a régi Raspberry Pi -t, amely a szekrényében volt, és nézze meg ezeket az édes Twitter -bot projekteket a Pi -hez.

Részvény Részvény Csipog Email Ezért adott ki figyelmeztetést az FBI a Hive Ransomware -re

Az FBI figyelmeztetést adott ki egy különösen csúnya ransomware -törzs miatt. Ezért kell különösen óvatosnak lennie a Hive ransomware -el szemben.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Piton
  • Social Media Bots
  • Kódolási oktatóanyagok
A szerzőről Tom Johnsen(3 cikk megjelent)

Tom egy szoftvermérnök Floridából (kiáltás Floridai embernek), aki rajong az írásért, a főiskolai futballért (go Gators!), A CrossFitért és az oxfordi vesszőkért.

Továbbiak Tom Johnsentől

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide