From 5128ccb7aad91108a06b71e5c8d8f96582a8d03f Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Sat, 19 Oct 2024 21:26:22 +0200 Subject: [PATCH] update cron job --- app/cron_business_metrics.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/cron_business_metrics.py b/app/cron_business_metrics.py index a276330..9080d8e 100644 --- a/app/cron_business_metrics.py +++ b/app/cron_business_metrics.py @@ -1,9 +1,37 @@ from edgar import * +import ast # Tell the SEC who you are set_identity("Michael Mccallum mike.mccalum@indigo.com") +symbol = 'AAPL' +filings = Company(symbol).get_filings(form="10-Q").latest(10) +#print(filings[0].xbrl()) -filings = Company("NVDA").get_filings(form="10-Q").latest(3) +filing_xbrl = filings[0].xbrl() -print(filings.search("Revenue by Geography")) \ No newline at end of file +# ---- +# Extract detailed revenue items +# ---- +revenue_sources = [] +facts = filing_xbrl.facts.data + +latest_rows = facts.groupby('dimensions').head(1) + +for index, row in latest_rows.iterrows(): + dimensions_str = row.get("dimensions", "{}") + try: + dimensions_dict = ast.literal_eval(dimensions_str) if isinstance(dimensions_str, str) else dimensions_str + except (ValueError, SyntaxError): + dimensions_dict = {} + + product_dimension = dimensions_dict.get("srt:ProductOrServiceAxis") if isinstance(dimensions_dict, dict) else None + + + if row["namespace"] == "us-gaap" and row["fact"].startswith("Revenue") and product_dimension is not None and product_dimension.startswith(symbol.lower() + ":") : + revenue_sources.append({ + "name": product_dimension.replace("Member", "").replace(f"{symbol.lower()}:", ""), + "value": row["value"], + }) + +print(revenue_sources)