В этой статье мы увидим, как создать бота с помощью twitter API, чтобы иметь возможность оставить его работающим, мы собираемся использовать небольшой скрипт bash, который выполняет наш код каждые X раз.
Что бот сделает, так это отправит твит с интервалом в 60 секунд, используя 4 случайных хэштега из числа 50 лучших на данный момент.
Прежде всего, это API
API (интерфейс прикладного программирования) — это механизм из 2 компонентов, 2 программ, которые взаимодействуют друг с другом через протоколы.
В основном приложение, которое называется клиентом, отправляет запрос, а другое, называемое сервером, отправляет ответ. API действует как переводчик, позволяя обоим приложениям взаимодействовать друг с другом, даже если они разработаны на разных языках.
Есть 4 типа, но мы будем использовать (и будем использовать позже) REST API.
Простым примером может быть внешний интерфейс, созданный с помощью React, который хочет получить доступ к данным из календаря Google пользователя, через API календаря Google мы можем связываться с обеими службами друг с другом, несмотря на то, что они разработаны на разных языках.
Что такое Баш?
Об этом будет эксклюзивная статья, но чтобы не оставлять это в воздухе, можно сказать, что bash — это интерпретатор команд, который позволяет нам выполнять их прямо из консоли.
В этом случае это позволит нам запускать наш файл .py каждый раз.
Доступ к API Твиттера
Чтобы использовать его, мы перейдем по следующей ссылке и зарегистрируемся.
Как только это будет сделано, мы перейдем в «Проекты и приложение» → обзор и создадим приложение.
При его создании мы получим «железный токен», «ключ API» и «секретный ключ API», эти 3 данных мы должны сохранить для последующего использования в нашем коде.
Наконец, мы идем в «Ключи и токены», чтобы сгенерировать «токен доступа и секрет», что дает нам 2 тех 2 ключа, которые мы также должны записать.
Создание бота
Для этого проекта мы будем использовать 3 библиотеки: pipenv, random и tweepy.
Мы создаем папку, в которой мы будем работать, и мы собираемся создать 2 файла: «exe.sh» (наш код BASH) и main.py.
В терминале мы позиционируем себя в папке, в которой мы работаем, и мы собираемся выполнить следующую команду
pipenv shell
#This command will create a virtual environment for the library that we are going to
#use for the Twitter API not to be installed on the whole pc but only
#in this virtual environment
pipenv install tweepy
#With this we install tweepy only in the virtual environment
В наш main.py мы собираемся импортировать библиотеки и добавить 5 переменных, которые будут содержать ключи, которые мы сохранили ранее.
import tweepy
import random
#Twitter Data
bearer_token = "bearer_token"
consumer_key = "consumer_key"
consumer_secret = "consumer_secret"
access_token = "access_token"
access_token_secret = "access_token_secret"
Теперь мы сделаем функцию, которая обращается к API за текущими тенденциями и сохраняет их в списке.
def trends(woeid):
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
trends = api.get_place_trends(id = woeid, exclude="hashtag")
trendings = []
for value in trends:
for trend in value['trends']:
trendings.append(trend['name'])
trendings = random.sample(trendings, 4)
print(trendings)
return trendings
Параметр woeid, который мы передаем, определяет место, откуда мы хотим вывести тренды, в данном случае это может быть Аргентина и США.
По этой ссылке вы можете найти тот, который подходит для вашей страны.
Первое, что мы делаем, это аутентифицируем себя с помощью API, используя ключи, которые мы генерируем в начале, и создаем их экземпляры.
Функция, которая возвращает тенденции, называется «get_placed_trends», которой, кроме woeid, мы передаем параметр exclude, чтобы удалить «#» и, таким образом, иметь возможность добавить его позже, это служит для обеспечения отсутствия двойных «##». ».
Чтобы сохранить тенденции, мы используем цикл for через «тренды» и «имя» и, наконец, с помощью «random.sample» мы получаем 4 случайных значения из исходного списка.
Теперь да, мы будем твитить все, что захотим, и автоматически добавлять эти тренды.
def tweet_video():
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
#US
trendings = trends(23424977)
body = f'Test Tweet EEUU #{trendings[0]} #{trendings[1]} #{trendings[2]} #{trendings[3]}'
api.update_status(body)
print(f'Us tweet: {body}')
#Ar
trendings = trends(23424747)
body = f'Test tweet Argentina #{trendings[0]} #{trendings[1]} #{trendings[2]} #{trendings[3]}'
api.update_status(body)
print(f'AR tweet: {body}')
return ("Successfully tweeted")
В этом случае мы снова аутентифицируемся, но вызываем функцию «update_status», которая загружает контент, который мы ей передаем, в нашем случае «тело», содержащее наш твит и хэштеги.
С этим у нас все готово, нам нужно иметь возможность выполнить это автоматически.
В нашем файле exe.sh напишем следующее.
#!/bin/bash
while true; do
python3 main.py
sleep 60;
done
Что это будет делать, так это запускать файл main.py каждые 60 секунд.
Если мы хотим, чтобы это было быстрее, мы можем уменьшить количество секунд, размещенных после сна, но там у нас может быть насыщение запросов и то, что API блокирует нас на некоторое время.
И готово!
Начиная с того факта, что мы все закрываем и хотим, чтобы это работало еще один день, мы войдем в папку pro terminal, активируем среду и выполним наш «exe.sh».
pipenv shell
./exe.sh
Это оставит терминал запущенным и вернет отпечатки, которые есть в нашем коде, когда мы захотим его остановить, достаточно будет нажать «Ctrl + C»
Если мы хотим, чтобы он работал в фоновом режиме, мы можем поставить «&» в конце.
./exe.sh
И чтобы остановить его, просто введите следующую команду в терминал, чтобы получить идентификатор процесса.
ps -A
И затем, чтобы удалить его
kill {ID del proceso}
Моя сеть
Некоторые другие статьи, которые могут вас заинтересовать