44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import requests
|
|
from datetime import datetime
|
|
import pytz
|
|
from timezonefinder import TimezoneFinder
|
|
from config import OPEN_METEO_URL
|
|
|
|
tf = TimezoneFinder()
|
|
|
|
def get_today_snowfall(lat, lon):
|
|
try:
|
|
tz_name = tf.timezone_at(lat=lat, lng=lon) or "UTC"
|
|
|
|
params = {
|
|
"latitude": lat,
|
|
"longitude": lon,
|
|
"hourly": "snowfall",
|
|
"timezone": tz_name
|
|
}
|
|
|
|
r = requests.get(OPEN_METEO_URL, params=params, timeout=5)
|
|
r.raise_for_status()
|
|
data = r.json()
|
|
|
|
hourly = data.get("hourly", {})
|
|
times = hourly.get("time", [])
|
|
snow_values = hourly.get("snowfall", [])
|
|
|
|
today_str = datetime.now(pytz.timezone(tz_name)).date().isoformat()
|
|
|
|
snowfall_cm = 0.0
|
|
snowing_now = False
|
|
for t, s in zip(times, snow_values):
|
|
if t.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
|
|
|
|
except Exception as e:
|
|
print("Error fetching snowfall:", e)
|
|
return 0.0, False, "UTC"
|