diff --git a/README.md b/README.md index c7d7a1c3..5dc414a8 100644 --- a/README.md +++ b/README.md @@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能 ## 更新 +### 2023/3/27 + +* 优化开箱更新 + ### 2023/3/25 * 删除BUFF_SKIN表约束,新增`skin_id`字段 diff --git a/plugins/genshin/query_user/_models/__init__.py b/plugins/genshin/query_user/_models/__init__.py index c33b83c5..0b5a9043 100644 --- a/plugins/genshin/query_user/_models/__init__.py +++ b/plugins/genshin/query_user/_models/__init__.py @@ -93,3 +93,14 @@ class Genshin(Model): await user.save(update_fields=["today_query_uid"]) return user.cookie return None + + @classmethod + async def _run_script(cls): + return [ + "ALTER TABLE genshin ADD auto_sign_time timestamp with time zone;", + "ALTER TABLE genshin ADD resin_remind boolean DEFAULT False;", + "ALTER TABLE genshin ADD resin_recovery_time timestamp with time zone;", + "ALTER TABLE genshin ADD login_ticket VARCHAR(255) DEFAULT '';" + "ALTER TABLE genshin ADD stuid VARCHAR(255) DEFAULT '';" + "ALTER TABLE genshin ADD stoken VARCHAR(255) DEFAULT '';", + ] diff --git a/plugins/open_cases/__init__.py b/plugins/open_cases/__init__.py index 6edb1e91..2d3d5d4c 100755 --- a/plugins/open_cases/__init__.py +++ b/plugins/open_cases/__init__.py @@ -226,19 +226,21 @@ async def _(event: MessageEvent, arg: Message = CommandArg(), cmd: str = OneComm type_ = "罕见皮肤" await update_case.send(f"即将更新所有{type_}, 请稍等") for i, case_name in enumerate(case_list): - try: - await update_skin_data(case_name) - rand = random.randint(300, 500) - result = f"更新全部{type_}完成" - if i < len(case_list): - next_case = case_list[i + 1] - result = f"将在 {rand} 秒后更新下一{type_}: {next_case}" - await update_case.send(f"成功更新{type_}: {case_name}, {result}") - logger.info(f"成功更新{type_}: {case_name}, {result}", "更新武器箱") - await asyncio.sleep(rand) - except Exception as e: - logger.error(f"更新{type_}: {case_name}", e=e) - await update_case.send(f"更新{type_}: {case_name} 发生错误: {type(e)}: {e}") + # try: + info = await update_skin_data(case_name) + if "请先登录" in info: + await update_case.finish(f"未登录, 已停止更新...") + rand = random.randint(300, 500) + result = f"更新全部{type_}完成" + if i < len(case_list): + next_case = case_list[i + 1] + result = f"将在 {rand} 秒后更新下一{type_}: {next_case}" + await update_case.send(f"{info}, {result}") + logger.info(f"info, {result}", "更新武器箱") + await asyncio.sleep(rand) + # except Exception as e: + # logger.error(f"更新{type_}: {case_name}", e=e) + # await update_case.send(f"更新{type_}: {case_name} 发生错误: {type(e)}: {e}") await update_case.send(f"更新全部{type_}完成") else: await update_case.send(f"开始{cmd}: {msg}, 请稍等") diff --git a/plugins/open_cases/config.py b/plugins/open_cases/config.py index e2f376cb..43afbecb 100755 --- a/plugins/open_cases/config.py +++ b/plugins/open_cases/config.py @@ -131,12 +131,12 @@ CASE2ID = { "光谱2号": "set_community_18", "九头蛇大行动": "set_community_17", "光谱": "set_community_16", - "手套武器箱": "set_community_15", + "手套": "set_community_15", "伽玛2号": "set_gamma_2", "伽玛": "set_community_13", "幻彩3号": "set_community_12", "野火大行动": "set_community_11", - "左轮武器箱": "set_community_10", + "左轮": "set_community_10", "暗影": "set_community_9", "弯曲猎手": "set_community_8", "幻彩2号": "set_community_7", @@ -211,6 +211,7 @@ async def random_skin(num: int, case_name: str) -> List[Tuple[BuffSkin, float]]: """ 随机抽取皮肤 """ + case_name = case_name.replace("武器箱", "").replace(" ", "") color_map = {} for _ in range(num): rand = random.random() diff --git a/plugins/open_cases/models/buff_skin.py b/plugins/open_cases/models/buff_skin.py index 70997eda..2db4903e 100644 --- a/plugins/open_cases/models/buff_skin.py +++ b/plugins/open_cases/models/buff_skin.py @@ -91,4 +91,6 @@ class BuffSkin(Model): "ALTER TABLE buff_skin ADD sell_reference_price float DEFAULT 0;", # 新增sell_reference_price "ALTER TABLE buff_skin DROP COLUMN skin_price;", # 删除skin_price "alter table buff_skin drop constraint if EXISTS uid_buff_skin_case_na_c35c93;", # 删除唯一约束 + "UPDATE buff_skin set case_name='手套' where case_name='手套武器箱'", + "UPDATE buff_skin set case_name='左轮' where case_name='左轮武器箱'", ] diff --git a/plugins/open_cases/models/buff_skin_log.py b/plugins/open_cases/models/buff_skin_log.py index 10279453..dd67e4c8 100644 --- a/plugins/open_cases/models/buff_skin_log.py +++ b/plugins/open_cases/models/buff_skin_log.py @@ -42,3 +42,10 @@ class BuffSkinLog(Model): class Meta: table = "buff_skin_log" table_description = "Buff皮肤更新日志表" + + @classmethod + async def _run_script(cls): + return [ + "UPDATE buff_skin_log set case_name='手套' where case_name='手套武器箱'", + "UPDATE buff_skin_log set case_name='左轮' where case_name='左轮武器箱'", + ] diff --git a/plugins/open_cases/utils.py b/plugins/open_cases/utils.py index 6d6b7ee6..9b72d3ee 100755 --- a/plugins/open_cases/utils.py +++ b/plugins/open_cases/utils.py @@ -103,7 +103,12 @@ async def update_skin_data(name: str) -> str: if skin.skin_id in exists_id_list: continue if skin.case_name: - skin.case_name = skin.case_name.replace("“", "").replace("”", "") + skin.case_name = ( + skin.case_name.replace("”", "") + .replace("“", "") + .replace("武器箱", "") + .replace(" ", "") + ) exists_id_list.append(skin.skin_id) key = skin.name + skin.skin_name name_ = skin.name + skin.skin_name + skin.abrasion @@ -123,7 +128,8 @@ async def update_skin_data(name: str) -> str: case_name = "未知武器箱" else: weapon2case[key] = case_name - case_name = case_name.replace("”", "").replace("“", "") + if skin.case_name == "反恐精英20周年": + skin.case_name = "CS20" skin.case_name = case_name if skin.skin_id in db_skin_id_list: update_list.append(skin) @@ -211,7 +217,7 @@ async def update_skin_data(name: str) -> str: logger.debug(f"更新武器箱/皮肤: [{name}], 新增 {len(log_list)} 条皮肤日志!") await BuffSkinLog.bulk_create(log_list) if name not in CaseManager.CURRENT_CASES: - CaseManager.CURRENT_CASES.append(case_name) # type: ignore + CaseManager.CURRENT_CASES.append(name) # type: ignore return f"更新武器箱/皮肤: [{name}] 成功, 共更新 {len(update_list)} 个皮肤, 新创建 {len(create_list)} 个皮肤!" @@ -268,7 +274,7 @@ async def search_skin_page( if not response: return f"访问发生异常: {error}", -1 if response.status_code == 200: - logger.debug(f"访问BUFF API: {response.text}", "开箱更新") + # logger.debug(f"访问BUFF API: {response.text}", "开箱更新") json_data = response.json() update_data = [] if json_data["code"] == "OK": @@ -512,7 +518,13 @@ async def get_skin_case(id_: str) -> Optional[str]: if response.status_code == 200: text = response.text if r := re.search('', text): - return r.group(1) + return ( + r.group(1) + .replace("”", "") + .replace("“", "") + .replace("武器箱", "") + .replace(" ", "") + ) else: logger.debug(f"访问皮肤所属武器箱异常 url: {url} code: {response.status_code}") return None