跑道观测推送追加 AMSC 实时 METAR 报文

Constraint: 仅中国城市 is_amsc 时显示,不影响其他城市
This commit is contained in:
2569718930@qq.com
2026-05-22 03:57:40 +08:00
parent 5176dff82d
commit dc164205f6
+31
View File
@@ -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}°)")