Spaces:
Running
Running
| import json | |
| import os | |
| def get_data_in_range(ticker, start_date, end_date, data_type, data_dir, period=None): | |
| """ | |
| Gets finnhub data saved and processed on disk. | |
| Args: | |
| start_date (str): Start date in YYYY-MM-DD format. | |
| end_date (str): End date in YYYY-MM-DD format. | |
| data_type (str): Type of data from finnhub to fetch. Can be insider_trans, SEC_filings, news_data, insider_senti, or fin_as_reported. | |
| data_dir (str): Directory where the data is saved. | |
| period (str): Default to none, if there is a period specified, should be annual or quarterly. | |
| """ | |
| if period: | |
| data_path = os.path.join( | |
| data_dir, | |
| "finnhub_data", | |
| data_type, | |
| f"{ticker}_{period}_data_formatted.json", | |
| ) | |
| else: | |
| data_path = os.path.join( | |
| data_dir, "finnhub_data", data_type, f"{ticker}_data_formatted.json" | |
| ) | |
| data = open(data_path, "r") | |
| data = json.load(data) | |
| # filter keys (date, str in format YYYY-MM-DD) by the date range (str, str in format YYYY-MM-DD) | |
| filtered_data = {} | |
| for key, value in data.items(): | |
| if start_date <= key <= end_date and len(value) > 0: | |
| filtered_data[key] = value | |
| return filtered_data | |