Како изградити Твиттер, Инстаграм и Реддит ботове помоћу Питхона

Како изградити Твиттер, Инстаграм и Реддит ботове помоћу Питхона

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

Ваш бот за друштвене медије на Питхон-у је спреман!

Дакле, сада имате гомилу кода који извлачи медије са једне локације и поставља на другу. Такође можете мешати и слагати. Повуците твитове и објавите их на Реддиту. Прикупите Инстаграм слике за објављивање у подредима. Направите робота и будите део правог интернета.

На крају, да бисте потпуно аутоматизовали овај процес, желећете да се ваши роботи изводе у петљи на серверу. Ово може бити на вашем рачунару са распоредом времена. Или уклоните прашину са старог Распберри Пи -а који је био у вашем ормару и погледајте ове слатке Твиттер бот пројекте за Пи.

Објави Објави Твеет Емаил Ево зашто је ФБИ издао упозорење за откупни софтвер у кошницама

ФБИ је издао упозорење о посебно гадној врсти рансомвареа. Ево зашто морате бити посебно опрезни у вези са Хиве рансомваре -ом.

Прочитајте следеће
Повезане теме
  • Програмирање
  • Питхон
  • Ботови друштвених медија
  • Кодирање Туториали
О аутору Том Јохнсен(3 објављена чланка)

Том је софтверски инжењер са Флориде (узвик за Флорида Ман-а) са страшћу за писањем, факултетским фудбалом (го Гаторс!), ЦроссФитом и оксфордским зарезима.

Више од Тома Јохнсена

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили