backend/app/cron_fda_calendar.py
2024-12-26 14:48:24 +01:00

72 lines
1.7 KiB
Python

import ujson
import asyncio
import aiohttp
import os
import sqlite3
from tqdm import tqdm
from dotenv import load_dotenv
import requests
# Load environment variables
load_dotenv()
'''
benzinga_api_key = os.getenv('benzinga_api_key')
url = "https://api.benzinga.com/api/v2.1/calendar/fda"
querystring = {"token":benzinga_api_key}
headers = {"accept": "application/json"}
'''
api_key = os.getenv('UNUSUAL_WHALES_API_KEY')
url = "https://api.unusualwhales.com/api/market/fda-calendar"
headers = {
"Accept": "application/json, text/plain",
"Authorization": api_key
}
async def save_json(data):
with open(f"json/fda-calendar/data.json", 'w') as file:
ujson.dump(data, file)
async def get_data():
con = sqlite3.connect('stocks.db')
cursor = con.cursor()
cursor.execute("PRAGMA journal_mode = wal")
cursor.execute("SELECT DISTINCT symbol FROM stocks")
stock_symbols = [row[0] for row in cursor.fetchall()]
con.close()
try:
response = requests.get(url, headers=headers)
data = response.json()['data']
res_list = []
for item in data:
try:
symbol = item['ticker']
if symbol in stock_symbols:
res_list.append({**item})
except:
pass
return data
except Exception as e:
print(f"Error fetching data: {e}")
return []
async def run():
data = await get_data()
if len(data) > 0:
await save_json(data)
if __name__ == "__main__":
try:
asyncio.run(run())
except Exception as e:
print(f"An error occurred: {e}")