Как да създадете Twitter, Instagram и Reddit ботове с помощта на Python

Как да създадете Twitter, Instagram и Reddit ботове с помощта на Python

2019 е. Чували сте за ботове. Има ботове за чат, имейл ботове, ботове за изстъргване в мрежата и ботове за социални медии. Създадохте ли вече бот? Изненадващо лесно е. Вероятно затова са навсякъде. Прегърнете нашите ботове, като се присъедините към техния ранг.





В тази статия ще ви покажа как можете да използвате Python за автоматично взаимодействие с вашите акаунти в Twitter, Reddit и Instagram.





Работа с Python

Това ръководство използва Python като свой език за избор. Предимствата на лекотата на използване на Python надвишават всички недостатъци на скоростта, които има в сравнение с други езици. Можете да изтеглите Python за почти всяка операционна система. Използвайте редактор по ваш избор .





Дистрибуциите на Python се свързват с помощната програма, наречена

как да намалите jpeg файла
pip

. По време на писането има над 168 000 библиотеки, достъпни за изтегляне с помощта



pip

. За ботовете, които ще създадете днес, са необходими само три.

От командния ред можете да инсталирате необходимите библиотеки, като използвате тези три реда.





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

Сега ще можете да импортирате тези библиотеки, където е необходимо.

Получаване на ключове и тайни на приложението

Един мъдър философ веднъж каза: „Тайните, тайните не са забавни. Тайните, тайните нараняват някого. “ С уважение, ботовете се нуждаят от тайни. Следващата стъпка в настройването на вашите ботове е да им позволите достъп до API на всеки сайт. За да направите това, ще ви е необходим ключ за приложение или тайна.





Докато събирате ключове, тайни, жетони и др. (Звучи като забавна игра!), Поставете ги всички в един файл, наречен „credentials.py“. Този файл би изглеждал така:

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

Много важно предложение за поверителност: не ангажирайте този файл с някакъв източник на контрол (например Git). Не искате никой друг да притежава тези ключове и тайни. Те се наричат ​​тайни по някаква причина.

Настройване на достъпа до Twitter

Разгледайте нашето ръководство за настройка на Twitter бот с Node.js ще ви покаже как да създадете своето Twitter приложение. Имайте предвид, че Twitter ще отнеме известно време, за да потвърди акаунта ви и да се увери, че не създавате акаунт за спам.

След като изпълните тези стъпки, копирайте потребителския ключ, потребителската тайна, маркера за достъп и тайната на маркера за достъп във вашия файл credentials.py.

Настройване на Reddit Access

Получаването на вашия идентификационен номер и тайна на Reddit е много подобно на Twitter. Ще трябва да регистрирате приложение като потребителски агент на Reddit. След като направите това, трябва абсолютно да поставите „Потребителски агент на Reddit“ в автобиографията си.

Впиши се към избрания от вас акаунт в Reddit. Придвижете се до страница с предпочитания за приложения и Щракнете върху създаване на друго приложение . Назовете вашия потребителски агент нещо полезно. Изберете скрипт за целите на вашето приложение. URL адресът около може да бъде оставен празен. Попълнете всеки адрес за полето за пренасочване.

След теб Натиснете създаване на приложение , следният екран ще ви бъде представен със списък на вашите приложения. Цифрите под името на вашето приложение представляват идентификационния номер на клиента и клиентската тайна се намира под него. Копирайте тези стойности във вашия файл credentials.py.

Настройване на достъп до Instagram

Достъпът до Instagram се различава от Twitter и Reddit. Вместо да регистрирате приложение, вие използвате вашето потребителско име и парола. Предлагам да създадете отделен публичен акаунт и да използвате тези подробности за вашия бот.

Достъп до Reddit с Praw

Използването на скариди е процес в две стъпки. Първо, настройването на достъпа е извикване на една функция към метода Reddit на скариди. След това, с помощта на инициализирания обект, търсенето на subreddit се извършва с помощта на метода new ().

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

са на разположение за получаване на публикации.

Търсене в хештегове на Instagram чрез InstagramAPI

Първата стъпка в използването на API на Instagram е настройването на обект с клиентски идентификатор и секрет. Непосредствено след това извикайте метода login (), за да завършите настройката.

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 е малко по -сложно от неговия колега Reddit. В този пример скриптът използва getHashtagFeed, за да получи много голям JSON обект за отговор от Instagram.

Търсейки в отговора, скриптът търси текст с надписи и след това отпечатва на екрана, за да го види.

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)

Добавете изображения към социалните медии

Продължавайки напред, може да искате вашият скрипт да получи изображенията в тази емисия с хаштаг. За да направите това, преминете през JSON отговора и намерете медиите, свързани с всяка публикация. Ето изпълнение за извличане на информацията от JSON отговора:

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

В тази функция се използват две помощни функции. Instagram изпраща списък с „кандидати“ за изображения в отговора на JSON. Изберете най -голямото от тези изображения, така че медията да се показва в най -високата разделителна способност.

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

Туитване на медии с Tweepy

Първо, ще трябва да настроите достъпа до Twitter, като използвате вашите тайни и ключове.

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

функция от бота на Instagram, направена по -рано, за да туитвате изображения и надписи.

Освен това вашият Twitter бот може да търси в Reddit нови публикации и да чурулика и тези. Сглобяването на двете функционалности изглежда така:

# 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 е готов!

И така, сега имате куп код, който изтегля медии от един сайт и публикации на друг. Можете също да смесвате и съчетавате. Издърпайте туитове и публикувайте в Reddit. Събирайте изображения на Instagram за публикуване в подредакции. Направете бот и станете част от истинския интернет.

И накрая, за да автоматизирате напълно този процес, ще искате вашите ботове да работят в цикъл на сървър. Това може да е на вашия собствен компютър с график за време. Или избършете праха от стария Raspberry Pi, който е бил в гардероба ви, и разгледайте тези сладки Twitter проекти за ботове за Pi.

Дял Дял Туит електронна поща Ето защо ФБР е издало предупреждение за кошери Ransomware

ФБР издаде предупреждение за особено гаден вид рансъмуер. Ето защо трябва да сте особено предпазливи към рансъмуера на Hive.

Прочетете Напред
Свързани теми
  • Програмиране
  • Python
  • Ботове за социални медии
  • Уроци по кодиране
За автора Том Джонсен(3 статии са публикувани)

Том е софтуерен инженер от Флорида (извикайте към Florida Man) със страст към писането, колежански футбол (go Gators!), CrossFit и запетаите в Оксфорд.

Още от Том Джонсен

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате