wetter/update.py

45 lines
1.1 KiB
Python
Executable File

#!/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,
)