45 lines
1.1 KiB
Python
Executable File
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,
|
|
)
|