Как создать Twitter, Instagram и Reddit ботов с помощью Python

2 min


Это 2019. Вы слышали о ботах. Есть чат-боты, почтовые боты, веб-боты и социальные сети. Вы уже создали бота? Это на удивление легко. Вероятно, почему они повсюду. Охватите наших повелителей ботов, присоединившись к их званию.

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

Работа с Python

Этот прогон использует Python в качестве языка выбора

6 причин, почему Python – язык программирования будущего



6 причин, почему Python – язык программирования будущего
Хотите узнать или расширить свои навыки программирования? Вот почему Python – лучший язык программирования для изучения в этом году.
Прочитайте больше

, Преимущества Python в простоте использования перевешивают любые недостатки в скорости, по сравнению с другими языками. Вы можете скачать Python практически для любой ОС. Используйте редактор по вашему выбору.

Дистрибутивы Python связаны с утилитой под названием зернышко, На момент написания статьи для скачивания доступно более 168 000 библиотек. зернышко, Для ботов, которых вы создадите сегодня, нужны только три.

Из командной строки вы можете установить необходимые библиотеки, используя эти три строки.

pip install - обновить InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw

Теперь вы сможете импортировать эти библиотеки там, где это необходимо.

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

Один мудрый философ однажды сказал: «Секреты, секреты не веселые. Секреты, секреты вредят кому-то ». С уважением, ботам нужны секреты. Следующим шагом в настройке ваших ботов является предоставление им доступа к API каждого сайта. Для этого вам понадобится ключ приложения или секрет.

Когда вы собираете ключи, секреты, токены и многое другое (звучит как забавная игра!), Поместите их все в один файл с именем «credentials.py». Этот файл будет выглядеть примерно так:

# ключи

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 с Raspberry Pi и Node.js



Как создать фото-твиттер-бота для Twitter с Raspberry Pi и Node.js
Начните с Node.js и создайте бота в Твиттере, который размещает в Твиттере фотографии и информацию, используя всего лишь Raspberry Pi!
Прочитайте больше

, Обратите внимание, что Twitter займет некоторое время, чтобы подтвердить свою учетную запись и убедиться, что вы не создаете учетную запись спама.

После выполнения этих действий скопируйте ключ потребителя, секретный ключ пользователя, токен доступа и секретный ключ доступа в файл credentials.py.

Настройка доступа Reddit

Получение идентификатора и секрета клиента Reddit очень похоже на Twitter. Вам нужно зарегистрировать приложение в качестве агента пользователя Reddit. После этого вы должны обязательно включить «Reddit User Agent» в свое резюме.

войти в систему на счет Reddit по вашему выбору. Перейдите на страницу настроек приложений и Нажмите создать другое приложение, Назовите своего агента пользователя чем-нибудь полезным. Выберите сценарий для целей вашего приложения. URL о может быть оставлен пустым. Введите любой адрес для поля перенаправления.

Reddit App Bot Python

После Вас Нажмите создать приложение, следующий экран будет представлен вам со списком ваших приложений. Цифры под именем вашего приложения представляют идентификатор клиента, а секретный ключ клиента находится под ним. Скопируйте эти значения в ваш файл credentials.py.

Reddit App API Secret Python

Настройка доступа к Instagram

Доступ в Instagram отличается от Twitter и Reddit. Вместо регистрации приложения вы используете свое имя пользователя и пароль. Я предлагаю создать отдельную публичную учетную запись и использовать эти данные для вашего бота.

Доступ к Reddit с Praw

Использование praw – двухэтапный процесс. Во-первых, настройка доступа – это единственный вызов функции для метода pd Reddit. Затем, используя инициализированный объект, поиск subreddit выполняется с использованием метода new ().

импортная свинина
из импорта учетных данных *

my_reddit = praw.Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent)

sub_name = 'технология'
max_posts = 10

для отправки в my_reddit.subreddit (sub_name) .new (limit = max_posts):
печать (submission.title)

Изменить sub_name переменная, чтобы получить сообщения из разных subreddits. Вместо новый ()другие методы, такие как горячей() доступны для получения сообщений.

Поиск в хэштегах Instagram через InstagramAPI

Первым шагом в использовании Instagram API является настройка объекта с идентификатором клиента и секретом. Сразу после этого вызовите метод login () для завершения настройки.

из InstagramAPI импортировать InstagramAPI
импортировать из учетных данных 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:
 для элемента в my_insta_api.LastJson['items']:
 if 'caption' в item.keys () и 'text' в item['caption'].keys ():
 заголовок = элемент['caption']['text']
 
 печать (подпись)

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

