feat(account-check): 登录接口可选 wgapi / iframe
账号检测原来把 WgapiLoginAPI 写死在执行器里,收不到邮箱验证码时只能干等; 登录任务早就可选 iframe(邮箱验证走 iframe 接口)。默认仍 wgapi,旧行为不变。
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
"""斗鱼登录模块"""
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from .activity_client import DouyuActivityClient, DouyuActivityError
|
||||
from .email_verifier import EmailVerifier
|
||||
from .login import CredentialError, DouyuLogin
|
||||
@@ -13,7 +15,34 @@ from .recharge_api import (
|
||||
FishFinRechargeError,
|
||||
)
|
||||
|
||||
#: 登录接口策略名与实现类的映射;登录任务与账号检测共用同一套取值。
|
||||
LOGIN_API_STRATEGIES: dict[str, type[LoginAPIStrategy]] = {
|
||||
"wgapi": WgapiLoginAPI,
|
||||
"iframe": IframeLoginAPI,
|
||||
}
|
||||
|
||||
DEFAULT_LOGIN_API_STRATEGY = "wgapi"
|
||||
|
||||
|
||||
def create_login_api_strategy(name: str) -> LoginAPIStrategy:
|
||||
"""按名称创建登录接口策略实例。
|
||||
|
||||
只认 ``wgapi`` / ``iframe``;空值或未知值一律回退默认的 ``wgapi``
|
||||
(未知值会记一条 warning —— 静默换成另一套接口会让人查不到原因)。
|
||||
"""
|
||||
key = str(name or "").strip().lower()
|
||||
if key in LOGIN_API_STRATEGIES:
|
||||
return LOGIN_API_STRATEGIES[key]()
|
||||
if key:
|
||||
logger.warning(
|
||||
f"未知的登录接口策略 {name!r},回退 {DEFAULT_LOGIN_API_STRATEGY}"
|
||||
)
|
||||
return LOGIN_API_STRATEGIES[DEFAULT_LOGIN_API_STRATEGY]()
|
||||
|
||||
|
||||
__all__ = [
|
||||
"DEFAULT_LOGIN_API_STRATEGY",
|
||||
"LOGIN_API_STRATEGIES",
|
||||
"CredentialError",
|
||||
"DouyuActivityClient",
|
||||
"DouyuActivityError",
|
||||
@@ -26,4 +55,5 @@ __all__ = [
|
||||
"IframeLoginAPI",
|
||||
"LoginAPIStrategy",
|
||||
"WgapiLoginAPI",
|
||||
"create_login_api_strategy",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user