"""斗鱼登录模块""" 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", ]