11
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from astrbot.api import logger
|
||||
|
||||
from .base import DATA_PROCESSING_ERRORS, BaseDomainService
|
||||
|
||||
|
||||
class ContentService(BaseDomainService):
|
||||
async def helps(self) -> Dict[str, Any]:
|
||||
"""帮助"""
|
||||
return await self.template_result("helps.html", {})
|
||||
|
||||
async def bagua(self, type: str) -> Dict[str, Any]:
|
||||
"""八卦"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"class": type, "limit": "5"}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[list[Dict[str, Any]]] = await self.request(
|
||||
"jx3_bagua", params=params
|
||||
)
|
||||
|
||||
# 3. 处理返回数据
|
||||
try:
|
||||
if not data:
|
||||
result_msg = f"未找到相关 {type} 记录。\n"
|
||||
result_msg += (
|
||||
"可选范围:818 616 鬼网三 鬼网3 树洞 记录 "
|
||||
"教程 街拍 故事 避雷 吐槽 提问"
|
||||
)
|
||||
else:
|
||||
result_msg = f"类型:【{type}】\n\n"
|
||||
|
||||
for item in data:
|
||||
result_msg += f"{item['title']}\n"
|
||||
result_msg += f"分区:{item['zone']} 服务器:{item['server']}\n"
|
||||
result_msg += f"所属吧:{item['name']}\n"
|
||||
result_msg += f"链接:https://tieba.baidu.com/p/{item['url']}\n"
|
||||
result_msg += f"日期:{item['date']}\n\n"
|
||||
return_data["data"] = result_msg
|
||||
except DATA_PROCESSING_ERRORS:
|
||||
logger.exception("处理返回数据失败")
|
||||
return_data["msg"] = "处理返回数据失败"
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def hong1(self, name: str) -> Dict[str, Any]:
|
||||
"""宏 心法"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 数据库查询数据
|
||||
result = await self._database.select_one(
|
||||
"kungfu",
|
||||
"name=? OR name1=? OR name2=? OR name3=? OR name4=? OR name5=?",
|
||||
(name, name, name, name, name, name),
|
||||
)
|
||||
|
||||
if result is None:
|
||||
return_data["msg"] = "未找到该心法"
|
||||
return return_data
|
||||
|
||||
kungfu = result.get("name", None)
|
||||
if kungfu is None:
|
||||
return_data["msg"] = "未找到该心法"
|
||||
return return_data
|
||||
|
||||
logger.debug(f"查询到数据:{kungfu}")
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"subtype": kungfu}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request(
|
||||
"jx3box_hong", params=params
|
||||
)
|
||||
logger.debug(data)
|
||||
if not data:
|
||||
return_data["msg"] = "未找到该心法一键宏"
|
||||
return return_data
|
||||
|
||||
# 提取ID
|
||||
pid_list = [0]
|
||||
msg = "按照热度排列\n"
|
||||
n = 1
|
||||
try:
|
||||
for m in data.get("list", []):
|
||||
msg += f"{n}、{m['author']}\t{m['post_title']}\n"
|
||||
pid_list.append(m["ID"])
|
||||
n += 1
|
||||
|
||||
return_data["msg"] = msg
|
||||
return_data["data"]["list"] = pid_list
|
||||
return_data["data"]["num"] = n
|
||||
|
||||
except DATA_PROCESSING_ERRORS:
|
||||
logger.exception("处理返回数据失败")
|
||||
return_data["msg"] = "处理返回数据失败"
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def hong2(self, pid: str) -> Dict[str, Any]:
|
||||
"""宏 心法"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 发起请求
|
||||
data = await self.request(
|
||||
"jx3box_hong_detail",
|
||||
out_key="data",
|
||||
path_params={"pid": pid},
|
||||
)
|
||||
# 验证数据
|
||||
if not data:
|
||||
return_data["msg"] = "获取宏数据异常"
|
||||
return return_data
|
||||
|
||||
# 4. 处理数据
|
||||
try:
|
||||
return_data["temp"] = data["post_content"]
|
||||
msg = ""
|
||||
for m in data["post_meta"]["data"]:
|
||||
msg += f"【宏名称】\n{m['name']}\n"
|
||||
msg += f"【使用说明】\n{m['desc']}\n"
|
||||
msg += f"【宏脚本】\n{m['macro']}\n\n"
|
||||
|
||||
return_data["data"] = msg
|
||||
|
||||
except DATA_PROCESSING_ERRORS:
|
||||
logger.exception("处理返回数据失败")
|
||||
return_data["msg"] = "处理返回数据失败"
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def peizhuang(self, name: str, tags: str) -> Dict[str, Any]:
|
||||
"""配装"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 数据库查询数据
|
||||
result = await self._database.select_one(
|
||||
"kungfu",
|
||||
"name=? OR name1=? OR name2=? OR name3=? OR name4=? OR name5=?",
|
||||
(name, name, name, name, name, name),
|
||||
)
|
||||
logger.debug(result)
|
||||
if result is None:
|
||||
return_data["msg"] = "未找到该心法"
|
||||
return return_data
|
||||
|
||||
mount = result.get("pzid", None)
|
||||
if not mount:
|
||||
return_data["msg"] = "未找到该心法"
|
||||
return return_data
|
||||
|
||||
logger.debug(f"查询到数据:{mount}")
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"mount": mount, "tags": tags}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request(
|
||||
"jx3box_peizhuang", params=params
|
||||
)
|
||||
logger.debug(data)
|
||||
# 验证数据
|
||||
if not data:
|
||||
return_data["msg"] = "配装数据获取异常"
|
||||
return return_data
|
||||
|
||||
# 3. 处理返回数据
|
||||
try:
|
||||
result_msg = f"{name}--配装\n"
|
||||
for item in data["list"]:
|
||||
result_msg += f"【{item['zlp']}】--{item['title']}\n"
|
||||
result_msg += f"链接:https://www.jx3box.com/pz/view/{item['id']}\n\n"
|
||||
|
||||
return_data["data"] = result_msg
|
||||
|
||||
except DATA_PROCESSING_ERRORS as e:
|
||||
logger.exception("处理返回数据失败:", e)
|
||||
return_data["msg"] = "处理返回数据失败"
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
Reference in New Issue
Block a user