This commit is contained in:
HibiKier 2023-03-27 21:58:29 +08:00
parent 77478e4483
commit 9b33894a30
7 changed files with 59 additions and 20 deletions

View File

@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
## 更新
### 2023/3/27
* 优化开箱更新
### 2023/3/25
* 删除BUFF_SKIN表约束新增`skin_id`字段

View File

@ -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 '';",
]

View File

@ -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}, 请稍等")

View File

@ -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()

View File

@ -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='左轮武器箱'",
]

View File

@ -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='左轮武器箱'",
]

View File

@ -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"更新武器箱/皮肤: [<u><e>{name}</e></u>], 新增 {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('<meta name="description".*,(.*)武器箱.*?>', 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