Files
live-hub-py/core/douyu/__init__.py
T
yml2213 5da12df16b feat(account-check): 登录接口可选 wgapi / iframe
账号检测原来把 WgapiLoginAPI 写死在执行器里,收不到邮箱验证码时只能干等;
登录任务早就可选 iframe(邮箱验证走 iframe 接口)。默认仍 wgapi,旧行为不变。
2026-10-06 20:19:26 +08:00

60 lines
1.7 KiB
Python

"""斗鱼登录模块"""
from loguru import logger
from .activity_client import DouyuActivityClient, DouyuActivityError
from .email_verifier import EmailVerifier
from .login import CredentialError, DouyuLogin
from .login_api import LoginAPIStrategy
from .login_api_iframe import IframeLoginAPI
from .login_api_wgapi import WgapiLoginAPI
from .recharge_api import (
FishFinRechargeClient,
FishFinRechargeConfig,
FishFinRechargeConfigError,
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",
"DouyuLogin",
"EmailVerifier",
"FishFinRechargeClient",
"FishFinRechargeConfig",
"FishFinRechargeConfigError",
"FishFinRechargeError",
"IframeLoginAPI",
"LoginAPIStrategy",
"WgapiLoginAPI",
"create_login_api_strategy",
]