#!/usr/bin/env python3 import subprocess import tarfile from datetime import UTC, datetime, timedelta from io import BytesIO from pathlib import Path from sys import exit, stderr, stdout import requests DATA_DIR = Path.cwd() / "data" DATA_DIR.mkdir(exist_ok=True) DOWNLOAD_URL = ( "https://opendata.dwd.de/weather/radar/composite/rv/DE1200_RV%y%m%d%H%M.tar.bz2" ) now = datetime.now(UTC) now = now.replace(minute=now.minute // 5 * 5, second=0, microsecond=0) for dt in (now, now - timedelta(minutes=5)): url = dt.strftime(DOWNLOAD_URL) print(f"Attempting to download {url}", file=stderr) try: r = requests.get(url) r.raise_for_status() break except requests.HTTPError: print(f"Not Found: {url}") else: exit() with tarfile.open(fileobj=BytesIO(r.content)) as tar: tar.extractall(DATA_DIR, filter="data") files = list(map(lambda n: DATA_DIR / n, tar.getnames())) subprocess.run( [str(Path(__name__).resolve().parent / "target/release/wetter")] + files, stdout=stdout, stderr=stderr, check=True, )