This commit is contained in:
2026-01-03 15:47:32 +08:00
parent 4bd6fc7c3e
commit af19db7082
3 changed files with 154 additions and 117 deletions
+24 -33
View File
@@ -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
if d < today:
return "过去"
elif d == today:
return "今天"
else:
return "将来"
+29 -2
View File
@@ -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