Files
AreWeBuried/utils/weather.py

34 lines
1006 B
Python

import httpx
import pytz
from datetime import datetime
from timezonefinder import TimezoneFinder
from config import OPEN_METEO_URL
tf = TimezoneFinder()
async def get_today_snowfall_async(lat, lon):
tz_name = tf.timezone_at(lat=lat, lng=lon) or "UTC"
async with httpx.AsyncClient(timeout=5) as client:
params = {"latitude": lat, "longitude": lon, "daily": "snowfall_sum", "timezone": tz_name}
r = await client.get(OPEN_METEO_URL, params=params)
r.raise_for_status()
data = r.json()
daily = data.get("daily", {})
days = daily.get("time", [])
snow_values = daily.get("snowfall_sum", [])
today_str = datetime.now(pytz.timezone(tz_name)).date().isoformat()
snowfall_cm = 0.0
snowing_now = False
for d, s in zip(days, snow_values):
if d.startswith(today_str):
snowfall_cm += s
if s > 0:
snowing_now = True
inches = round(snowfall_cm / 2.54, 1)
return inches, snowing_now, tz_name