feat: show max temperature time in METAR display
This commit is contained in:
+8
-1
@@ -437,6 +437,7 @@ def start_bot():
|
|||||||
# 基础数据优先用 METAR
|
# 基础数据优先用 METAR
|
||||||
cur_temp = metar.get("current", {}).get("temp") if metar else mgm.get("current", {}).get("temp")
|
cur_temp = metar.get("current", {}).get("temp") if metar else mgm.get("current", {}).get("temp")
|
||||||
max_p = metar.get("current", {}).get("max_temp_so_far") if metar else None
|
max_p = metar.get("current", {}).get("max_temp_so_far") if metar else None
|
||||||
|
max_p_time = metar.get("current", {}).get("max_temp_time") if metar else None
|
||||||
obs_t_str = "N/A"
|
obs_t_str = "N/A"
|
||||||
main_source = "METAR" if metar else "MGM"
|
main_source = "METAR" if metar else "MGM"
|
||||||
|
|
||||||
@@ -467,7 +468,13 @@ def start_bot():
|
|||||||
m_time = m_time.split(" ")[1][:5]
|
m_time = m_time.split(" ")[1][:5]
|
||||||
obs_t_str = m_time
|
obs_t_str = m_time
|
||||||
|
|
||||||
msg_lines.append(f"\n✈️ <b>实测 ({main_source}): {cur_temp}{temp_symbol}</b>" + (f" (最高: {max_p}{temp_symbol})" if max_p else "") + f" | {obs_t_str}")
|
max_str = ""
|
||||||
|
if max_p is not None:
|
||||||
|
max_str = f" (最高: {max_p}{temp_symbol}"
|
||||||
|
if max_p_time:
|
||||||
|
max_str += f" @{max_p_time}"
|
||||||
|
max_str += ")"
|
||||||
|
msg_lines.append(f"\n✈️ <b>实测 ({main_source}): {cur_temp}{temp_symbol}</b>{max_str} | {obs_t_str}")
|
||||||
|
|
||||||
if mgm:
|
if mgm:
|
||||||
m_c = mgm.get("current", {})
|
m_c = mgm.get("current", {})
|
||||||
|
|||||||
@@ -260,6 +260,7 @@ class WeatherDataCollector:
|
|||||||
utc_midnight = local_midnight - timedelta(seconds=utc_offset)
|
utc_midnight = local_midnight - timedelta(seconds=utc_offset)
|
||||||
|
|
||||||
max_so_far_c = -999
|
max_so_far_c = -999
|
||||||
|
max_temp_time = None
|
||||||
for obs in data:
|
for obs in data:
|
||||||
obs_report_time = obs.get("reportTime", "")
|
obs_report_time = obs.get("reportTime", "")
|
||||||
try:
|
try:
|
||||||
@@ -271,6 +272,9 @@ class WeatherDataCollector:
|
|||||||
t = obs.get("temp")
|
t = obs.get("temp")
|
||||||
if t is not None and t > max_so_far_c:
|
if t is not None and t > max_so_far_c:
|
||||||
max_so_far_c = t
|
max_so_far_c = t
|
||||||
|
# 转为当地时间并记录
|
||||||
|
local_report = report_dt + timedelta(seconds=utc_offset)
|
||||||
|
max_temp_time = local_report.strftime("%H:%M")
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -295,6 +299,7 @@ class WeatherDataCollector:
|
|||||||
"current": {
|
"current": {
|
||||||
"temp": round(temp, 1) if temp is not None else None,
|
"temp": round(temp, 1) if temp is not None else None,
|
||||||
"max_temp_so_far": round(max_so_far, 1) if max_so_far is not None else None,
|
"max_temp_so_far": round(max_so_far, 1) if max_so_far is not None else None,
|
||||||
|
"max_temp_time": max_temp_time,
|
||||||
"dewpoint": round(dewp, 1) if dewp is not None else None,
|
"dewpoint": round(dewp, 1) if dewp is not None else None,
|
||||||
"humidity": latest.get("rh"),
|
"humidity": latest.get("rh"),
|
||||||
"wind_speed_kt": latest.get("wspd"),
|
"wind_speed_kt": latest.get("wspd"),
|
||||||
|
|||||||
Reference in New Issue
Block a user