Как создать Twitter-бота для публикации последних обновлений акций с помощью Python

Опубликовано: 21 Февраля, 2023

Фондовый рынок нестабилен и быстро меняется, поэтому мы собираемся создать простого бота в Твиттере, чтобы публиковать последние обновления акций с помощью Python, который публикует твит об акциях, которые выбрали пользователи. Во-первых, давайте разберемся с предпосылками нашего проекта:

  • Nsepython : это библиотека Python для получения общедоступных данных о текущих сайтах NSEIndia и NIFTY Indices путем взаимодействия с их REST API.
  • Tweepy : это пакет Python с открытым исходным кодом, из которого вы можете легко получить доступ к Twitter API.
  • Python-dotenv : считывает пары ключ-значение из файла .env и может устанавливать их как переменные среды.

Требуемые модули

pip install nsepython
pip install tweepy
pip install python-dotenv

Создание учетной записи разработчика Twitter

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

Шаг 1. Перейдите на портал разработчиков Twitter https://developer.twitter.com/en.

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

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

Шаг 4: Примите соглашение о разработке.

Создание и настройка проекта

Шаг 1: Выберите имя проекта.

Шаг 2: Сохраните все ключи для последующего использования в нашем коде.

Шаг 3: Измените разрешения проекта.

Шаг 4. Измените разрешение приложения с «Чтение» на «Чтение и запись».

Шаг 5: Выберите тип приложения как Бот и введите URL-адрес обратного вызова по своему усмотрению.

Шаг 6: Сохраните ключи клиента.

Структура файла

Project_name
    .env
    tweet.py
    main.py

Реализация кода для создания бота Twitter для публикации последних обновлений акций

Создайте папку проекта. В этой папке создайте имя файла .env и сохраните в нем все ключи в соответствии со следующим форматом.

API_KEY = “<YOUR_API_KEY>”
API_SECRET = “<YOUR_API_SECRET_KEY>”
BEARER_TOKEN = “<YOUR_BEARER_TOKEN>”

CLIENT_KEY = “<YOUR_CLIENT_KEY>”
CLIENT_SECRET = “<YOUR_CLIENT_SECRET>”

ACCESS_TOKEN = “<YOUR_ACCESS_TOKEN>”
ACCESS_TOKEN_SECRET = “<YOUR_ACCESS_TOKEN_SECRET>”

Шаг 1: Создайте новый файл в той же папке с именем tweet.py и импортируйте все библиотеки.

Python3




import tweepy 
from dotenv import load_dotenv
import os

Шаг 2: load_dotenv() импортирует файл .env из папки. После этого сохраните ключи в соответствующих переменных.

Python3




load_dotenv()
  
api_key = os.getenv("API_KEY")
api_secret = os.getenv("API_SECRET")
access_token = os.getenv("ACCESS_TOKEN")
access_token_secret = os.getenv("ACCESS_TOKEN_SECRET")
bearer_token = os.getenv("BEARER_TOKEN")

Шаг 3: Создайте клиент, который будет отвечать за отправку запросов и получение ответов от Twitter API. Tweepy содержит функцию Client, которая принимает ключи в качестве параметров.

Python3




client = tweepy.Client(bearer_token, 
                       api_key,api_secret,
                       access_token, 
                       access_token_secret)

Шаг 4: Теперь, когда мы написали код для публикации твита, мы напишем код для получения информации об акциях и автоматизации процесса публикации твита.

Эта функция твита принимает параметры, содержащие биржевую информацию, из нашей основной программы (main.py: мы создадим позже) и публикует твит с помощью функции create_tweet().

Python3




import tweepy 
from dotenv import load_dotenv
import os
  
load_dotenv()
  
api_key = os.getenv("API_KEY")
api_secret = os.getenv("API_SECRET")
access_token = os.getenv("ACCESS_TOKEN")
access_token_secret = os.getenv
                ("ACCESS_TOKEN_SECRET")
bearer_token = os.getenv("BEARER_TOKEN")
  
client = tweepy.Client(bearer_token, api_key,api_secret, access_token, access_token_secret)
  
def tweet(params):
    tweetVal = ""
    for stock in params:
        tweetVal += stock + " "
          
    client.create_tweet(text=tweetVal, user_auth=True)
    print("tweet Successful!")

Шаг 5: Создайте файл с именем main.py в папке <project_name> и импортируйте следующие библиотеки. Здесь модуль времени используется для остановки программы после каждого твита, а твит — это файл Python (tweet.py), который мы создали выше, где мы написали код для публикации твитов.

Python3




from nsetools import Nse
import time
import tweet

Шаг 6: Сначала в функции запуска мы создали объект для nse , который будет отправлять запрос в nse API и принимать от него ответ. Далее мы создадим список Python для названия акций, откуда нам нужна информация.

Примечание. Мы использовали биржевой код компании. Вы можете получить биржевой код, используя строку комментариев под кодом. Смотрите здесь для получения дополнительной информации. Вы также можете добавить больше акций в соответствии с требованиями.

def run():
    nse = Nse()
    stockList = ["INFY", "HCLTECH", "WIPRO"]
    # get all stock codes
    # all_stock_codes = nse.get_stock_codes() 
    i=0
    size = len(stockList)

Шаг 7: Затем мы инициализировали переменную i , которая будет нашим итератором, а затем мы взяли размер нашего списка акций. В Python цикл while мы брали каждую акцию из нашего списка акций в соответствии с индексом и значением переменной итератора. Операция по модулю между размером и i помогает циклически перемещаться по списку.

Затем функция get_quote() принимает значение акции и возвращает информацию о конкретной акции и возвращает несколько значений, но нам нужны только конкретные значения, которые хранятся в списке с именем keyValues . Параметры, которые мы получили в качестве ответа, будут словарем, поэтому мы пройдемся по нему и сохраним необходимые значения в списке, называемом значениями, в соответствии с нашими значениями ключа.
Наконец, функция твита из файла твита, который мы импортировали вместе со значениями, обновляет переменную итератора и останавливает программу на 20 секунд, вы также можете изменить это значение.

Python3




def run():
    nse = Nse()
    stockList = ["INFY", "HCLTECH", "WIPRO"]
    # get all stock codes
    # all_stock_codes = nse.get_stock_codes() 
    i=0
    size = len(stockList)
        
    while(1):
        stock = stockList[i%size]
        params = nse.get_quote(stock)
        keyValues = ["companyName", "dayHigh", "basePrice",
                     "dayLow", "buyPrice1", "lastPrice"]
          
        values = []
        for key,value in params.items():
            if key in keyValues:
                values.append(key + ":" + str(value))
          
        tweet.tweet(values)
          
        i = i+1
        time.sleep(20)

Шаг 8: После запуска программы ваш бот должен быть запущен.

Python3




from nsetools import Nse
import time
import tweet
  
def run():
    nse = Nse()
    stockList = ["INFY", "HCLTECH", "WIPRO"]
    # get all stock codes
    # all_stock_codes = nse.get_stock_codes()
    i=0
    size = len(stockList)
        
    while(1):
        stock = stockList[i%size]
        params = nse.get_quote(stock)
        keyValues = ["companyName", "dayHigh"
                     "basePrice", "dayLow", "buyPrice1",
                     "lastPrice"]
          
        values = []
        for key,value in params.items():
            if key in keyValues:
                values.append(key + ":" + str(value))
          
        tweet.tweet(values)
          
        i = i+1
        time.sleep(20)
  
if __name__ == "__main__":
    run()

Выход: