跳转至

login

models.login

登录相关数据模型与状态枚举.

QRCodeLoginEvents

Bases: Enum

二维码登录流程中的状态事件.

  • DONE: 登录完成,携带凭证信息.
  • SCAN: 二维码未被扫描,等待扫描中.
  • CONF: 二维码已被扫描,等待确认中.
  • TIMEOUT: 二维码过期或登录超时.
  • REFUSE: 用户拒绝登录.

get_by_value classmethod

get_by_value(value: int) -> QRCodeLoginEvents

根据状态码获取二维码登录事件.

PARAMETER DESCRIPTION
value

二维码状态码.

TYPE: int

RETURNS DESCRIPTION
QRCodeLoginEvents

对应的登录事件成员.

TYPE: QRCodeLoginEvents

RAISES DESCRIPTION
ValueError

二维码状态码无法识别.

Source code in qqmusic_api/models/login.py
@classmethod
def get_by_value(cls, value: int) -> "QRCodeLoginEvents":
    """根据状态码获取二维码登录事件.

    Args:
        value: 二维码状态码.

    Returns:
        QRCodeLoginEvents: 对应的登录事件成员.

    Raises:
        ValueError: 二维码状态码无法识别.
    """
    for member in cls:
        if value in member.value:
            return member
    raise ValueError(f"无法识别的二维码登录状态码: {value}")

PhoneLoginEvents

Bases: Enum

手机验证码登录状态.

  • SEND: 验证码已发送.
  • CAPTCHA: 需要滑块验证.
  • FREQUENCY: 请求过于频繁,请稍后再试.

PhoneAuthCodeResult dataclass

PhoneAuthCodeResult(
    event: PhoneLoginEvents, info: str | None = None
)

手机验证码发送接口的结果对象.

QRLoginType

Bases: Enum

二维码登录类型枚举.

QR dataclass

QR(
    data: bytes,
    qr_type: QRLoginType,
    mimetype: str,
    identifier: str,
)

二维码信息.

save

save(path: Path | str = '.') -> Path | None

将二维码保存到本地目录.

PARAMETER DESCRIPTION
path

保存目录路径. 默认为当前目录.

TYPE: Path | str DEFAULT: '.'

RETURNS DESCRIPTION
Path | None

Path | None: 成功保存后的文件路径. 若无数据则返回 None.

Source code in qqmusic_api/models/login.py
def save(self, path: Path | str = ".") -> Path | None:
    """将二维码保存到本地目录.

    Args:
        path: 保存目录路径. 默认为当前目录.

    Returns:
        Path | None: 成功保存后的文件路径. 若无数据则返回 None.
    """
    if not self.data:
        return None

    directory = Path(path)
    directory.mkdir(parents=True, exist_ok=True)
    ext = mimetypes.guess_extension(self.mimetype) if self.mimetype else None
    file_path = directory / f"{self.qr_type.value}-{uuid4()}{ext or '.png'}"
    file_path.write_bytes(self.data)
    return file_path

QRLoginResult dataclass

QRLoginResult(
    event: QRCodeLoginEvents,
    credential: Credential | None = None,
)

二维码登录流程中的单次结果对象.

done property

done: bool

返回当前结果是否表示登录完成.