request
core.request
请求描述符与批量请求容器. 提供对 API 请求的抽象与调度.
Request
dataclass
Request(
*,
_client: Client,
module: str,
method: str,
param: dict[str, Any] | dict[int, Any],
response_model: type[BaseModel] | None = None,
comm: dict[str, int | str | bool] | None = None,
is_jce: bool = False,
preserve_bool: bool = False,
credential: Credential | None = None,
platform: Platform | None = None,
)
Bases: Generic[RequestResultT]
请求描述符.
replace
返回一个应用了修改的新 Request 对象, 不会修改原对象.
Source code in qqmusic_api/core/request.py
PaginatedRequest
dataclass
PaginatedRequest(
pager_meta: PagerMeta,
*,
_client: Client,
module: str,
method: str,
param: dict[str, Any] | dict[int, Any],
response_model: type[BaseModel] | None = None,
comm: dict[str, int | str | bool] | None = None,
is_jce: bool = False,
preserve_bool: bool = False,
credential: Credential | None = None,
platform: Platform | None = None,
)
Bases: Request[RequestResultT]
声明了连续翻页能力的请求描述符.
get_pager_meta
get_pager_meta() -> PagerMeta
paginate
paginate(
limit: int | None = None,
) -> ResponsePager[RequestResultT]
返回响应的分页迭代器.
| PARAMETER | DESCRIPTION |
|---|---|
limit
|
最大获取页数.
TYPE:
|
RefreshableRequest
dataclass
RefreshableRequest(
refresh_meta: RefreshMeta,
*,
_client: Client,
module: str,
method: str,
param: dict[str, Any] | dict[int, Any],
response_model: type[BaseModel] | None = None,
comm: dict[str, int | str | bool] | None = None,
is_jce: bool = False,
preserve_bool: bool = False,
credential: Credential | None = None,
platform: Platform | None = None,
)
Bases: Request[RequestResultT]
声明了换一批能力的请求描述符.
get_refresh_meta
get_refresh_meta() -> RefreshMeta
refresh
refresh() -> ResponseRefresher[RequestResultT]
RequestGroupResult
dataclass
RequestGroupResult(
index: int,
module: str,
method: str,
success: bool,
data: RequestResult | None = None,
error: Exception | None = None,
)
批量请求中的单条结果.
RequestGroup
dataclass
RequestGroup(
_client: Client,
batch_size: int = 20,
max_inflight_batches: int = 5,
_requests: list[Request[Any]] = list(),
_grouped_requests: dict[
BaseGroupKey, list[tuple[int, Request[Any]]]
] = dict(),
)
批量请求容器.
会按请求的 platform、credential、comm 和 is_jce 自动分组,
并按 batch_size 自动分批发送.
add
add(request: Request[Any]) -> RequestGroup
添加请求.
| PARAMETER | DESCRIPTION |
|---|---|
request
|
待执行的请求描述符. |
| RETURNS | DESCRIPTION |
|---|---|
RequestGroup
|
当前 RequestGroup, 用于链式调用. |
Source code in qqmusic_api/core/request.py
extend
extend(requests: list[Request[Any]]) -> RequestGroup
批量添加请求.
| PARAMETER | DESCRIPTION |
|---|---|
requests
|
待执行请求列表. |
| RETURNS | DESCRIPTION |
|---|---|
RequestGroup
|
当前 RequestGroup, 用于链式调用. |
execute
async
执行当前批量请求并返回混合结果列表.
| RETURNS | DESCRIPTION |
|---|---|
list[RequestResult | Exception]
|
list[RequestResult | Exception]: 与请求添加顺序一致的结果列表. |
list[RequestResult | Exception]
|
成功项为响应数据, 失败项为异常对象. |
Source code in qqmusic_api/core/request.py
execute_iter
async
execute_iter() -> AsyncIterator[RequestGroupResult]
执行当前批量请求并按完成先后流式返回结果.