mirror of
https://github.com/PlaneQuery/OpenAirframes.git
synced 2026-04-29 14:35:59 +02:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Download Mictronics aircraft database zip.
|
|
|
|
Usage:
|
|
python -m src.contributions.create_daily_microtonics_release [--date YYYY-MM-DD]
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import shutil
|
|
import sys
|
|
import time
|
|
from datetime import datetime, timezone
|
|
from pathlib import Path
|
|
from urllib.error import URLError
|
|
from urllib.request import Request, urlopen
|
|
|
|
URL = "https://www.mictronics.de/aircraft-database/indexedDB_old.php"
|
|
OUT_ROOT = Path("data/openairframes")
|
|
MAX_RETRIES = 3
|
|
RETRY_DELAY = 30 # seconds
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Create daily Mictronics database release")
|
|
parser.add_argument("--date", type=str, help="Date to process (YYYY-MM-DD format, default: today UTC)")
|
|
args = parser.parse_args()
|
|
|
|
date_str = args.date or datetime.now(timezone.utc).strftime("%Y-%m-%d")
|
|
|
|
OUT_ROOT.mkdir(parents=True, exist_ok=True)
|
|
|
|
zip_path = OUT_ROOT / f"mictronics-db_{date_str}.zip"
|
|
|
|
for attempt in range(1, MAX_RETRIES + 1):
|
|
try:
|
|
print(f"Downloading {URL} (attempt {attempt}/{MAX_RETRIES})...")
|
|
req = Request(URL, headers={"User-Agent": "Mozilla/5.0 (compatible; openairframes-downloader/1.0)"}, method="GET")
|
|
with urlopen(req, timeout=120) as r, zip_path.open("wb") as f:
|
|
shutil.copyfileobj(r, f)
|
|
print(f"Wrote: {zip_path}")
|
|
return
|
|
except (URLError, TimeoutError) as e:
|
|
print(f"Attempt {attempt} failed: {e}")
|
|
if attempt < MAX_RETRIES:
|
|
print(f"Retrying in {RETRY_DELAY} seconds...")
|
|
time.sleep(RETRY_DELAY)
|
|
else:
|
|
print("All retries exhausted. Mictronics download failed.")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|