В дальнейшем вы можете захотеть, чтобы ваш скрипт получал изображения в этом хэштеге. Для этого просмотрите ответ JSON и найдите медиа, связанные с каждым сообщением. Вот реализация для извлечения информации из ответа JSON:

def get_images_from_hashtag (хэштег, num_images):
изображения = []
	get_hashtag = my_insta_api.getHashtagFeed (hashtag)

if get_hashtag == False:
вернуть изображения

для элемента в my_insta_api.LastJson['items']:
если предмет['media_type'] == 1 и 'image_versions2' в item.keys ():
кандидат = get_largest_image (элемент['image_versions2']['candidates'])
# получить изображение
filename = self.save_image_from_candidate (кандидат['url'])
если имя файла! = '':
# получить статус, сохранить как кортеж
caption = get_caption (элемент)
images.append ((имя файла, подпись))
если len (images)> = num_images:
перерыв
 вернуть изображения

В этой функции используются две вспомогательные функции. Instagram отправляет список «кандидатов» изображения в ответе JSON. Выберите самое большое из этих изображений, чтобы мультимедиа отображалось в самом высоком разрешении.

def get_largest_image (кандидатов):
кандидат = {}
пикселей = 0
для кандидата в кандидаты:
# выбрать самое высокое разрешение
Res = Cand['height']* плавиковый шпат['width']
		если res> пикселей:
пикселей = разрешение
кандидат = кандидат
вернуть кандидата

Во-вторых, как только ссылка на изображение найдена, вы можете сохранить изображение локально, записав содержимое в файл. С использованием Запросы библиотека делает это просто.

def save_image_from_candidate (url):
 filename = ''
 response = запросы.get (URL)
 # проверить код статуса ответа, 200 значит хорошо
 if response.status_code == 200:
 filename = url.split ("/")[-1].Трещина('?')[0]
 	с открытым (имя файла, 'wb') как f:
 f.write (response.content)
 вернуть имя файла

Tweeting Out СМИ с Tweepy

Во-первых, вам нужно настроить доступ к Твиттеру, используя свои секреты и ключи.

импортный твип
из импорта учетных данных *

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)

Создание общего ретвита бот выполняется всего за несколько строк.

для твита в tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). items (10):
пытаться:
tweet.favorite ()
tweet.retweet ()
time.sleep (2)
кроме tweepy.TweepError как e:
печать (e.reason)
кроме стоп-изменения:
перерыв

Многие другие вещи могут быть сделаны с этой библиотекой. Чтобы завершить этот обзор, вы можете использовать get_images_from_hashtag функция от бота Instagram, сделанная ранее, чтобы чирикать изображения и подписи.

Кроме того, ваш бот-Твиттер может искать в Reddit новые сообщения и твитить их. Чтобы объединить обе эти функции, выглядит следующим образом:

# используйте r / для поиска Reddit
# а также # для поиска в Instagram
хэштег = технология
num_posts = 5

# твит
reddit_posts = my_reddit.subreddit (хэштег) .new (limit = num_posts)
для отправки в reddit_posts:
title = submission.title
url = 'www.reddit.com {}'. format (submission.permalink)
tweet_str = f'Reddit r / {sub} update:  n  n {title} # {sub} {url} '
tweet_str = trim_to_280 (tweet_str)
tw_api.update (tweet_str)

# твит инстаграм медиа
media_info = get_images_from_hashtag (хэштег, num_posts)
для (имя файла, сообщение) в media_info:
пытаться:
tweet_str = trim_to_280 (сообщение)
tw_api.update_with_media (имя файла, статус = tweet_str)
кроме tweepy.TweepError как e:
печать (e.reason)
кроме стоп-изменения:
перерыв

Ваш бот для социальных сетей на Python готов!

Итак, теперь у вас есть набор кода, который перетаскивает медиа с одного сайта и публикует на другом. Вы можете смешивать и сочетать тоже. Потяните твиты и отправьте сообщение в Reddit. Собирайте Instagram изображения для публикации в subreddits. Сделайте бот и станьте частью настоящего интернета.

Наконец, чтобы полностью автоматизировать этот процесс, вам нужно, чтобы ваши роботы работали в цикле на сервере. Это может быть на вашем компьютере с планировщиком времени. Или стряхните старую Raspberry Pi, которая была у вас в шкафу, и посмотрите эти милые проекты Twitter-ботов для Pi

10 лучших проектов Twitter Bot для Raspberry Pi



10 лучших проектов Twitter Bot для Raspberry Pi

Прочитайте больше

,

Узнайте больше о: уроках кодирования, Python, социальных сетях.

Что такое скребок? Как собирать данные с сайтов


0 Comments

Добавить комментарий