mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-02 02:00:01 +08:00
补全注释SCRIPT中的sql语句
This commit is contained in:
@@ -100,7 +100,7 @@ class Genshin(Model):
|
||||
"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 login_ticket VARCHAR(255) DEFAULT '';",
|
||||
"ALTER TABLE genshin ADD stuid VARCHAR(255) DEFAULT '';",
|
||||
"ALTER TABLE genshin ADD stoken VARCHAR(255) DEFAULT '';",
|
||||
]
|
||||
|
||||
@@ -58,8 +58,9 @@ usage:
|
||||
更新皮肤指令
|
||||
重置开箱: 重置今日开箱所有次数
|
||||
指令:
|
||||
更新武器箱 ?[武器箱]
|
||||
更新皮肤 ?[刀具名称]
|
||||
更新武器箱 ?[武器箱/ALL]
|
||||
更新皮肤 ?[名称/ALL1]
|
||||
更新皮肤 ?[名称/ALL1] -S: (必定更新罕见皮肤所属箱子)
|
||||
* 不指定武器箱时则全部更新 *
|
||||
* 过多的爬取会导致账号API被封 *
|
||||
""".strip()
|
||||
@@ -202,6 +203,8 @@ async def _(
|
||||
@update_case.handle()
|
||||
async def _(event: MessageEvent, arg: Message = CommandArg(), cmd: str = OneCommand()):
|
||||
msg = arg.extract_plain_text().strip()
|
||||
is_update_case_name = "-S" in msg
|
||||
msg = msg.replace("-S", "").strip()
|
||||
if not msg:
|
||||
case_list = []
|
||||
skin_list = []
|
||||
@@ -227,7 +230,7 @@ async def _(event: MessageEvent, arg: Message = CommandArg(), cmd: str = OneComm
|
||||
await update_case.send(f"即将更新所有{type_}, 请稍等")
|
||||
for i, case_name in enumerate(case_list):
|
||||
try:
|
||||
info = await update_skin_data(case_name)
|
||||
info = await update_skin_data(case_name, is_update_case_name)
|
||||
if "请先登录" in info:
|
||||
await update_case.finish(f"未登录, 已停止更新...")
|
||||
rand = random.randint(300, 500)
|
||||
@@ -245,7 +248,7 @@ async def _(event: MessageEvent, arg: Message = CommandArg(), cmd: str = OneComm
|
||||
else:
|
||||
await update_case.send(f"开始{cmd}: {msg}, 请稍等")
|
||||
try:
|
||||
await update_case.send(await update_skin_data(msg), at_sender=True)
|
||||
await update_case.send(await update_skin_data(msg, is_update_case_name), at_sender=True)
|
||||
except Exception as e:
|
||||
logger.error(f"{cmd}: {msg}", e=e)
|
||||
await update_case.send(f"成功{cmd}: {msg} 发生错误: {type(e)}: {e}")
|
||||
|
||||
+45
-39
@@ -46,15 +46,16 @@ class CaseManager:
|
||||
@classmethod
|
||||
async def reload(cls):
|
||||
cls.CURRENT_CASES = (
|
||||
await BuffSkin.annotate().distinct().values_list("case_name", flat=True) # type: ignore
|
||||
await BuffSkin.filter(case_name__not="未知武器箱").annotate().distinct().values_list("case_name", flat=True) # type: ignore
|
||||
)
|
||||
|
||||
|
||||
async def update_skin_data(name: str) -> str:
|
||||
async def update_skin_data(name: str, is_update_case_name: bool) -> str:
|
||||
"""更新箱子内皮肤数据
|
||||
|
||||
Args:
|
||||
name (str): 箱子名称
|
||||
is_update_case_name (bool): 是否必定更新所属箱子
|
||||
|
||||
Returns:
|
||||
_type_: _description_
|
||||
@@ -70,15 +71,8 @@ async def update_skin_data(name: str) -> str:
|
||||
if not session:
|
||||
return "BUFF COOKIE为空捏!"
|
||||
weapon2case = {}
|
||||
if type_ == UpdateType.CASE:
|
||||
db_skin_id_list = [
|
||||
skin.skin_id for skin in await BuffSkin.filter(case_name=name).all()
|
||||
]
|
||||
else:
|
||||
if type_ == UpdateType.WEAPON_TYPE:
|
||||
db_data = await BuffSkin.filter(name__contains=name).all()
|
||||
db_skin_id_list = [
|
||||
skin.skin_id for skin in await BuffSkin.filter(name__contains=name).all()
|
||||
]
|
||||
weapon2case = {
|
||||
item.name + item.skin_name: item.case_name
|
||||
for item in db_data
|
||||
@@ -99,6 +93,7 @@ async def update_skin_data(name: str) -> str:
|
||||
log_list = []
|
||||
now = datetime.now()
|
||||
exists_id_list = []
|
||||
new_weapon2case = {}
|
||||
for skin in data_list:
|
||||
if skin.skin_id in exists_id_list:
|
||||
continue
|
||||
@@ -114,24 +109,29 @@ async def update_skin_data(name: str) -> str:
|
||||
name_ = skin.name + skin.skin_name + skin.abrasion
|
||||
skin.create_time = now
|
||||
skin.update_time = now
|
||||
if not skin.case_name:
|
||||
case_name = weapon2case.get(key)
|
||||
if UpdateType.WEAPON_TYPE and not skin.case_name:
|
||||
if is_update_case_name:
|
||||
case_name = new_weapon2case.get(key)
|
||||
else:
|
||||
case_name = weapon2case.get(key)
|
||||
if not case_name:
|
||||
case_name = await get_skin_case(skin.skin_id)
|
||||
rand = random.randint(10, 20)
|
||||
logger.debug(
|
||||
f"获取 {skin.name} | {skin.skin_name} 皮肤所属武器箱: {case_name}, 访问随机等待时间: {rand}",
|
||||
"开箱更新",
|
||||
)
|
||||
await asyncio.sleep(rand)
|
||||
if case_list := await get_skin_case(skin.skin_id):
|
||||
case_name = ",".join(case_list)
|
||||
rand = random.randint(10, 20)
|
||||
logger.debug(
|
||||
f"获取 {skin.name} | {skin.skin_name} 皮肤所属武器箱: {case_name}, 访问随机等待时间: {rand}",
|
||||
"开箱更新",
|
||||
)
|
||||
await asyncio.sleep(rand)
|
||||
if not case_name:
|
||||
case_name = "未知武器箱"
|
||||
else:
|
||||
weapon2case[key] = case_name
|
||||
new_weapon2case[key] = case_name
|
||||
if skin.case_name == "反恐精英20周年":
|
||||
skin.case_name = "CS20"
|
||||
skin.case_name = case_name
|
||||
if skin.skin_id in db_skin_id_list:
|
||||
if await BuffSkin.exists(skin_id=skin.skin_id):
|
||||
update_list.append(skin)
|
||||
else:
|
||||
create_list.append(skin)
|
||||
@@ -154,15 +154,16 @@ async def update_skin_data(name: str) -> str:
|
||||
)
|
||||
)
|
||||
name_ = skin.name + "-" + skin.skin_name + "-" + skin.abrasion
|
||||
file_path = BASE_PATH / cn2py(skin.case_name) / f"{cn2py(name_)}.jpg"
|
||||
if not file_path.exists():
|
||||
logger.debug(f"下载皮肤 {name} 图片: {skin.img_url}...", "开箱更新")
|
||||
await AsyncHttpx.download_file(skin.img_url, file_path)
|
||||
rand_time = random.randint(1, 10)
|
||||
await asyncio.sleep(rand_time)
|
||||
logger.debug(f"图片下载随机等待时间: {rand_time}", "开箱更新")
|
||||
else:
|
||||
logger.debug(f"皮肤 {name_} 图片已存在...", "开箱更新")
|
||||
for c_name_ in skin.case_name.split(","):
|
||||
file_path = BASE_PATH / cn2py(c_name_) / f"{cn2py(name_)}.jpg"
|
||||
if not file_path.exists():
|
||||
logger.debug(f"下载皮肤 {name} 图片: {skin.img_url}...", "开箱更新")
|
||||
await AsyncHttpx.download_file(skin.img_url, file_path)
|
||||
rand_time = random.randint(1, 10)
|
||||
await asyncio.sleep(rand_time)
|
||||
logger.debug(f"图片下载随机等待时间: {rand_time}", "开箱更新")
|
||||
else:
|
||||
logger.debug(f"皮肤 {name_} 图片已存在...", "开箱更新")
|
||||
if create_list:
|
||||
logger.debug(f"更新武器箱/皮肤: [<u><e>{name}</e></u>], 创建 {len(create_list)} 个皮肤!")
|
||||
await BuffSkin.bulk_create(set(create_list), 10)
|
||||
@@ -178,7 +179,7 @@ async def update_skin_data(name: str) -> str:
|
||||
if skin.skin_name not in skin_name_list:
|
||||
skin_name_list.append(skin.skin_name)
|
||||
db_data = await BuffSkin.filter(
|
||||
case_name=name,
|
||||
case_name__contains=name,
|
||||
skin_name__in=skin_name_list,
|
||||
name__in=name_list,
|
||||
abrasion__in=abrasion_list,
|
||||
@@ -498,7 +499,7 @@ def get_bk_image_size(
|
||||
return new_size
|
||||
|
||||
|
||||
async def get_skin_case(id_: str) -> Optional[str]:
|
||||
async def get_skin_case(id_: str) -> Optional[List[str]]:
|
||||
"""获取皮肤所在箱子
|
||||
|
||||
Args:
|
||||
@@ -517,14 +518,19 @@ 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)
|
||||
.replace("”", "")
|
||||
.replace("“", "")
|
||||
.replace("武器箱", "")
|
||||
.replace(" ", "")
|
||||
)
|
||||
if r := re.search('<meta name="description"(.*?)>', text):
|
||||
case_list = []
|
||||
for s in r.group(1).split(","):
|
||||
if "武器箱" in s:
|
||||
case_list.append(
|
||||
s.replace("”", "")
|
||||
.replace("“", "")
|
||||
.replace('"', "")
|
||||
.replace("'", "")
|
||||
.replace("武器箱", "")
|
||||
.replace(" ", "")
|
||||
)
|
||||
return case_list
|
||||
else:
|
||||
logger.debug(f"访问皮肤所属武器箱异常 url: {url} code: {response.status_code}")
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user