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:
+35
-21
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user