Files
kami_spider_monorepo/apps/apple/clients/june/models/login.py
danial ba558b94ad refactor(june): 优化SixClient异步请求和异常处理
- SixClient中引入异步请求方法try_get_url获取并验证备用主机地址
- 初始化__base_url时支持异步调用,提升启动时灵活性
- _do_post与相关异步请求方法改用异常抛出替代返回None规范错误处理
- 修正部分解码逻辑,确保签名等字段的正确Base64和URL解码
- 代码中添加日志和重试机制以提升异常处理和调试能力
- 删除june模块中遗留的单元测试代码
- 调整june模型中字段类型,支持可选字符串以增强健壮性
- apps/apple/clients/itunes中添加Field默认值,防止字段缺失错误
- itunes解析XML相关函数增强健壮性,避免空指针异常
- core.clients.http_client支持完整http路径调用,注释掉自动抛错逻辑以兼容特殊响应
- base.py中retry_backoff类型显式定义为float,提高代码类型安全性
2025-11-01 23:52:30 +08:00

95 lines
3.2 KiB
Python

from datetime import datetime
from typing import Any, TypeVar, Generic
from pydantic import BaseModel, Field
class LoginUserInfo(BaseModel):
token: str = Field(default="")
userName: str = Field(default="")
userPwd: str = Field(default="")
integral: int = Field(default=0)
freezeIntegral: int = Field(default=0)
userNumber: str = Field(default="")
guid: str = Field(default="")
uid: str = Field(default="")
class LoginSessionInfo(BaseModel):
integral: int = Field(default=0)
userType: str = Field(default="")
userNumber: str = Field(default="")
userTypeName: str = Field(default="")
expirationTime: datetime = Field(default=datetime.now())
freezeIntegral: int = Field(default=0)
serverIndex: int = Field(default=0)
class Cookies(BaseModel):
wosid: str | None = Field(None, alias="wosid")
woinst: str | None = Field(None, alias="woinst")
ns_mzf_inst: str = Field(..., alias="ns-mzf-inst")
mzf_in: str | None = Field(None, alias="mzf_in")
mzf_dr: str | None = Field(None, alias="mzf_dr")
hsaccnt: str | None = Field(None, alias="hsaccnt")
session_store_id: str = Field(..., alias="session-store-id")
X_Dsid: str = Field(..., alias="X-Dsid")
mz_at0_135096725: str = Field(..., alias="mz_at0-135096725")
ampsc: str | None = Field(None, alias="ampsc")
mz_at_ssl_135096725: str = Field(..., alias="mz_at_ssl-135096725")
mz_at_mau_135096725: str = Field(..., alias="mz_at_mau-135096725")
pldfltcid: str | None = Field(None, alias="pldfltcid")
tv_pldfltcid: str = Field(..., alias="tv-pldfltcid")
wosid_lite: str = Field(..., alias="wosid-lite")
itspod: str | None = Field(None, alias="itspod")
class RemoteCookieModel(BaseModel):
msg: str = Field(..., alias="msg")
Balance: str = Field(..., alias="Balance")
Area: str = Field(..., alias="Area")
UserAgent: str = Field(..., alias="UserAgent")
cookis: Cookies = Field(..., alias="cookis")
xtoken: str = Field(..., alias="xtoken")
dsis: str = Field(..., alias="dsis")
Kbsync: Any = Field(..., alias="Kbsync")
software: str = Field(..., alias="software")
Guid: str = Field(..., alias="Guid")
ServerId: str = Field(..., alias="ServerId")
isDisabledAccount: str = Field(..., alias="isDisabledAccount")
class LoginSignatureModel(BaseModel):
msg: str = Field(..., alias="msg")
signature: str = Field(..., alias="signature")
serverId: str = Field(..., alias="serverId")
adder1: int = Field(..., alias="adder1")
adder2: int = Field(..., alias="adder2")
userAgent: str = Field(..., alias="userAgent")
class AppleAccountModel(BaseModel):
account: str = Field(default="")
password: str = Field(default="")
class ItunesLoginModel(BaseModel):
server_id: str = Field(default="")
dsis: int = Field(default=0)
guid: str = Field(default="")
password_token: str = Field(default="", alias="passwordToken")
# 泛型
DataT = TypeVar("DataT")
class AppleSixResponseModel(BaseModel, Generic[DataT]):
Code: str = Field(default="")
Message: str = Field(default="")
Data: DataT = Field()
serverIndex: int = Field(default=0)
extend: str = Field(default="")
authenUserInfo: str = Field(default="")
platformName: str = Field(default="")