From dc164205f66b4f749294031347f68c9c25aeefbb Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Fri, 22 May 2026 03:57:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=91=E9=81=93=E8=A7=82=E6=B5=8B=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E8=BF=BD=E5=8A=A0=20AMSC=20=E5=AE=9E=E6=97=B6=20METAR?= =?UTF-8?q?=20=E6=8A=A5=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Constraint: 仅中国城市 is_amsc 时显示,不影响其他城市 --- src/utils/telegram_push.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/utils/telegram_push.py b/src/utils/telegram_push.py index d40fed79..26dc664b 100644 --- a/src/utils/telegram_push.py +++ b/src/utils/telegram_push.py @@ -1031,6 +1031,37 @@ def _build_airport_status_message( if wind_label: wind_str += f" {wind_label}" lines.append(wind_str) + # --- AMSC METAR temp + time for Chinese cities (Beijing time) --- + if is_amsc: + raw_metar = amos.get("raw_metar") or "" + if raw_metar: + parts = raw_metar.split() + # Extract temp/dew: "20/17" → 20 + metar_temp = None + for p in parts: + m = re.match(r"^(M?\d{2})/(M?\d{2})$", p) + if m: + t = m.group(1) + metar_temp = str(int(t.replace("M", "-"))) + break + # Extract time: "211930Z" → Beijing time (UTC+8) + metar_time = None + for p in parts: + m = re.match(r"^(\d{2})(\d{2})(\d{2})Z$", p) + if m: + _day, hh, mm = int(m.group(1)), int(m.group(2)), m.group(3) + bj_h = hh + 8 + if bj_h >= 24: + bj_h -= 24 + metar_time = f"北京时 {bj_h:02d}:{mm}" + break + if metar_temp or metar_time: + bits = [] + if metar_temp: + bits.append(f"{metar_temp}{temp_symbol}") + if metar_time: + bits.append(metar_time) + lines.append(f"报文: {' '.join(bits)}") if deb_pred is not None: if display_temp is not None and display_temp > deb_pred: lines.append(f"DEB:{deb_pred:.1f}{temp_symbol}(已突破 +{display_temp - deb_pred:.1f}°)")