2021-05-20 19:23:32 +08:00
|
|
|
|
from typing import Any
|
2022-02-19 18:20:19 +08:00
|
|
|
|
from .config import DRAW_DATA_PATH
|
|
|
|
|
|
from .util import is_number
|
|
|
|
|
|
from nonebot.log import logger
|
|
|
|
|
|
|
2021-07-02 17:24:23 +08:00
|
|
|
|
try:
|
|
|
|
|
|
import ujson as json
|
|
|
|
|
|
except ModuleNotFoundError:
|
|
|
|
|
|
import json
|
2021-05-20 19:23:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
2022-02-19 18:20:19 +08:00
|
|
|
|
def init_game_pool(game: str, data: dict, operator: Any):
|
2021-05-20 19:23:32 +08:00
|
|
|
|
tmp_lst = []
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "prts":
|
2021-05-20 19:23:32 +08:00
|
|
|
|
for key in data.keys():
|
|
|
|
|
|
limited = False
|
|
|
|
|
|
recruit_only = False
|
|
|
|
|
|
event_only = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "限定寻访" in data[key]["获取途径"]:
|
2021-05-20 19:23:32 +08:00
|
|
|
|
limited = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "干员寻访" not in data[key]["获取途径"] and "公开招募" in data[key]["获取途径"]:
|
2021-05-20 19:23:32 +08:00
|
|
|
|
recruit_only = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "活动获取" in data[key]["获取途径"]:
|
2021-05-20 19:23:32 +08:00
|
|
|
|
event_only = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "干员寻访" not in data[key]["获取途径"] and "凭证交易所" == data[key]["获取途径"][0]:
|
2021-06-15 10:57:08 +08:00
|
|
|
|
limited = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "干员寻访" not in data[key]["获取途径"] and "信用累计奖励" == data[key]["获取途径"][0]:
|
2021-05-26 20:08:13 +08:00
|
|
|
|
limited = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if key.find("阿米娅") != -1:
|
2021-05-20 19:23:32 +08:00
|
|
|
|
continue
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=key,
|
|
|
|
|
|
star=int(data[key]["星级"]),
|
|
|
|
|
|
limited=limited,
|
|
|
|
|
|
recruit_only=recruit_only,
|
|
|
|
|
|
event_only=event_only,
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"明日方舟导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "genshin":
|
2021-05-20 19:23:32 +08:00
|
|
|
|
for key in data.keys():
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if key.find("旅行者") != -1:
|
2021-05-20 19:23:32 +08:00
|
|
|
|
continue
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if data[key]["常驻/限定"] == "限定UP":
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = True
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(name=key, star=int(data[key]["稀有度"][:1]), limited=limited)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"原神导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "genshin_arms":
|
2021-06-04 18:01:33 +08:00
|
|
|
|
for key in data.keys():
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if data[key]["获取途径"].find("祈愿") != -1:
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if data[key]["获取途径"].find("限定祈愿") != -1:
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = True
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=key, star=int(data[key]["稀有度"][:1]), limited=limited
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"原神导入武器 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "pretty":
|
2021-05-20 19:23:32 +08:00
|
|
|
|
for key in data.keys():
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(name=key, star=data[key]["初始星级"], limited=False)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"赛马娘导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "pretty_card":
|
2021-05-20 19:23:32 +08:00
|
|
|
|
for key in data.keys():
|
2021-06-23 15:57:03 +08:00
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "卡池" not in data[key]["获取方式"]:
|
2021-06-23 15:57:03 +08:00
|
|
|
|
limited = True
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if not data[key]["获取方式"]:
|
2021-06-23 15:57:03 +08:00
|
|
|
|
limited = False
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=data[key]["中文名"],
|
|
|
|
|
|
star=len(data[key]["稀有度"]),
|
|
|
|
|
|
limited=limited,
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"赛马娘导入卡片 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game in ["guardian", "guardian_arms"]:
|
2021-05-26 20:08:13 +08:00
|
|
|
|
for key in data.keys():
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(name=data[key]["名称"], star=int(data[key]["星级"]), limited=False)
|
|
|
|
|
|
)
|
|
|
|
|
|
if game == "pcr":
|
2021-05-26 20:08:13 +08:00
|
|
|
|
for key in data.keys():
|
|
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if key.find("(") != -1:
|
2021-05-26 20:08:13 +08:00
|
|
|
|
limited = True
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"公主连接导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "azur":
|
2021-06-04 18:01:33 +08:00
|
|
|
|
for key in data.keys():
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if is_number(data[key]["星级"]):
|
2021-10-03 14:24:07 +08:00
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if "可以建造" not in data[key]["获取途径"]:
|
2021-10-03 14:24:07 +08:00
|
|
|
|
limited = True
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=data[key]["名称"],
|
|
|
|
|
|
star=int(data[key]["星级"]),
|
|
|
|
|
|
limited=limited,
|
|
|
|
|
|
type_=data[key]["类型"],
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"碧蓝航线导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game in ["fgo", "fgo_card"]:
|
2021-06-04 18:01:33 +08:00
|
|
|
|
for key in data.keys():
|
|
|
|
|
|
limited = False
|
|
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if (
|
|
|
|
|
|
"圣晶石召唤" not in data[key]["入手方式"]
|
|
|
|
|
|
and "圣晶石召唤(Story卡池)" not in data[key]["入手方式"]
|
|
|
|
|
|
):
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = True
|
|
|
|
|
|
except KeyError:
|
|
|
|
|
|
pass
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"FGO导入角色 {key} 数据错误:{type(e)}:{e}")
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game == "onmyoji":
|
2021-06-04 18:01:33 +08:00
|
|
|
|
for key in data.keys():
|
|
|
|
|
|
limited = False
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if key in [
|
|
|
|
|
|
"奴良陆生",
|
|
|
|
|
|
"卖药郎",
|
|
|
|
|
|
"鬼灯",
|
|
|
|
|
|
"阿香",
|
|
|
|
|
|
"蜜桃&芥子",
|
|
|
|
|
|
"犬夜叉",
|
|
|
|
|
|
"杀生丸",
|
|
|
|
|
|
"桔梗",
|
|
|
|
|
|
"朽木露琪亚",
|
|
|
|
|
|
"黑崎一护",
|
|
|
|
|
|
"灶门祢豆子",
|
|
|
|
|
|
"灶门炭治郎",
|
|
|
|
|
|
]:
|
2021-06-04 18:01:33 +08:00
|
|
|
|
limited = True
|
2021-11-23 21:44:59 +08:00
|
|
|
|
try:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=data[key]["名称"], star=data[key]["星级"], limited=limited
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"阴阳师导入角色 {key} 数据错误:{type(e)}:{e}")
|
2021-06-23 15:57:03 +08:00
|
|
|
|
# print(tmp_lst)
|
2021-07-02 17:24:23 +08:00
|
|
|
|
char_name_lst = [x.name for x in tmp_lst]
|
2022-02-19 18:20:19 +08:00
|
|
|
|
up_char_file = (
|
|
|
|
|
|
DRAW_DATA_PATH
|
|
|
|
|
|
/ f"draw_card"
|
|
|
|
|
|
/ "draw_card_up"
|
|
|
|
|
|
/ f"{game.split('_')[0]}_up_char.json"
|
|
|
|
|
|
)
|
2021-07-02 17:24:23 +08:00
|
|
|
|
if up_char_file.exists():
|
2022-02-19 18:20:19 +08:00
|
|
|
|
data = json.load(open(up_char_file, "r", encoding="utf8"))
|
|
|
|
|
|
if len(game.split("_")) == 1:
|
|
|
|
|
|
key = "char"
|
2021-07-02 17:24:23 +08:00
|
|
|
|
else:
|
|
|
|
|
|
key = list(data.keys())[1]
|
2022-02-19 18:20:19 +08:00
|
|
|
|
for x in data[key]["up_char"]:
|
|
|
|
|
|
for char in data[key]["up_char"][x]:
|
2021-07-02 17:24:23 +08:00
|
|
|
|
if char not in char_name_lst:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
if game.find("prts") != -1:
|
|
|
|
|
|
tmp_lst.append(
|
|
|
|
|
|
operator(
|
|
|
|
|
|
name=char,
|
|
|
|
|
|
star=int(x),
|
|
|
|
|
|
recruit_only=False,
|
|
|
|
|
|
event_only=False,
|
|
|
|
|
|
limited=False,
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
2021-07-02 17:24:23 +08:00
|
|
|
|
else:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
tmp_lst.append(operator(name=char, star=int(x), limited=False))
|
2021-05-20 19:23:32 +08:00
|
|
|
|
return tmp_lst
|