2019. је. Чули сте за ботове. Постоје ботови за ћаскање, роботи за е -пошту, роботи за стругање веба и роботи за друштвене медије. Јесте ли већ направили бот? Изненађујуће је лако. Вероватно их има свуда. Прихватите наше надређене ботове придружујући се њиховом рангу.
У овом чланку ћу вам показати како можете да искористите Питхон за аутоматску интеракцију са вашим Твиттер, Реддит и Инстаграм налозима.
Рад са Питхоном
Овај водич користи Питхон као језик по избору. Предности Питхон-ове једноставности употребе надмашују све недостатке у брзини у поређењу са другим језицима. Питхон можете преузети за скоро сваки ОС. Употреба уредник по вашем избору .
Питхон дистрибуције долазе повезане са услужним програмом који се зове
најбоље ствари за гледање на иоутубе -у
pip
. У време писања овог чланка, преко 168.000 библиотека је доступно за преузимање
pip
. За ботове које ћете данас створити потребна су само три.
Из командне линије можете инсталирати потребне библиотеке помоћу ове три линије.
pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw
Сада ћете моћи да увезете ове библиотеке тамо где је то потребно.
Добијање кључева и тајни апликације
Мудри филозоф је једном рекао: „Тајне, тајне нису забавна. Тајне, тајне некога повређују. ' С поштовањем, роботима су потребне тајне. Следећи корак у подешавању ваших робота је омогућити им приступ АПИ -ју сваке локације. Да бисте то урадили, потребан вам је кључ апликације или тајна.
Док прикупљате кључеве, тајне, жетоне и још много тога (звучи као забавна игра!), Све их ставите у једну датотеку под називом „цредентиалс.пи“. Ова датотека би изгледала отприлике овако:
# 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 = ''
Веома важан предлог за приватност: не повезујте ову датотеку са било којом изворном контролом (нпр. Гит). Не желите да било ко други има ове кључеве и тајне. С разлогом се називају тајнама.
Подешавање приступа Твиттер -у
Погледајте наш водич за постављање Твиттер робота са Ноде.јс -ом који ће вам показати како да креирате своју Твиттер апликацију. Имајте на уму да ће Твиттер -у требати неко време да верификује ваш налог и осигура да не креирате нежељени налог.
Након што следите ове кораке, копирајте потрошачки кључ, корисничку тајну, приступни токен и тајну приступног токена у датотеку цредентиалс.пи.
Подешавање Реддит приступа
Добијање вашег Реддит ИД -а клијента и тајне је врло слично Твиттер -у. Морате да региструјете апликацију као Реддит кориснички агент. Након што ово учините, апсолутно морате ставити 'Реддит кориснички агент' у свој животопис.
Пријавите се на Реддит налог по вашем избору. Идите до страницу са подешавањима апликација и Кликните на Креирај другу апликацију . Дајте корисничком агенту нешто корисно. Изаберите скрипту у сврху ваше апликације. УРЛ адреса абоут може да се остави празна. Попуните било коју адресу за поље за преусмеравање.
После тебе Притисните Креирај апликацију , следећи екран ће вам бити представљен са листом ваших апликација. Цифре под именом ваше апликације представљају ИД клијента, а тајна клијента се налази испод тога. Копирајте ове вредности у датотеку цредентиалс.пи.
Подешавање приступа Инстаграму
Приступ Инстаграму разликује се од Твиттера и Реддита. Уместо да региструјете апликацију, користите своје корисничко име и лозинку. Предлажем да креирате засебан јавни налог и користите те детаље за свог бота.
Приступ Реддиту са Прав -ом
Коришћење козица је процес у два корака. Прво, постављање приступа је позив једне функције Реддит методи рав. Затим се помоћу иницијализованог објекта претраживање подредита врши помоћу методе нев ().
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)
Промијенити
sub_name
варијабла за добијање постова из различитих подредова. Уместо
new()
, друге методе као што су
hot()
су доступни за добијање постова.
Претраживање Инстаграм ознака преко ИнстаграмАПИ
Први корак у коришћењу Инстаграм АПИ -ја је постављање објекта са ИД -ом клијента и тајном. Одмах након тога, позовите логин () метод да бисте довршили постављање.
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()
Коришћење АПИ -ја је мало компликованије од његовог Реддит -а. У овом примеру, скрипта користи гетХасхтагФеед за добијање веома великог ЈСОН објекта одговора од Инстаграма.
Претражујући одговор, скрипта тражи текст натписа, а затим одштампа на екрану да га погледа.
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)
Додајте слике друштвеним медијима
Напредујући, можда ћете желети да ваша скрипта добије слике у овом фиду са хасхтагом. Да бисте то урадили, прођите кроз ЈСОН одговор и пронађите медије повезане са сваком објавом. Ево имплементације за издвајање информација из ЈСОН одговора:
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
У овој функцији се користе две помоћне функције. Инстаграм шаље листу слика „кандидата“ у ЈСОН одговору. Одаберите највећу од ових слика тако да се медији приказују у највећој резолуцији.
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
Друго, када се пронађе веза до слике, слику можете сачувати локално тако што ћете садржај записати у датотеку. Помоћу
requests
библиотека чини ово једноставним.
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
Читање медија помоћу Твеепи -ја
Прво ћете морати да подесите приступ Твиттер -у користећи своје тајне и кључеве.
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)
Стварање генеричког ретвеет бот -а врши се у само неколико редова.
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
Многе друге ствари се могу урадити помоћу ове библиотеке. Да бисте закључили ово упутство, можете користити
get_images_from_hashtag
функцију из Инстаграм бота раније направљену за твитовање слика и натписа.
Осим тога, ваш Твиттер бот може претраживати Реддит за нове постове и твитовати их. Спајање обе ове функције изгледа овако:
# 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
Ваш бот за друштвене медије на Питхон-у је спреман!
Дакле, сада имате гомилу кода који извлачи медије са једне локације и поставља на другу. Такође можете мешати и слагати. Повуците твитове и објавите их на Реддиту. Прикупите Инстаграм слике за објављивање у подредима. Направите робота и будите део правог интернета.
На крају, да бисте потпуно аутоматизовали овај процес, желећете да се ваши роботи изводе у петљи на серверу. Ово може бити на вашем рачунару са распоредом времена. Или уклоните прашину са старог Распберри Пи -а који је био у вашем ормару и погледајте ове слатке Твиттер бот пројекте за Пи.
Објави Објави Твеет Емаил Ево зашто је ФБИ издао упозорење за откупни софтвер у кошницамаФБИ је издао упозорење о посебно гадној врсти рансомвареа. Ево зашто морате бити посебно опрезни у вези са Хиве рансомваре -ом.
Прочитајте следеће Повезане теме- Програмирање
- Питхон
- Ботови друштвених медија
- Кодирање Туториали
Том је софтверски инжењер са Флориде (узвик за Флорида Ман-а) са страшћу за писањем, факултетским фудбалом (го Гаторс!), ЦроссФитом и оксфордским зарезима.
Више од Тома ЈохнсенаПретплатите се на наш билтен
Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили