feat: Implement PolyWeather web map API with FastAPI, integrating weather data collection, multi-model analysis, and caching.
This commit is contained in:
+4
-4
@@ -114,6 +114,7 @@ def _analyze(city: str) -> Dict[str, Any]:
|
|||||||
# ── 2. Current conditions (METAR primary, MGM fallback) ──
|
# ── 2. Current conditions (METAR primary, MGM fallback) ──
|
||||||
mc = metar.get("current", {}) if metar else {}
|
mc = metar.get("current", {}) if metar else {}
|
||||||
mg_cur = mgm.get("current", {}) if mgm else {}
|
mg_cur = mgm.get("current", {}) if mgm else {}
|
||||||
|
city_lower = city.lower()
|
||||||
|
|
||||||
cur_temp = _sf(mc.get("temp"))
|
cur_temp = _sf(mc.get("temp"))
|
||||||
# For Ankara, prioritize MGM over METAR as it's often more representative of city center
|
# For Ankara, prioritize MGM over METAR as it's often more representative of city center
|
||||||
@@ -362,14 +363,13 @@ def _analyze(city: str) -> Dict[str, Any]:
|
|||||||
try:
|
try:
|
||||||
# Handle ISO format with Z or +00:00
|
# Handle ISO format with Z or +00:00
|
||||||
ts = mgm_time_str.replace("Z", "+00:00")
|
ts = mgm_time_str.replace("Z", "+00:00")
|
||||||
if "." in ts:
|
if "+" in ts:
|
||||||
# Strip fractional seconds if present to be safe for 3.8
|
base, offset_part = ts.split("+", 1)
|
||||||
base, offset_part = ts.split("+")
|
|
||||||
if "." in base:
|
if "." in base:
|
||||||
base = base.split(".")[0]
|
base = base.split(".")[0]
|
||||||
ts = base + "+" + offset_part
|
ts = base + "+" + offset_part
|
||||||
dt = datetime.fromisoformat(ts)
|
dt = datetime.fromisoformat(ts)
|
||||||
local_dt = dt.astimezone(timezone(timedelta(seconds=utc_offset)))
|
local_dt = dt.astimezone(timezone(timedelta(seconds=utc_offset or 0)))
|
||||||
mgm_time_str = local_dt.strftime("%H:%M")
|
mgm_time_str = local_dt.strftime("%H:%M")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug(f"MGM time conversion failed: {e}")
|
logger.debug(f"MGM time conversion failed: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user