Пошаговое руководство, которое вы можете выполнить за 15 минут

В этой статье мы шаг за шагом рассмотрим, как перейти от нуля к полноценному твиттер-боту с помощью Python и Tweepy. Tweepy — это распространенная библиотека Python для официального API Twitter. Это сократит количество строк кода, которые вам обычно приходилось бы писать, до одной — на каждый вызов.

Что мы собираемся охватить:

  • Настройте виртуальную машину, с которой мы будем запускать код
  • Получите учетную запись разработки Twitter и учетные данные API
  • Отправить твит
  • Отправить твит с изображением
  • Проверьте ограничения, которые твиттер дает вам в API.
  • Поиск местных тенденций, хэштегов и слов (или в любой области)
  • Читайте твиты из вашей хроники
  • Взаимодействуйте с другими пользователями — следите за пользователями :))

Настроить среду разработки Python

Мы будем работать с виртуального частного сервера (VPS) — Linux-сервера. Вы можете легко получить его в цифровом океане за 5 долларов или около 80 рандов. Используйте эту реферальную ссылку, чтобы получить скидку: Получите Цифровую каплю океана. Когда вы покупаете дроплет, вы получаете возможность выбрать операционную систему вашей виртуальной машины — вам нужно выбрать Ubuntu 20.04, которая будет предварительно установлена ​​с Python3.

Вам понадобится облачный сервер для размещения вашего кода в конце, чтобы он запускался автоматически в указанное время.

Ознакомьтесь с нашим руководством по настройке Digital Ocean Droplet

Пошаговое руководство по настройке виртуального сервера и среды разработки

Начните с обновления пакетов:

sudo apt update
sudo apt -y upgrade

Если вы используете Ubuntu 20.o4 — Python будет предустановлен в системе. Вы должны выбрать Ubuntu 20.04 при покупке дроплета в Digital Ocean. Запуск этого кода выведет установленную версию Python.

python3 -V

Теперь вам нужно установить pip — управление пакетом для Python.

sudo apt install -y python3-pip

Установить инструменты разработки

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

Установить виртуальную среду

sudo apt install -y python3-venv

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

mkdir twitter && cd twitter
python3 -m venv twitterenv

Если это вызывает у вас проблемы, вы можете сделать следующее:

pip3 install virtualenv
virtualenv twitterenv

После установки Virtual Env вы можете запустить следующий код для активации. Вам нужно активировать env из папки, в которой вы его создали, каждый раз, когда вы хотите запустить код Python.

source twitterenv/bin/activate

Теперь вы увидите (twitterenv) в начале приглашения командной строки. Теперь вы можете использовать pip install для установки tweepy и любой другой библиотеки Python, которая вам нужна:

pip install tweepy

Когда вы были вне окружения, вы использовали установку pip3, чтобы поговорить с python 3, но внутри venv вы можете просто сказать pip install — окружение было создано с помощью Python3 и по умолчанию будет использовать pip3.

Создайте два файла для работы: один файл config.py и другой файл tweet.py. Мы напишем весь наш код в файле tweet.py, а ключи и секреты — в файле конфигурации. Теперь структура файла должна выглядеть так:

twitter
|
|_______ twitterenv
|_______ config.py
|_______ tweet.py

Ваша среда разработки завершена и готова к работе.

Получите учетные данные API Twitter для создания бота Python Twitter.

Вам нужна учетная запись разработчика Twitter и приложение для работы, перейдите по URL-адресу: https://dev.twitter.com/apps/new/

Вы можете ввести его прямо в URL-адрес, а затем нажать «Создать новое приложение»:

Затем вы проведете вас через процесс создания приложения, вам нужно будет дать твиттеру полное объяснение: (1) зачем вам нужны учетные данные API и (2) для чего вы будете использовать приложение.

Введите данные и завершите процесс. Вы получите электронное письмо с кнопкой подтверждения, которую нужно нажать, чтобы подтвердить свой адрес электронной почты. Затем вы сможете создать новое приложение, что вам нужно получить от Twitter:

  • Секрет API
  • API-ключ
  • Токен доступа
  • Секрет токена доступа

Python Twitter Bot — отправить твит

Внутри файла config.py:

#Twitter API Credentials
api_key = "twitter-api-key"
api_secret = "twitter-api-secret"
access_token = "app-access-token"
access_token_secret = "app-access-token-secret"

Вы можете отправить твит всего несколькими строками кода, используя python tweepy.

import tweepy
import config
auth = tweepy.OAuthHandler(config.api_key, config.api_secret)
auth.set_access_token(config.access_token, config.access_token_secret)
api = tweepy.API(auth, 
                 wait_on_rate_limit=True, 
                 wait_on_rate_limit_notify=True)
status = "our very first status from python and tweepy :)"
api.update_status(status)

Примечание:

Ваш твит должен содержать менее 160 символов, иначе будет выдана ошибка, поэтому мы собираемся добавить код, чтобы наши твиты содержали требуемые символы.

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

