From 3884d0aca708373e1231e8faa99701e70263f750 Mon Sep 17 00:00:00 2001 From: Florian Kellermann Date: Sun, 8 May 2022 10:37:52 +0200 Subject: [PATCH] Price converting, working with all isins now and new requirement --- telegram_bot/requirements.txt | 3 +- telegram_bot/shares/share_fetcher.py | 85 ++++++++++++++++++++++------ 2 files changed, 71 insertions(+), 17 deletions(-) diff --git a/telegram_bot/requirements.txt b/telegram_bot/requirements.txt index aec97ff..daddc54 100644 --- a/telegram_bot/requirements.txt +++ b/telegram_bot/requirements.txt @@ -7,4 +7,5 @@ APScheduler~=3.9.1 croniter~=1.3.4 tzlocal==2.1 investpy~=1.0.8 -pandas~=1.4.1 \ No newline at end of file +pandas~=1.4.1 +currencyconverter~=0.16.12 \ No newline at end of file diff --git a/telegram_bot/shares/share_fetcher.py b/telegram_bot/shares/share_fetcher.py index a4ce4c4..b424443 100644 --- a/telegram_bot/shares/share_fetcher.py +++ b/telegram_bot/shares/share_fetcher.py @@ -8,6 +8,7 @@ __license__ = "None" 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 @@ -17,19 +18,43 @@ def get_share_price(str_search_for): Returns: none """ - - search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1, countries=['germany', 'united states']) + try: + search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], n_results=1, countries=['germany']) - currency = str(search_result.retrieve_currency()) + currency = str(search_result.retrieve_currency()) + + recent_data = pandas.DataFrame(search_result.retrieve_recent_data()) + + stock_price = recent_data.iloc[-1]["Close"] + + stock_price = round(float(stock_price), 2) + + str_return =str(stock_price) + " " + str(currency) - recent_data = pandas.DataFrame(search_result.retrieve_recent_data()) + return str_return - stock_price = recent_data.iloc[-1]["Close"] - - str_return =str(stock_price) + " " + str(currency) - - return str_return + except RuntimeError: + try: + 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) + " 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 @@ -39,21 +64,49 @@ def get_share_price_no_currency(str_search_for): 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 - search_result = investpy.search_quotes(text=str_search_for, products=['stocks'], - countries=['germany', 'united states'], n_results=1) + 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()) + 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) - stock_price = recent_data.iloc[-1]["Close"] - - return 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', 'united states'], n_results=1) + 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 + +if __name__ == "__main__": + print(get_share_price("US2515661054")) + print(get_share_price("DE0005557508")) + print(get_share_price_no_currency("US2515661054")) + print(get_share_price_no_currency("DE0005557508")) \ No newline at end of file