diff --git a/core/jx3_data.py b/core/jx3_data.py index c98c2dd..c0fc2b7 100644 --- a/core/jx3_data.py +++ b/core/jx3_data.py @@ -1,6 +1,7 @@ # core/jx3jiaoyihang.py from astrbot.api import logger from urllib.parse import quote +from datetime import datetime from .api_data import api_data_get, api_data_post from .sql_data import sql_data_searchdata,sql_data_select @@ -196,36 +197,86 @@ def jx3_data_wujia(inname="秃盒"): list: 合并后的数据,包含价格和名称信息 """ datas = { - "code": 0, # 默奇遇 - "msg": "未获取数据" # 默认服务器 + "code": 0, + "msg": "未获取数据", + "data": {} } #获取所查询物品的id和官方名称 idname = sql_data_select(inname) + if not idname: + datas["code"] = 201 + datas["msg"] = f"未搜索到{inname}外观" + return + datas["code"] = 1 + datas["msg"] = "获取外观名称ID完成" + datas["data"]["showName"] = idname.get("showName","未知物品") + datas["data"]["searchId"] = idname.get("searchId","未知ID") + datas["data"]["Name"] = inname + + #查询爱剑三获取外观数据 + aj3_url = "https://www.aijx3.cn/api2/aijx3-wj/goods/getGoodsDetail" + aj3_params = { + "goodsName":datas["data"]["showName"], + } - # 查询万宝楼公示数据 - custom_url = "https://www.aijx3.cn/api2/aijx3-wblwg/record/queryByCondition" - initial_params = { + dataaj3 = api_data_post(aj3_url, aj3_params,"data") + datas["data"]["goodsDesc"] = dataaj3.get("goodsDesc","无描述") + datas["data"]["publishTime"] = dataaj3.get("publishTime","无数据") + datas["data"]["priceNum"] = dataaj3.get("priceNum",0) + datas["data"]["imgs"] = dataaj3.get("imgs",[])[0] + datas["data"]["goodsId"] = dataaj3.get("goodsId","无数据") + datas["code"] = 2 + datas["msg"] = "获取外观数据完成" + + # 查询万宝楼数据 + wbl_url = "https://www.aijx3.cn/api2/aijx3-wblwg/record/queryByCondition" + wbl_params = { "tradeStatus": "3", "accoSeq": "", "orderMode": 1, # 按时间降序 "orderBy":"price_num", - "searchId":[idname["searchId"]], + "searchId":[idname['searchId']], "current":1, "size":10 } - datawblgs = api_data_post(custom_url, initial_params,"data") - - if not datawblgs: - datas["code"] = 0 - datas["msg"] = "数据为空" - return - - goodsId = datawblgs.get("records", "").get("goodsId", "") + #第一次查询万宝楼数据,获取公示数据 + datas["data"]["wblgs"] = [] + datawblgs = api_data_post(wbl_url, wbl_params,"data") + #处理万宝楼公示数据 + for record in datawblgs.get("records",[]): + # 转换时间戳为可读格式 + dt = datetime.fromtimestamp(record.get("replyTime",0)/1000) + record_info = { + "priceNum": record.get("priceNum",0), + "belongQf2": record.get("belongQf2","无数据"), + "replyTime": dt.strftime("%Y-%m-%d %H:%M:%S"), + "discountRate": record.get("discountRate",0.0), + } + datas["data"]["wblgs"].append(record_info) - datas["data"] = goodsId - datas["code"] = 200 - datas["msg"] = "处理完成" + #数据更新 + datas["code"] = 3 + datas["msg"] = "获取万宝楼公示数据完成" + #第二次查询万宝楼数据,获取在售数据 + wbl_params["tradeStatus"] = "5" + datas["data"]["wblzs"] = [] + datawblzs = api_data_post(wbl_url, wbl_params,"data") + #处理万宝楼在售数据 + for record in datawblzs.get("records",[]): + # 转换时间戳为可读格式 + dt = datetime.fromtimestamp(record.get("replyTime",0)/1000) + record_info = { + "priceNum": record.get("priceNum",0), + "belongQf2": record.get("belongQf2","无数据"), + "replyTime": dt.strftime("%Y-%m-%d %H:%M:%S"), + "discountRate": record.get("discountRate",0.0), + } + datas["data"]["wblzs"].append(record_info) + + #数据更新 + datas["code"] = 4 + datas["msg"] = "获取万宝楼在售数据完成" return datas \ No newline at end of file diff --git a/core/sql_data.py b/core/sql_data.py index 1e53437..694a298 100644 --- a/core/sql_data.py +++ b/core/sql_data.py @@ -135,4 +135,4 @@ def sql_data_select(search_string): finally: connection.close() - return results \ No newline at end of file + return results[0] \ No newline at end of file diff --git a/main.py b/main.py index 50096b8..e8bdd08 100644 --- a/main.py +++ b/main.py @@ -370,9 +370,19 @@ class Jx3ApiPlugin(Star): if len(parts) > 1: inname = parts[1] # 外观名称 - try: - test = jx3_data_wujia(inname) - yield event.plain_result(f"{test}") + try: + # 加载模板 + try: + template_content = load_template("wujia.html") + except FileNotFoundError as e: + logger.error(f"加载模板失败: {e}") + yield event.plain_result("系统错误:模板文件不存在") + return + + render_data = jx3_data_wujia(inname) + + url = await self.html_render(template_content, render_data, options={}) + yield event.image_result(url) except Exception as e: logger.error(f"处理数据时出错: {e}") diff --git a/templates/wujia.html b/templates/wujia.html new file mode 100644 index 0000000..a04adbc --- /dev/null +++ b/templates/wujia.html @@ -0,0 +1,220 @@ + + +
+ + +{{ data.goodsDesc }}
+ +| 上架时间 | +服务器 | +价格 | +折扣率 | +
|---|---|---|---|
| {{ item.replyTime }} | +{{ item.belongQf2 }} | +{{ item.priceNum }}元 | ++ + {{ item.discountRate }}% + + | +
| 上架时间 | +服务器 | +价格 | +折扣率 | +
|---|---|---|---|
| {{ item.replyTime }} | +{{ item.belongQf2 }} | +{{ item.priceNum }}元 | ++ + {{ item.discountRate }}% + + | +
商品ID: {{ data.goodsId }} | 搜索ID: {{ data.searchId }}
+{{ data.goodsDesc }}
+ +| 价格 | +服务器 | +折扣率 | +更新时间 | +操作 | +
|---|---|---|---|---|
| {{ item.priceNum }}元 | +{{ item.belongQf2 }} | ++ + {{ item.discountRate }}% + + | +{{ item.replyTime }} | ++ |
| 价格 | +服务器 | +折扣率 | +更新时间 | +
|---|---|---|---|
| {{ item.priceNum }}元 | +{{ item.belongQf2 }} | ++ + {{ item.discountRate }}% + + | +{{ item.replyTime }} | +