Open In App
Related Articles

How to Build a Twitter Bot to Post Latest Stock Update using Python

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

The stock market is volatile and changes rapidly so we are going to create a simple Twitter bot to post the latest stock updates using Python that posts the tweet about the stocks that users have chosen. First, let’s understand the prerequisites of our project:

  • Nsepython: It is a Python library to get publicly available data on the current NSEIndia and NIFTY Indices sites by communicating with their REST APIs.
  • Tweepy: It is an open-source Python package from which you can access Twitter API easily.
  • Python-dotenv: It reads key-value pairs from a .env file and can set them as environment variables.

Required Modules

pip install nsepython
pip install tweepy
pip install python-dotenv

Creating Twitter Developer Account

After getting all the requirements it’s necessary to create a Twitter developer account to access twitter’s API and get our credentials you can use any account for that.

Step 1:  Go to the Twitter Developer Portal https://developer.twitter.com/en 

 

Step 2: Choose an email account and provide information such as country name.

 

Step 3: Choose the use case for making a bot. Click on Let’s do this button.

 

Step 4: Accept the development agreement.

 

Creating and Setting up the Project

Step 1: Choose the Project name.

 

Step 2: Save all the keys for later use in our code.

 

Step 3: Change Project permissions.

 

Step 4: Change the app permission from Read to Read and Write.

 

Step 5: Choose the type of app as Bot and enter the call-back URL as you prefer.

 

Step 6: Save your client keys.

 

File structure

Project_name
    .env
    tweet.py
    main.py

Code Implementation to Build a Twitter Bot to Post Latest Stock Update

Create a project folder, In that folder create a .env file name and save all the keys in it according to the following format.

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>”

Step 1: Create a new file in the same folder named tweet.py and import all the libraries.

Python3

import tweepy 
from dotenv import load_dotenv
import os

                    

Step 2: The load_dotenv() import the .env file from the folder. After that save the keys in the respective variables.

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')

                    

Step 3: Create the client which will be responsible for sending requests and receiving responses from Twitter API. Tweepy contains a function called Client which accepts keys as parameters.

Python3

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

                    

Step 4: Now that we have written the code for posting the tweet we will write the code for getting the stock information and automating the process for posting the tweet.

This tweet function accepts params that contain the stock information from our main program (main.py: We will create later) and posts the tweet using the create_tweet() function.

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 + "\n"
          
    client.create_tweet(text=tweetVal, user_auth=True)
    print("tweet Successful!")

                    

Step 5: Create a file called main.py in <project_name> folder and import the following libraries. Here, the time module is used for stopping the program after each tweet, and the tweet is the Python file(tweet.py) that we created above where we wrote the code for posting tweets.

Python3

from nsetools import Nse
import time
import tweet

                    

Step 6: In the run function first, we created the object for the nse which will send the request to nse API and accept the response from it. Next, we will create the Python list for the stock name from where we want the information. 

Note: We have used the stock code for the company you can get the stock code by using the comment line below the code. See here for more information. You can also add more stocks according to requirements.

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

Step 7: Next, we initialized i variable which will be our iterator, and next, we have taken the size of our stock list. In Python, while loop we have taken each stock from our stock list according to the index and iterator variable value the modulo operation between size and i helps to traverse the list circularly.

Then get_quote() function takes a stock value and returns the information about the specific stock and returns several values but we only need specific values which are stored in a list called keyValues. The params we have gotten as the response will be a dictionary so we will traverse through it and store the required values in the list called values according to our keyValues.
In last, The tweet function from the tweet file we have imported along with the values updates out the iterator variable and stops the program for 20 seconds you can also modify this value.

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)

                    

Step 8: After running the program your bot should be running.

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()

                    

Output:

 



Last Updated : 21 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads