diff --git a/core/function_basic.py b/core/function_basic.py index 597a0fd..e57075a 100644 --- a/core/function_basic.py +++ b/core/function_basic.py @@ -4,7 +4,7 @@ import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from io import BytesIO import base64 -from datetime import datetime +from datetime import datetime,date import calendar def load_template(template_name): @@ -169,37 +169,28 @@ def plot_line_chart_base64(data, x_field, y_field, title=None, reverse_x=False): return f"data:image/png;base64,{img_base64}" -def build_calendar_items(start_date_str, data): - start_date = datetime.datetime.strptime(start_date_str, "%Y-%m-%d").date() - weekday = start_date.weekday() # 周一0 ~ 周日6 - weekday = (weekday + 1) % 7 # 调整:周日=0, 周一=1 ... 周六=6 +def week_to_num(week :str): + week_map = { + "一": 0, + "二": 1, + "三": 2, + "四": 3, + "五": 4, + "六": 5, + "日": 6, + } + return week_map.get(week,None) - result = [] - row = [] +def compare_date_str(date_str: str) -> str: + """ + date_str 格式:YYYY-MM-DD + """ + d = datetime.strptime(date_str, "%Y-%m-%d").date() + today = date.today() - # 第一行补空 - for _ in range(weekday): - row.append({"date": "", "items": [], "is_today": False}) - - # 排数据 - for i, day in enumerate(data): - # 识别今天 - is_today = (day["date"] == start_date_str) - - row.append({ - "date": day["day"], - "items": [day], - "is_today": is_today, - }) - - if len(row) == 7: - result.append(row) - row = [] - - # 最后一行剩余补空 - if row: - while len(row) < 7: - row.append({"date": "", "items": [], "is_today": False}) - result.append(row) - - return result \ No newline at end of file + if d < today: + return "过去" + elif d == today: + return "今天" + else: + return "将来" \ No newline at end of file diff --git a/core/jx3_service.py b/core/jx3_service.py index 19a17aa..ed52df7 100644 --- a/core/jx3_service.py +++ b/core/jx3_service.py @@ -1,4 +1,6 @@ +# pyright: reportArgumentType=false + from datetime import datetime from typing import Dict, Any, Optional, List, Union @@ -7,7 +9,7 @@ from astrbot.api import AstrBotConfig from .request import APIClient from .aiosqlite import AsyncSQLite -from .function_basic import load_template,gold_to_string,build_calendar_items +from .function_basic import load_template,gold_to_string,week_to_num,compare_date_str class JX3Service: def __init__(self, api_config, config:AstrBotConfig): @@ -165,10 +167,34 @@ class JX3Service: # 3. 处理返回数据 try: - return_data["data"]["items"] = build_calendar_items(data["today"]["date"],data["data"]) + items = [] + num_richang = week_to_num(data["data"][0]["week"]) + # 空白数据 + for _ in range(num_richang): + items.append({ + "en": False, + "compare": "", + "date": "", + "war": "", + "battle": "" + }) + + # 真实数据 + for m in data["data"]: + items.append({ + "en": True, + "compare": compare_date_str(m.get("date", "")), + "date": m.get("date", ""), + "war": m.get("war", ""), + "battle": m.get("battle", "") + }) + + return_data["data"]["items"] = items + return_data["data"]["today"] = data["today"] except Exception as e: logger.error(f"richang 数据处理时出错: {e}") return_data["msg"] = "处理接口返回信息时出错" + # 加载模板 try: return_data["temp"] = load_template("richangyuche.html") @@ -176,6 +202,7 @@ class JX3Service: logger.error(f"加载模板失败: {e}") return_data["msg"] = "系统错误:模板文件不存在" + return_data["code"] = 200 return return_data diff --git a/templates/richangyuche.html b/templates/richangyuche.html index 0a01223..2e8f91f 100644 --- a/templates/richangyuche.html +++ b/templates/richangyuche.html @@ -1,93 +1,112 @@ - - 未来战场日程表 - + +日常预测 + + + -

未来战场日程表

+
+

日常预测

- - - - - - - - {% for week in items %} - - {% for day in week %} - {% if day.date %} - - {% else %} - - {% endif %} +
+ + {% for w in ["周一","周二","周三","周四","周五","周六","周日"] %} +
{{ w }}
{% endfor %} -
- {% endfor %} - -
- {{ day.date }} - - {% for obj in day.items %} -
-
战场:{{ obj.battle }}
-
战役:{{ obj.war }}
-
运车:{{ obj.orecar }}
-
门派:{{ obj.school }}
-
救援:{{ obj.rescue }}
- {% if obj.card %} -
卡牌:{{ obj.card | join('、') }}
- {% endif %} -
- {% endfor %} - -
+ + + {% for m in items %} +
+ {% if m.en %} +
{{ m.date }}
+
日常:{{ m.war }}
+
战场:{{ m.battle }}
+ {% endif %} +
+ {% endfor %} +
+