import tweepy
import config
import random 
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
hashtags = ["#hashtag1", "#hashtag2", "#hashtag3", "#hashtag4", "#hashtag5", 
            "#hashtag6", "#hashtag7", "#hashtag8", "#hashtag9", "#hashtag10",
           ]
messages = [
"Sending tweets from tweepy",
"Follow us to get latest job info",
"Any day is inspiration day - Zatosh Nakamoto",
"Never give up, your life starts now",
"Always believe in yourself",
"Life is not short, it is way too log",
"We live in amazing times",
"Remember to sanitise, everyday"
]
def updateStatus():
    msg = random.choice(messages)
    tags = random.sample(hashtags, 2)
    for tag in tags:
        msg += ' '+tag
    if len(msg) < 160:
        api.update_status(msg)
    
updateStatus()

Здесь мы делаем много вещей, но все они будут полезны, поскольку позволят нам автоматизировать этот скрипт. У нас есть несколько строковых параметров, называемых сообщениями. Это будут возможные твиты, которые вы будете отправлять. Затем мы используем библиотеку python random — чтобы выбрать случайное сообщение для отправки. Каждый раз, когда вы запускаете этот код, будет отправлено другое случайное сообщение.

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

У нас есть список хэштегов, где мы выбираем 2 случайных хэштега.

Мы проверяем длину твита перед отправкой, и все готово.

Python Twitter Bot — отправка изображения с текстом

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

image = 'path-where-image-is-saved/image.jpg'
def updateImage(image):
    msg = random.choice(messages)
    if len(msg) < 160:
        api.update_with_media(filename=image, status=msg)
    
updateImage(image)

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

Проверьте ограничения учетной записи для вашего бота Python Twitter

Это очень важный шаг, вам нужно знать пределы того, что вам разрешено делать. Как правило, твиты каждые пару часов не должны вызывать у вас проблем, но как только вы начнете использовать API в его пределах, подписываясь на людей, проверяя тенденции и т. д., вам нужно будет знать об ограничениях.

Для этого вам нужно запустить код:

import config
import tweepy

auth = tweepy.OAuthHandler(config.api_key, config.api_secret)
auth.set_access_token(config.access_token, config.access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
limits = api.rate_limit_status()
print(limits)

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

Последующие функции я не всегда буду показывать как получить API в коде, предположим, что всегда остается одним и тем же.

Перечислите тренды, хэштеги в вашем регионе или в любом другом районе.

Это полезно, если вы хотите знать, какие хэштеги и темы самые популярные в вашем регионе. Twitter делает это доступным на вашей панели инструментов, вы также можете получить к нему доступ с помощью API.

Допустим, мы находимся в Йоханнесбурге и хотели бы знать, какие темы актуальны. Все, что нам нужно, это долгота, широта, чтобы начать. Вы можете легко получить это, набрав в Google ориентиры, такие как Sandton City Mall. Перейти к Картам:

Затем вы можете ввести эти числа в свой код, чтобы перечислить местные тенденции.

lat = -26.1088467
lon = 28.0505311
trends = api.trends_closest(lat,lon)
woeid = trends[0]['woeid']
top_trends = api.trends_place(woeid)
for item in top_trends[0]['trends']:
    print('\n')
    print(item)

Делаем это в два этапа:

  1. Мы используем долготу и широту, чтобы получить горе
  2. Мы используем woeid для получения данных о тенденциях

Для Сэндтона это то, что мы получили:

Вы увидите название тренда, URL-адрес и даже объем поиска. Таким образом, вы можете организовать это, чтобы найти хэштеги для своих твитов.

Читать хронику Твиттера

Если вы просто хотите узнать, что происходит:

public_tweets = api.home_timeline()
print(public_tweets)

Или вы хотите распечатать твиты из чьей-то временной шкалы, например, Кририл Рамафоса.

maphosa_tweets = api.user_timeline('CyrilRamaphosa')
print(maphosa_tweets)

Вам, конечно, нужно знать имя Рамафосы.

Взаимодействуйте с другими

Вы также можете использовать API для подписки, блокировки и т. д. других людей из вашего кода Python.

Получите данные пользователя:

user = api.me()
print(user)

Получить чужую общедоступную информацию:

maphosa = api.friends("CyrilRamaphosa")
print(maphosa)

Получите последователей Рамафосы:

maphosa_followers = api.followers("CyrilRamaphosa")
print(maphosa_followers)

Следуйте за Рамафосой

api.create_friendship("CyrilRamaphosa")

Отписаться от Рамафосы:

api.destroy_friendship("CyrilRamaphosa")

Поиск пользователей:

search-results = search_users(q=["bitcoin"])
print(search_results)

Следующие шаги: Python Twitter Bot

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

В дальнейшем вам понадобятся:

  1. Для запуска ваших функций в цикле или расписании
  2. Разверните на виртуальном сервере [угадайте, что вы уже на виртуальном сервере], просто запустите и вперед

Видеоурок

Читать больше туториалов — https://blog.tati.digital/category/tutorials/

Больше контента на plainenglish.io