refactor from disgusting monolith

This commit is contained in:
2026-01-24 17:20:00 -05:00
parent 22c6c01007
commit b4728e3dde
12 changed files with 390 additions and 165 deletions

43
utils/weather.py Normal file
View File

@@ -0,0 +1,43 @@
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"