1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-18 23:43:02 +08:00

refactor(AutoLib): optimize run mode handling for extensibility

Refactor run mode processing logic to improve
adaptability for new operations.

Introduce a dedicated "passed" status to
distinguish passed users instead of classifying
them as failed.
This commit is contained in:
2025-11-06 23:15:19 +08:00
parent 269eed1cac
commit efa211761d
+35 -21
View File
@@ -145,9 +145,10 @@ class AutoLib(MsgBase):
username: str, username: str,
password: str, password: str,
reserve_info: dict, reserve_info: dict,
) -> bool: ) -> int:
success = False # result : 0 - success, 1 - failed, 2 - passed
result = 1
# login # login
if not self.__lib_login.login( if not self.__lib_login.login(
@@ -156,31 +157,36 @@ class AutoLib(MsgBase):
self.__system_config_reader.get("login/max_attempt", 5), self.__system_config_reader.get("login/max_attempt", 5),
self.__system_config_reader.get("login/auto_captcha", True), self.__system_config_reader.get("login/auto_captcha", True),
): ):
return False return 1
"""
Here, we collect the run mode from the config file.
"""
run_mode = self.__system_config_reader.get("run/mode", 1) run_mode = self.__system_config_reader.get("run/mode", 1)
run_mode = { run_mode = {
"auto_reserve": run_mode&0x1, "auto_reserve": run_mode&0x1,
"auto_checkin": run_mode&0x2, "auto_checkin": run_mode&0x2,
"auto_renewal": run_mode&0x4, "auto_renewal": run_mode&0x4,
} }
# reserve or checkin or renewal # reserve
""" if run_mode["auto_reserve"]:
Here, we collect the run mode from the config file. if self.__lib_reserve.canReserve(reserve_info.get("date")):
"""
if self.__lib_reserve.canReserve(reserve_info.get("date")) and run_mode["auto_reserve"]:
if self.__lib_reserve.reserve(reserve_info): if self.__lib_reserve.reserve(reserve_info):
self._showTrace(f"用户 {username} 预约成功 !") self._showTrace(f"用户 {username} 预约成功 !")
success = True result = 0
else: else:
self._showTrace(f"用户 {username} 预约失败 !") self._showTrace(f"用户 {username} 预约失败 !")
success = False result = 1
else:
result = 2
# logout # logout
if not self.__lib_logout.logout( if not self.__lib_logout.logout(
username, username,
): ):
# if logout is failed, we must make sure the host to be reloaded
# otherwise, the next login may fail
self.__driver.get(self.__system_config_reader.get("library/host_url")) self.__driver.get(self.__system_config_reader.get("library/host_url"))
return False return 1
return success return result
def run( def run(
@@ -197,25 +203,33 @@ class AutoLib(MsgBase):
if not self.__initDriverUrl(): if not self.__initDriverUrl():
return return
user_counter = {"current": 0, "success": 0, "failed": 0} user_counter = {"current": 0, "success": 0, "failed": 0, "passed": 0}
users = self.__users_config_reader.get("users") users = self.__users_config_reader.get("users")
self._showTrace(f"共发现 {len(users)} 个用户, "\ self._showTrace(
f"用户配置文件路径: {self.__users_config_reader.configPath()}") f"共发现 {len(users)} 个用户, "\
f"用户配置文件路径: {self.__users_config_reader.configPath()}"
)
for user in users: for user in users:
user_counter["current"] += 1 user_counter["current"] += 1
self._showTrace(f"正在处理第 {user_counter["current"]}/{len(users)} 个用户: {user['username']}......") self._showTrace(
if self.__run( f"正在处理第 {user_counter["current"]}/{len(users)} 个用户: {user['username']}......"
)
r = self.__run(
username=user["username"], username=user["username"],
password=user["password"], password=user["password"],
reserve_info=user["reserve_info"], reserve_info=user["reserve_info"],
): )
if r == 0:
user_counter["success"] += 1 user_counter["success"] += 1
else: elif r == 1:
user_counter["failed"] += 1 user_counter["failed"] += 1
elif r == 2:
user_counter["passed"] += 1
self._showTrace(f"处理完成, 共计 {user_counter["current"]} 个用户, "\ self._showTrace(f"处理完成, 共计 {user_counter["current"]} 个用户, "\
f"成功 {user_counter["success"]} 个用户, "\ f"成功 {user_counter["success"]} 个用户, "\
f"失败 {user_counter["failed"]} 个用户") f"失败 {user_counter["failed"]} 个用户, "\
f"跳过 {user_counter["passed"]} 个用户"
)
return return