{{ city_name }}
{% set first_day = weather_data[0] %}
{{ first_day.temperature.split(' / ')[0].replace('℃', '') if ' / ' in first_day.temperature else first_day.temperature.replace('℃', '') }} °C
{{ first_day.weather }}
风力 {{ first_day.wind_power }}
{% set month = query_time.split('年')[1].split('月')[0] if '年' in query_time else '3' %} {# 星期名称映射 #} {% set week_names = ['日', '一', '二', '三', '四', '五', '六'] %} {# 从第一天数据中提取今天是星期几 #} {% set first_day_text = weather_data[0].day %} {% set today_week_text = first_day_text.split('(')[1].replace(')', '') if '(' in first_day_text else '今天' %} {# 将文字星期转换为数字:今天=0, 明天=1, 后天=2, 周一=1, 周二=2... #} {% if today_week_text == '今天' %} {% set today_week_num = 0 %} {% elif today_week_text == '明天' %} {% set today_week_num = 1 %} {% elif today_week_text == '后天' %} {% set today_week_num = 2 %} {% elif '周' in today_week_text %} {% set week_day_char = today_week_text.replace('周', '').replace('星期', '') %} {% set week_map = {'日': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6} %} {% set today_week_num = week_map[week_day_char] if week_day_char in week_map else 0 %} {% else %} {% set today_week_num = 0 %} {% endif %} {% for day_weather in weather_data[:5] %}
{% set day_text = day_weather.day %} {% set day_num = day_text.split('日')[0] %} {% if loop.index0 == 0 %} 今日 {% elif loop.index0 == 1 %} 明日 {% elif loop.index0 == 2 %} 后日 {% else %} {# 计算这一天的星期:今天 + 天数偏移 #} {% set target_week_num = (today_week_num + loop.index0) % 7 %} 星期{{ week_names[target_week_num] }} {% endif %} {{ month }}/{{ day_num }}
{% endfor %}
{# 收集最高温和最低温数据 #} {% set high_list = [] %} {% set low_list = [] %} {% for day in weather_data[:5] %} {% set parts = day.temperature.split(' / ') %} {% set high_str = parts[0].replace('℃', '') %} {% set low_str = parts[1].replace('℃', '') if parts | length > 1 else parts[0].replace('℃', '') %} {% set high_val = high_str | int if high_str | int is defined else 0 %} {% set low_val = low_str | int if low_str | int is defined else 0 %} {% set _ = high_list.append(high_val) %} {% set _ = low_list.append(low_val) %} {% endfor %} {% set all_temps = high_list + low_list %} {% set min_t = all_temps | min %} {% set max_t = all_temps | max %} {% set temp_range = (max_t - min_t) if (max_t - min_t) > 0 else 1 %} {% set pad_x = 40 %} {% set pad_top = 25 %} {% set pad_bottom = 20 %} {% set cw = 320 %} {% set ch = 115 %} {# 绘制最低温折线 #} {# 绘制最高温折线 #} {# 绘制最低温圆点和标签 #} {% for t in low_list %} {% set x = pad_x + (loop.index0 * cw / 4) %} {% set y = pad_top + ch - ((t - min_t) / temp_range * ch) %} {{ t }}° {% endfor %} {# 绘制最高温圆点和标签 #} {% for t in high_list %} {% set x = pad_x + (loop.index0 * cw / 4) %} {% set y = pad_top + ch - ((t - min_t) / temp_range * ch) %} {{ t }}° {% endfor %}