🐛 修复 gacha_log 无法分析单抽五星的问题

This commit is contained in:
xtaodada 2022-10-22 01:13:10 +08:00
parent c16aed1df3
commit cf8e725a1f
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
4 changed files with 15 additions and 13 deletions

View File

@ -2,13 +2,14 @@ from utils.const import PROJECT_ROOT
from aiofiles import open as async_open from aiofiles import open as async_open
from httpx import AsyncClient, URL from httpx import AsyncClient, URL
GACHA_LOG_PAIMON_MOE_PATH = PROJECT_ROOT.joinpath("metadata/data/paimon_moe_zh.json")
async def update_paimon_moe_zh(overwrite: bool = True): async def update_paimon_moe_zh(overwrite: bool = True):
path = PROJECT_ROOT.joinpath("metadata/data/paimon_moe_zh.json") if not overwrite and GACHA_LOG_PAIMON_MOE_PATH.exists():
if not overwrite and path.exists():
return return
host = URL("https://raw.fastgit.org/MadeBaruna/paimon-moe/main/src/locales/items/zh.json") host = URL("https://raw.fastgit.org/MadeBaruna/paimon-moe/main/src/locales/items/zh.json")
client = AsyncClient() client = AsyncClient()
text = (await client.get(host)).text text = (await client.get(host)).text
async with async_open(path, mode="w", encoding="utf-8") as file: async with async_open(GACHA_LOG_PAIMON_MOE_PATH, mode="w", encoding="utf-8") as file:
await file.write(text) await file.write(text)

View File

@ -36,10 +36,14 @@ from modules.gacha_log.models import (
UIGFInfo, UIGFInfo,
UIGFItem, UIGFItem,
) )
from utils.const import PROJECT_ROOT
GACHA_LOG_PATH = PROJECT_ROOT.joinpath("data", "apihelper", "gacha_log")
GACHA_LOG_PATH.mkdir(parents=True, exist_ok=True)
class GachaLog: class GachaLog:
def __init__(self, gacha_log_path: Path): def __init__(self, gacha_log_path: Path = GACHA_LOG_PATH):
self.gacha_log_path = gacha_log_path self.gacha_log_path = gacha_log_path
@staticmethod @staticmethod
@ -388,7 +392,7 @@ class GachaLog:
four_star_avg = round((total - no_four_star) / four_star, 2) if four_star != 0 else 0 four_star_avg = round((total - no_four_star) / four_star, 2) if four_star != 0 else 0
# 四星最多 # 四星最多
four_star_name_list = [i.name for i in all_four] four_star_name_list = [i.name for i in all_four]
four_star_max = max(four_star_name_list, key=four_star_name_list.count) four_star_max = max(four_star_name_list, key=four_star_name_list.count) if four_star_name_list else ""
four_star_max_count = four_star_name_list.count(four_star_max) four_star_max_count = four_star_name_list.count(four_star_max)
return [ return [
[ [
@ -421,7 +425,7 @@ class GachaLog:
four_star_avg = round((total - no_four_star) / four_star, 2) if four_star != 0 else 0 four_star_avg = round((total - no_four_star) / four_star, 2) if four_star != 0 else 0
# 四星最多 # 四星最多
four_star_name_list = [i.name for i in all_four] four_star_name_list = [i.name for i in all_four]
four_star_max = max(four_star_name_list, key=four_star_name_list.count) four_star_max = max(four_star_name_list, key=four_star_name_list.count) if four_star_name_list else ""
four_star_max_count = four_star_name_list.count(four_star_max) four_star_max_count = four_star_name_list.count(four_star_max)
return [ return [
[ [

View File

@ -1,6 +1,5 @@
import json import json
from io import BytesIO from io import BytesIO
from os import sep
import genshin import genshin
from aiofiles import open as async_open from aiofiles import open as async_open
@ -17,7 +16,7 @@ from core.plugin import Plugin, handler, conversation
from core.template import TemplateService from core.template import TemplateService
from core.user import UserService from core.user import UserService
from core.user.error import UserNotFoundError from core.user.error import UserNotFoundError
from metadata.scripts.paimon_moe import update_paimon_moe_zh from metadata.scripts.paimon_moe import update_paimon_moe_zh, GACHA_LOG_PAIMON_MOE_PATH
from modules.apihelper.hyperion import SignIn from modules.apihelper.hyperion import SignIn
from modules.gacha_log.error import ( from modules.gacha_log.error import (
GachaLogInvalidAuthkey, GachaLogInvalidAuthkey,
@ -38,9 +37,6 @@ from utils.helpers import get_genshin_client
from utils.log import logger from utils.log import logger
from utils.models.base import RegionEnum from utils.models.base import RegionEnum
GACHA_LOG_PATH = PROJECT_ROOT.joinpath("data", "apihelper", "gacha_log")
GACHA_LOG_PAIMON_MOE_PATH = PROJECT_ROOT.joinpath("metadata/data/paimon_moe_zh.json")
GACHA_LOG_PATH.mkdir(parents=True, exist_ok=True)
INPUT_URL, INPUT_FILE, CONFIRM_DELETE = range(10100, 10103) INPUT_URL, INPUT_FILE, CONFIRM_DELETE = range(10100, 10103)
@ -59,7 +55,7 @@ class GachaLogPlugin(Plugin.Conversation, BasePlugin.Conversation):
self.assets_service = assets self.assets_service = assets
self.cookie_service = cookie_service self.cookie_service = cookie_service
self.zh_dict = None self.zh_dict = None
self.gacha_log = GachaLog(GACHA_LOG_PATH) self.gacha_log = GachaLog()
async def __async_init__(self): async def __async_init__(self):
await update_paimon_moe_zh(False) await update_paimon_moe_zh(False)

View File

@ -29,6 +29,7 @@ class GetChat(Plugin):
self.cookies_service = cookies_service self.cookies_service = cookies_service
self.user_service = user_service self.user_service = user_service
self.sign_service = sign_service self.sign_service = sign_service
self.gacha_log = GachaLog()
async def parse_group_chat(self, chat: Chat, admins: List[ChatMember]) -> str: async def parse_group_chat(self, chat: Chat, admins: List[ChatMember]) -> str:
text = f"群 ID<code>{chat.id}</code>\n" f"群名称:<code>{chat.title}</code>\n" text = f"群 ID<code>{chat.id}</code>\n" f"群名称:<code>{chat.title}</code>\n"
@ -93,7 +94,7 @@ class GetChat(Plugin):
else: else:
text += f"\n自动签到:未开启" text += f"\n自动签到:未开启"
with contextlib.suppress(Exception): with contextlib.suppress(Exception):
gacha_log, status = await GachaLog.load_history_info(str(chat.id), str(uid)) gacha_log, status = await self.gacha_log.load_history_info(str(chat.id), str(uid))
if status: if status:
text += f"\n抽卡记录:" text += f"\n抽卡记录:"
for key, value in gacha_log.item_list.items(): for key, value in gacha_log.item_list.items():