From c5010a8b9742f22022a24959ebf1bcb5e0e945cd Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 11 Mar 2026 04:57:58 +0800 Subject: [PATCH] fix: safely fallback to metric unit per city instead of overwriting F to C randomly; allow trend engine to run even if Open-Meteo drops --- bot_listener.py | 4 ++-- src/analysis/trend_engine.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bot_listener.py b/bot_listener.py index 735e6c7b..54a094d7 100644 --- a/bot_listener.py +++ b/bot_listener.py @@ -386,8 +386,8 @@ def start_bot(): except Exception: return None - temp_unit = open_meteo.get("unit", "celsius") - temp_symbol = "°F" if temp_unit == "fahrenheit" else "°C" + city_is_fahrenheit = city_name.strip().lower() in ["dallas", "new york", "chicago", "miami", "atlanta", "seattle"] + temp_symbol = "°F" if city_is_fahrenheit else "°C" # --- 1. 紧凑 Header (城市 + 时间 + 风险状态) --- local_time = open_meteo.get("current", {}).get("local_time", "") diff --git a/src/analysis/trend_engine.py b/src/analysis/trend_engine.py index eee752b1..734e380f 100644 --- a/src/analysis/trend_engine.py +++ b/src/analysis/trend_engine.py @@ -66,11 +66,12 @@ def analyze_weather_trend( nws = weather_data.get("nws", {}) empty_result = ("", "", {}) - if not metar or not open_meteo: + if not metar and not mgm: return empty_result - max_so_far = _sf(metar.get("current", {}).get("max_temp_so_far")) - cur_temp = _sf(metar.get("current", {}).get("temp")) + max_so_far = _sf(metar.get("current", {}).get("max_temp_so_far")) if metar else _sf(mgm.get("current", {}).get("mgm_max_temp")) + cur_temp = _sf(metar.get("current", {}).get("temp")) if metar else _sf(mgm.get("current", {}).get("temp")) + daily = open_meteo.get("daily", {}) hourly = open_meteo.get("hourly", {}) times = hourly.get("time", [])