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
+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