From 982011b36fc2c5abd6c503a1dfb6c08e66859824 Mon Sep 17 00:00:00 2001 From: ggman12 Date: Sat, 14 Feb 2026 22:42:32 -0500 Subject: [PATCH] end of year check --- src/adsb/download_adsb_data_to_parquet.py | 27 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/adsb/download_adsb_data_to_parquet.py b/src/adsb/download_adsb_data_to_parquet.py index 0f0ef2c..59b5bcf 100644 --- a/src/adsb/download_adsb_data_to_parquet.py +++ b/src/adsb/download_adsb_data_to_parquet.py @@ -76,13 +76,9 @@ def timeout_handler(signum, frame): raise DownloadTimeoutException("Download timed out after 40 seconds") -def fetch_releases(version_date: str) -> list: - """Fetch GitHub releases for a given version date from adsblol.""" - year = version_date.split('.')[0][1:] - if version_date == "v2024.12.31": - year = "2025" +def _fetch_releases_from_repo(year: str, version_date: str) -> list: + """Fetch GitHub releases for a given version date from a specific year's adsblol repo.""" BASE_URL = f"https://api.github.com/repos/adsblol/globe_history_{year}/releases" - # Match both normal and tmp releases PATTERN = rf"^{re.escape(version_date)}-planes-readsb-prod-\d+(tmp)?$" releases = [] page = 1 @@ -123,6 +119,25 @@ def fetch_releases(version_date: str) -> list: return releases +def fetch_releases(version_date: str) -> list: + """Fetch GitHub releases for a given version date from adsblol. + + For Dec 31 dates, if no releases are found in the current year's repo, + also checks the next year's repo (adsblol sometimes publishes Dec 31 + data in the following year's repository). + """ + year = version_date.split('.')[0][1:] + releases = _fetch_releases_from_repo(year, version_date) + + # For last day of year, also check next year's repo if nothing found + if not releases and version_date.endswith(".12.31"): + next_year = str(int(year) + 1) + print(f"No releases found for {version_date} in {year} repo, checking {next_year} repo...") + releases = _fetch_releases_from_repo(next_year, version_date) + + return releases + + def download_asset(asset_url: str, file_path: str) -> bool: """Download a single release asset.""" os.makedirs(os.path.dirname(file_path) or OUTPUT_DIR, exist_ok=True)