В этой статье мы увидим, как создать бота с помощью twitter API, чтобы иметь возможность оставить его работающим, мы собираемся использовать небольшой скрипт bash, который выполняет наш код каждые X раз.

Что бот сделает, так это отправит твит с интервалом в 60 секунд, используя 4 случайных хэштега из числа 50 лучших на данный момент.

Прежде всего, это API

API (интерфейс прикладного программирования) — это механизм из 2 компонентов, 2 программ, которые взаимодействуют друг с другом через протоколы.

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

Есть 4 типа, но мы будем использовать (и будем использовать позже) REST API.

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

Что такое Баш?

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

В этом случае это позволит нам запускать наш файл .py каждый раз.

Доступ к API Твиттера

Чтобы использовать его, мы перейдем по следующей ссылке и зарегистрируемся.

https://developer.twitter.com

Как только это будет сделано, мы перейдем в «Проекты и приложение» → обзор и создадим приложение.

При его создании мы получим «железный токен», «ключ 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}

Моя сеть



Некоторые другие статьи, которые могут вас заинтересовать