fix: 将stage信息保存于Config文件中
This commit is contained in:
@@ -198,6 +198,7 @@ class GlobalConfig(ConfigBase):
|
|||||||
"Data", "LastStageUpdated", "2000-01-01 00:00:00"
|
"Data", "LastStageUpdated", "2000-01-01 00:00:00"
|
||||||
)
|
)
|
||||||
Data_StageTimeStamp = ConfigItem("Data", "StageTimeStamp", "2000-01-01 00:00:00")
|
Data_StageTimeStamp = ConfigItem("Data", "StageTimeStamp", "2000-01-01 00:00:00")
|
||||||
|
Data_Stage = ConfigItem("Data", "Stage", "{ }")
|
||||||
Data_IfShowNotice = ConfigItem("Data", "IfShowNotice", True, BoolValidator())
|
Data_IfShowNotice = ConfigItem("Data", "IfShowNotice", True, BoolValidator())
|
||||||
|
|
||||||
|
|
||||||
@@ -656,7 +657,6 @@ class AppConfig(GlobalConfig):
|
|||||||
self.silence_dict: Dict[Path, datetime] = {}
|
self.silence_dict: Dict[Path, datetime] = {}
|
||||||
self.power_sign = "NoAction"
|
self.power_sign = "NoAction"
|
||||||
self.if_ignore_silence: List[uuid.UUID] = []
|
self.if_ignore_silence: List[uuid.UUID] = []
|
||||||
self.stage_info: Optional[Dict[str, List[Dict[str, str]]]] = None
|
|
||||||
self.temp_task: List[asyncio.Task] = []
|
self.temp_task: List[asyncio.Task] = []
|
||||||
|
|
||||||
self.ScriptConfig = MultipleConfig([MaaConfig, GeneralConfig])
|
self.ScriptConfig = MultipleConfig([MaaConfig, GeneralConfig])
|
||||||
@@ -1154,14 +1154,14 @@ class AppConfig(GlobalConfig):
|
|||||||
else:
|
else:
|
||||||
index = type
|
index = type
|
||||||
|
|
||||||
if self.stage_info is not None:
|
if json.loads(self.get("Data", "Stage")) != {}:
|
||||||
task = asyncio.create_task(self.get_stage())
|
task = asyncio.create_task(self.get_stage())
|
||||||
self.temp_task.append(task)
|
self.temp_task.append(task)
|
||||||
task.add_done_callback(lambda t: self.temp_task.remove(t))
|
task.add_done_callback(lambda t: self.temp_task.remove(t))
|
||||||
else:
|
else:
|
||||||
await self.get_stage()
|
await self.get_stage()
|
||||||
|
|
||||||
return self.stage_info.get(index, []) if self.stage_info is not None else []
|
return json.loads(self.get("Data", "Stage")).get(index, [])
|
||||||
|
|
||||||
async def get_proxy_overview(self) -> Dict[str, Any]:
|
async def get_proxy_overview(self) -> Dict[str, Any]:
|
||||||
"""获取代理情况概览信息"""
|
"""获取代理情况概览信息"""
|
||||||
@@ -1203,7 +1203,7 @@ class AppConfig(GlobalConfig):
|
|||||||
self.get("Data", "LastStageUpdated"), "%Y-%m-%d %H:%M:%S"
|
self.get("Data", "LastStageUpdated"), "%Y-%m-%d %H:%M:%S"
|
||||||
):
|
):
|
||||||
logger.info("No need to update stage info, using cached data.")
|
logger.info("No need to update stage info, using cached data.")
|
||||||
return self.stage_info if self.stage_info is not None else {}
|
return json.loads(self.get("Data", "Stage"))
|
||||||
|
|
||||||
logger.info("开始获取活动关卡信息")
|
logger.info("开始获取活动关卡信息")
|
||||||
|
|
||||||
@@ -1225,26 +1225,18 @@ class AppConfig(GlobalConfig):
|
|||||||
logger.warning(f"无法从MAA服务器获取活动关卡时间戳: {e}")
|
logger.warning(f"无法从MAA服务器获取活动关卡时间戳: {e}")
|
||||||
remote_time_stamp = datetime.fromtimestamp(0)
|
remote_time_stamp = datetime.fromtimestamp(0)
|
||||||
|
|
||||||
if (Path.cwd() / "data/StageInfo/StageInfo.json").exists():
|
local_time_stamp = datetime.strptime(
|
||||||
local_time_stamp = datetime.strptime(
|
self.get("Data", "StageTimeStamp"), "%Y-%m-%d %H:%M:%S"
|
||||||
self.get("Data", "StageTimeStamp"), "%Y-%m-%d %H:%M:%S"
|
)
|
||||||
)
|
|
||||||
with (Path.cwd() / "data/StageInfo/StageInfo.json").open(
|
|
||||||
"r", encoding="utf-8"
|
|
||||||
) as f:
|
|
||||||
local_stage_info = json.load(f)
|
|
||||||
else:
|
|
||||||
local_time_stamp = datetime.fromtimestamp(0)
|
|
||||||
|
|
||||||
# 本地文件关卡信息无需更新,直接返回本地数据
|
# 本地文件关卡信息无需更新,直接返回本地数据
|
||||||
if datetime.fromtimestamp(0) < remote_time_stamp <= local_time_stamp:
|
if datetime.fromtimestamp(0) < remote_time_stamp <= local_time_stamp:
|
||||||
|
|
||||||
logger.info("使用本地关卡信息")
|
logger.info("使用本地关卡信息")
|
||||||
self.stage_info = local_stage_info
|
|
||||||
await self.set(
|
await self.set(
|
||||||
"Data", "LastStageUpdated", datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
"Data", "LastStageUpdated", datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
)
|
)
|
||||||
return local_stage_info
|
return json.loads(self.get("Data", "Stage"))
|
||||||
|
|
||||||
# 需要更新关卡信息
|
# 需要更新关卡信息
|
||||||
logger.info("从远端更新关卡信息")
|
logger.info("从远端更新关卡信息")
|
||||||
@@ -1330,7 +1322,7 @@ class AppConfig(GlobalConfig):
|
|||||||
{"label": stage_info["Value"], "value": stage_info["Value"]}
|
{"label": stage_info["Value"], "value": stage_info["Value"]}
|
||||||
)
|
)
|
||||||
|
|
||||||
self.stage_info = {}
|
stage_info = {}
|
||||||
|
|
||||||
for day in range(0, 8):
|
for day in range(0, 8):
|
||||||
|
|
||||||
@@ -1343,11 +1335,11 @@ class AppConfig(GlobalConfig):
|
|||||||
{"label": stage_info["text"], "value": stage_info["value"]}
|
{"label": stage_info["text"], "value": stage_info["value"]}
|
||||||
)
|
)
|
||||||
|
|
||||||
self.stage_info[calendar.day_name[day - 1] if day > 0 else "ALL"] = (
|
stage_info[calendar.day_name[day - 1] if day > 0 else "ALL"] = (
|
||||||
side_story_stage + today_stage
|
side_story_stage + today_stage
|
||||||
)
|
)
|
||||||
|
|
||||||
self.stage_info["Info"] = side_story_info
|
stage_info["Info"] = side_story_info
|
||||||
|
|
||||||
if if_get_maa_stage:
|
if if_get_maa_stage:
|
||||||
|
|
||||||
@@ -1355,18 +1347,14 @@ class AppConfig(GlobalConfig):
|
|||||||
await self.set(
|
await self.set(
|
||||||
"Data", "LastStageUpdated", datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
"Data", "LastStageUpdated", datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
)
|
)
|
||||||
(Path.cwd() / "data/StageInfo").mkdir(parents=True, exist_ok=True)
|
|
||||||
await self.set(
|
await self.set(
|
||||||
"Data",
|
"Data",
|
||||||
"StageTimeStamp",
|
"StageTimeStamp",
|
||||||
remote_time_stamp.strftime("%Y-%m-%d %H:%M:%S"),
|
remote_time_stamp.strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
)
|
)
|
||||||
with (Path.cwd() / "data/StageInfo/StageInfo.json").open(
|
await self.set("Data", "Stage", json.dumps(stage_info, ensure_ascii=False))
|
||||||
"w", encoding="utf-8"
|
|
||||||
) as f:
|
|
||||||
json.dump(self.stage_info, f, ensure_ascii=False, indent=4)
|
|
||||||
|
|
||||||
return self.stage_info
|
return stage_info
|
||||||
|
|
||||||
async def get_script_combox(self):
|
async def get_script_combox(self):
|
||||||
"""获取脚本下拉框信息"""
|
"""获取脚本下拉框信息"""
|
||||||
|
|||||||
Reference in New Issue
Block a user