From 8ffd0690aaf37db3322c84ab995f93728fb3bc8b Mon Sep 17 00:00:00 2001 From: giocaizzi Date: Fri, 21 Jan 2022 23:21:44 +0100 Subject: [PATCH 1/4] download prices also in EUR and other supported fiat --- cryptocmd/core.py | 5 ++++- cryptocmd/utils.py | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cryptocmd/core.py b/cryptocmd/core.py index a254c76..d84e76b 100644 --- a/cryptocmd/core.py +++ b/cryptocmd/core.py @@ -31,6 +31,7 @@ def __init__( end_date=None, all_time=False, order_ascending=False, + fiat="USD" ): """ :param coin_code: coin code of cryptocurrency e.g. btc @@ -38,6 +39,7 @@ def __init__( :param end_date: date to which scrape the data (in the format of dd-mm-yyyy) :param all_time: 'True' if need data of all time for respective cryptocurrency :param order_ascending: data ordered by 'Date' in ascending order (i.e. oldest first). + :param fiat: fiat code eg. USD, EUR """ @@ -46,6 +48,7 @@ def __init__( self.end_date = end_date self.all_time = bool(all_time) self.order_ascending = order_ascending + self.fiat=fiat self.headers = ["Date", "Open", "High", "Low", "Close", "Volume", "Market Cap"] self.rows = [] @@ -80,7 +83,7 @@ def _download_data(self, **kwargs): if self.all_time: self.start_date, self.end_date = None, None - coin_data = download_coin_data(self.coin_code, self.start_date, self.end_date) + coin_data = download_coin_data(self.coin_code, self.start_date, self.end_date,self.fiat) for _row in coin_data["data"]["quotes"]: diff --git a/cryptocmd/utils.py b/cryptocmd/utils.py index 4e56ad4..568b021 100644 --- a/cryptocmd/utils.py +++ b/cryptocmd/utils.py @@ -57,13 +57,14 @@ def get_coin_id(coin_code): print("Error message:", e) -def download_coin_data(coin_code, start_date, end_date): +def download_coin_data(coin_code, start_date, end_date,fiat): """ Download HTML price history for the specified cryptocurrency and time range from CoinMarketCap. :param coin_code: coin code of a cryptocurrency e.g. btc :param start_date: date since when to scrape data (in the format of dd-mm-yyyy) :param end_date: date to which scrape the data (in the format of dd-mm-yyyy) + :param fiat: fiat code eg. USD, EUR :return: returns html of the webpage having historical data of cryptocurrency for certain duration """ @@ -93,8 +94,8 @@ def download_coin_data(coin_code, start_date, end_date): .timestamp() ) - api_url = "https://web-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical?convert=USD&slug={}&time_end={}&time_start={}".format( - coin_id, end_date_timestamp, start_date_timestamp + api_url = "https://web-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical?convert={}&slug={}&time_end={}&time_start={}".format( + fiat,coin_id, end_date_timestamp, start_date_timestamp ) try: From 48783203cb061444519f90240aa1c2f3f2a3a6f7 Mon Sep 17 00:00:00 2001 From: giocaizzi Date: Fri, 28 Jan 2022 20:43:25 +0100 Subject: [PATCH 2/4] fiat in filename --- cryptocmd/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cryptocmd/core.py b/cryptocmd/core.py index d84e76b..12dea6c 100644 --- a/cryptocmd/core.py +++ b/cryptocmd/core.py @@ -189,8 +189,8 @@ def export_csv(self, csv_name=None, csv_path=None, **kwargs): if csv_name is None: # Make name fo file in format of {coin_code}_{start_date}_{end_date}.csv - csv_name = "{0}_{1}_{2}.csv".format( - self.coin_code, self.start_date, self.end_date + csv_name = "{0}_{1}_{2}_{3}.csv".format( + self.coin_code, self.fiat,self.start_date, self.end_date ) if not csv_name.endswith(".csv"): From 2c78f31b19b52ef8f9f4a693d3a662d175c64d92 Mon Sep 17 00:00:00 2001 From: giocaizzi Date: Fri, 28 Jan 2022 20:45:05 +0100 Subject: [PATCH 3/4] comment --- cryptocmd/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cryptocmd/core.py b/cryptocmd/core.py index 12dea6c..40a827f 100644 --- a/cryptocmd/core.py +++ b/cryptocmd/core.py @@ -188,7 +188,7 @@ def export_csv(self, csv_name=None, csv_path=None, **kwargs): csv_path = os.getcwd() if csv_name is None: - # Make name fo file in format of {coin_code}_{start_date}_{end_date}.csv + # Make name fo file in format of {coin_code}_{fiat}_{start_date}_{end_date}.csv csv_name = "{0}_{1}_{2}_{3}.csv".format( self.coin_code, self.fiat,self.start_date, self.end_date ) From facdddd60a41c5571a23c4902e81afc4f55fe871 Mon Sep 17 00:00:00 2001 From: giocaizzi Date: Sun, 30 Jan 2022 14:05:45 +0100 Subject: [PATCH 4/4] name in export method, comment and lint --- cryptocmd/core.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cryptocmd/core.py b/cryptocmd/core.py index 40a827f..421cd78 100644 --- a/cryptocmd/core.py +++ b/cryptocmd/core.py @@ -31,7 +31,7 @@ def __init__( end_date=None, all_time=False, order_ascending=False, - fiat="USD" + fiat="USD", ): """ :param coin_code: coin code of cryptocurrency e.g. btc @@ -48,7 +48,7 @@ def __init__( self.end_date = end_date self.all_time = bool(all_time) self.order_ascending = order_ascending - self.fiat=fiat + self.fiat = fiat self.headers = ["Date", "Open", "High", "Low", "Close", "Volume", "Market Cap"] self.rows = [] @@ -83,7 +83,9 @@ def _download_data(self, **kwargs): if self.all_time: self.start_date, self.end_date = None, None - coin_data = download_coin_data(self.coin_code, self.start_date, self.end_date,self.fiat) + coin_data = download_coin_data( + self.coin_code, self.start_date, self.end_date, self.fiat + ) for _row in coin_data["data"]["quotes"]: @@ -190,7 +192,7 @@ def export_csv(self, csv_name=None, csv_path=None, **kwargs): if csv_name is None: # Make name fo file in format of {coin_code}_{fiat}_{start_date}_{end_date}.csv csv_name = "{0}_{1}_{2}_{3}.csv".format( - self.coin_code, self.fiat,self.start_date, self.end_date + self.coin_code, self.fiat, self.start_date, self.end_date ) if not csv_name.endswith(".csv"): @@ -227,8 +229,10 @@ def export(self, format, name=None, path=None, **kwargs): path = os.getcwd() if name is None: - # Make name of file in format: {coin_code}_{start_date}_{end_date}.csv - name = "{0}_{1}_{2}".format(self.coin_code, self.start_date, self.end_date) + # Make name of file in format: {coin_code}_{fiat}_{start_date}_{end_date}.csv + name = "{0}_{1}-{2}_{3}".format( + self.coin_code, self.fiat, self.start_date, self.end_date + ) if not name.endswith(".{}".format(format)): name += ".{}".format(format)