Module telegram_bot.shares.share_fetcher

script for share fetching (by symbols (e.g. AAPL, TSLA etc.))

Expand source code
"""
script for share fetching (by symbols (e.g. AAPL, TSLA etc.))
"""
__author__ = "Florian Kellermann, Linus Eickhoff"
__date__ = "10.05.2022"
__version__ = "1.0.1"
__license__ = "None"

import telegram_bot.helper_functions as hf
import investpy
import pandas
from currency_converter import CurrencyConverter


def get_share_price(str_search_for):
    """get stock price per share for company name or isin or symbol

    Args:
        str_search_for (string): search for this string/isin

    Returns: none
    """
    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1, countries=['germany'])

        currency = str(search_result.retrieve_currency()) # retrieve currency from data
        # should always be Euro because of countries=['germany']
        
        recent_data = pandas.DataFrame(search_result.retrieve_recent_data()) # stock prices of last few days
        
        stock_price = recent_data.iloc[-1]["Close"] # retrieve latest stock price
        
        stock_price = round(float(stock_price), 2)
        
        str_return =str(stock_price) + " " + str(currency) # return + currency 
    
        return str_return
    
    except RuntimeError: # if no shares are found for germany (e.g. isin: US.....)
        try:
            my_Converter = CurrencyConverter() # need a currency converter
            
            search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1)

            currency = str(search_result.retrieve_currency())

            recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

            stock_price = recent_data.iloc[-1]["Close"]
            
            #convert stock price from currency to EUR
            stock_price = my_Converter.convert(float(stock_price), str(currency), 'EUR') 
            
            stock_price = round(float(stock_price), 2)

            str_return = str(stock_price) + " EUR"

            return str_return

        except RuntimeError:
            return "None"


def get_share_price_no_currency(str_search_for):
    """get stock price per share for company name or isin or symbol no currency
    Args:
        str_search_for (string): search for this string/isin
    Returns: none
    """
    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                               countries=['germany'], n_results=1)

        recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

        stock_price = recent_data.iloc[-1]["Close"]

        stock_price = round(float(stock_price), 2)

        return stock_price

    except RuntimeError:
        my_Converter = CurrencyConverter()

        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1)

        currency = str(search_result.retrieve_currency())

        recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

        stock_price = recent_data.iloc[-1]["Close"]

        stock_price = my_Converter.convert(float(stock_price), str(currency), 'EUR')

        stock_price = round(float(stock_price), 2)

        str_return = str(stock_price)

        return str_return


def get_share_information(str_search_for):
    search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                           countries=['germany'], n_results=1)

    str_return = "Company: " + search_result.name + "\nSymbol: " + search_result.symbol + "\nCurrent Price/Share: " + get_share_price(str_search_for)

    return str_return


def get_share_information_markdown(str_search_for):

    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                                countries=['germany'], n_results=1)
    
    except RuntimeError as e:
        return hf.make_markdown_proof(f"no shares found for \"{str_search_for}\"") # if no shares are found, make error message markdown proof and return

    except ConnectionError as e:
        return hf.make_markdown_proof(f"connection not possible. Try again later.") # if no connection, make error message markdown proof and return
    
    str_return = f'*{hf.make_markdown_proof(search_result.name)}*\n_{hf.make_markdown_proof(search_result.symbol)}_\nworth: {hf.make_markdown_proof(get_share_price(str_search_for))}'
    return str_return


def get_share_information_simple(str_search_for):
    search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                           countries=['germany'], n_results=1)

    str_return = search_result.name + "\n" + search_result.symbol + "\nworth: " + get_share_price(str_search_for)
    return str_return


if __name__ == "__main__":
    print("None")

Functions

def get_share_information(str_search_for)
Expand source code
def get_share_information(str_search_for):
    search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                           countries=['germany'], n_results=1)

    str_return = "Company: " + search_result.name + "\nSymbol: " + search_result.symbol + "\nCurrent Price/Share: " + get_share_price(str_search_for)

    return str_return
def get_share_information_markdown(str_search_for)
Expand source code
def get_share_information_markdown(str_search_for):

    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                                countries=['germany'], n_results=1)
    
    except RuntimeError as e:
        return hf.make_markdown_proof(f"no shares found for \"{str_search_for}\"") # if no shares are found, make error message markdown proof and return

    except ConnectionError as e:
        return hf.make_markdown_proof(f"connection not possible. Try again later.") # if no connection, make error message markdown proof and return
    
    str_return = f'*{hf.make_markdown_proof(search_result.name)}*\n_{hf.make_markdown_proof(search_result.symbol)}_\nworth: {hf.make_markdown_proof(get_share_price(str_search_for))}'
    return str_return
def get_share_information_simple(str_search_for)
Expand source code
def get_share_information_simple(str_search_for):
    search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                           countries=['germany'], n_results=1)

    str_return = search_result.name + "\n" + search_result.symbol + "\nworth: " + get_share_price(str_search_for)
    return str_return
def get_share_price(str_search_for)

get stock price per share for company name or isin or symbol

Args

str_search_for : string
search for this string/isin

Returns: none

Expand source code
def get_share_price(str_search_for):
    """get stock price per share for company name or isin or symbol

    Args:
        str_search_for (string): search for this string/isin

    Returns: none
    """
    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1, countries=['germany'])

        currency = str(search_result.retrieve_currency()) # retrieve currency from data
        # should always be Euro because of countries=['germany']
        
        recent_data = pandas.DataFrame(search_result.retrieve_recent_data()) # stock prices of last few days
        
        stock_price = recent_data.iloc[-1]["Close"] # retrieve latest stock price
        
        stock_price = round(float(stock_price), 2)
        
        str_return =str(stock_price) + " " + str(currency) # return + currency 
    
        return str_return
    
    except RuntimeError: # if no shares are found for germany (e.g. isin: US.....)
        try:
            my_Converter = CurrencyConverter() # need a currency converter
            
            search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1)

            currency = str(search_result.retrieve_currency())

            recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

            stock_price = recent_data.iloc[-1]["Close"]
            
            #convert stock price from currency to EUR
            stock_price = my_Converter.convert(float(stock_price), str(currency), 'EUR') 
            
            stock_price = round(float(stock_price), 2)

            str_return = str(stock_price) + " EUR"

            return str_return

        except RuntimeError:
            return "None"
def get_share_price_no_currency(str_search_for)

get stock price per share for company name or isin or symbol no currency

Args

str_search_for : string
search for this string/isin

Returns: none

Expand source code
def get_share_price_no_currency(str_search_for):
    """get stock price per share for company name or isin or symbol no currency
    Args:
        str_search_for (string): search for this string/isin
    Returns: none
    """
    try:
        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'],
                                               countries=['germany'], n_results=1)

        recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

        stock_price = recent_data.iloc[-1]["Close"]

        stock_price = round(float(stock_price), 2)

        return stock_price

    except RuntimeError:
        my_Converter = CurrencyConverter()

        search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1)

        currency = str(search_result.retrieve_currency())

        recent_data = pandas.DataFrame(search_result.retrieve_recent_data())

        stock_price = recent_data.iloc[-1]["Close"]

        stock_price = my_Converter.convert(float(stock_price), str(currency), 'EUR')

        stock_price = round(float(stock_price), 2)

        str_return = str(stock_price)

        return str_return