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:
KenanZhu committed 2025-11-06 23:30:08 +08:00
1 parent 269eed1cac
commit efa211761d
1 file changed
+41 -27
+41 -27
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
run_mode = self.__system_config_reader.get("run/mode", 1)
run_mode = {
"auto_reserve": run_mode&0x1,
"auto_checkin": run_mode&0x2,
"auto_renewal": run_mode&0x4,
}
# reserve or checkin or renewal
""" """
Here, we collect the run mode from the config file. Here, we collect the run mode from the config file.
""" """
if self.__lib_reserve.canReserve(reserve_info.get("date")) and run_mode["auto_reserve"]: run_mode = self.__system_config_reader.get("run/mode", 1)
if self.__lib_reserve.reserve(reserve_info): run_mode = {
self._showTrace(f"用户 {username} 预约成功 !") "auto_reserve": run_mode&0x1,
success = True "auto_checkin": run_mode&0x2,
"auto_renewal": run_mode&0x4,
}
# reserve
if run_mode["auto_reserve"]:
if self.__lib_reserve.canReserve(reserve_info.get("date")):
if self.__lib_reserve.reserve(reserve_info):
self._showTrace(f"用户 {username} 预约成功 !")
result = 0
else:
self._showTrace(f"用户 {username} 预约失败 !")
result = 1
else: else:
self._showTrace(f"用户 {username} 预约失败 !") result = 2
success = False
# 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