#!/usr/bin/env python3 from __future__ import annotations import os import sys from datetime import datetime, timezone import requests OPENF1_BASE_URL = os.getenv("OPENF1_BASE_URL", "https://api.openf1.org/v1") INGEST_URL = os.getenv("INGEST_URL") def is_race_day(date_iso: str) -> bool: params = {"date_start>=": date_iso, "date_end<=": date_iso} response = requests.get(f"{OPENF1_BASE_URL}/sessions", params=params, timeout=30) response.raise_for_status() sessions = response.json() return any( (session.get("session_type") == "Race" or session.get("session_name") == "Race") for session in sessions ) def has_practice_sessions(date_iso: str) -> bool: params = {"date_start>=": date_iso, "date_end<=": date_iso} response = requests.get(f"{OPENF1_BASE_URL}/sessions", params=params, timeout=30) response.raise_for_status() sessions = response.json() return any( "practice" in (session.get("session_type") or session.get("session_name") or "").lower() for session in sessions ) def trigger_ingest(date_iso: str) -> None: if not INGEST_URL: raise RuntimeError("INGEST_URL is not set") response = requests.post(INGEST_URL, params={"date": date_iso}, timeout=60) response.raise_for_status() print("Ingest triggered:", response.json()) def main() -> int: date_iso = os.getenv("RACE_DATE") if not date_iso: date_iso = datetime.now(timezone.utc).date().isoformat() if has_practice_sessions(date_iso): print(f"Practice sessions detected for {date_iso}. Triggering practice ingest.") trigger_ingest(date_iso) return 0 if is_race_day(date_iso): print(f"Race day detected for {date_iso}. Triggering ingest.") trigger_ingest(date_iso) else: print(f"No race session found for {date_iso}. Skipping.") return 0 if __name__ == "__main__": sys.exit(main())