pagination
core.pagination
分页与换一批核心组件定义.
ResponseAdapter
ResponseAdapter(
has_more_flag: str
| Callable[[Any], bool]
| None = None,
total: str | Callable[[Any], int] | None = None,
cursor: str | Callable[[Any], Any] | None = None,
count: str | Callable[[Any], int] | None = None,
)
响应提取器, 负责从响应中提取迭代所需的核心数据.
初始化响应提取器.
| PARAMETER | DESCRIPTION |
|---|---|
has_more_flag
|
是否还有更多数据的标志位提取方式. |
total
|
总数提取方式. |
cursor
|
下一页游标或下一批刷新参数提取方式. |
count
|
当前页实际返回数量提取方式. |
Source code in qqmusic_api/core/pagination.py
get_has_more_flag
get_total
get_cursor
BaseIteratorStrategy
Bases: ABC
迭代策略基类.
has_next
abstractmethod
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还能继续迭代.
| PARAMETER | DESCRIPTION |
|---|---|
params
|
当前请求参数.
TYPE:
|
response
|
当前响应数据.
TYPE:
|
adapter
|
响应适配器.
TYPE:
|
next_params
abstractmethod
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
计算并返回下一次请求使用的全新参数字典.
| PARAMETER | DESCRIPTION |
|---|---|
params
|
当前请求参数.
TYPE:
|
response
|
当前响应数据.
TYPE:
|
adapter
|
响应适配器.
TYPE:
|
Source code in qqmusic_api/core/pagination.py
PagerStrategy
RefresherStrategy
PageStrategy
Bases: PagerStrategy
基于页码的翻页策略.
初始化页码策略.
| PARAMETER | DESCRIPTION |
|---|---|
page_key
|
页码参数名. |
page_size
|
每页条数。仅在需要根据总数推导下一页时必填。
TYPE:
|
start_page
|
起始页码.
TYPE:
|
Source code in qqmusic_api/core/pagination.py
has_next
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还有下一页.
Source code in qqmusic_api/core/pagination.py
next_params
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
计算下一页参数.
Source code in qqmusic_api/core/pagination.py
OffsetStrategy
OffsetStrategy(
offset_key: str | int,
*,
page_size_key: str | int | None = None,
page_size: int | None = None,
start_offset: int = 0,
)
Bases: PagerStrategy
基于偏移量窗口的翻页策略.
初始化偏移量策略.
| PARAMETER | DESCRIPTION |
|---|---|
offset_key
|
偏移量参数名. |
page_size_key
|
每页条数参数名. |
page_size
|
固定每页条数.
TYPE:
|
start_offset
|
起始偏移量.
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
当 page_size_key 和 page_size 同时缺失时抛出. |
Source code in qqmusic_api/core/pagination.py
has_next
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还有下一页.
Source code in qqmusic_api/core/pagination.py
next_params
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
计算下一页参数.
Source code in qqmusic_api/core/pagination.py
BatchRefreshStrategy
Bases: RefresherStrategy
基于上一批结果标记换一批内容的策略.
初始化换一批策略.
| PARAMETER | DESCRIPTION |
|---|---|
refresh_key
|
下一次请求需要替换的参数名。 |
Source code in qqmusic_api/core/pagination.py
has_next
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还能继续换一批.
Source code in qqmusic_api/core/pagination.py
next_params
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
计算下一批请求参数.
Source code in qqmusic_api/core/pagination.py
CursorStrategy
Bases: PagerStrategy
基于响应游标回写的翻页策略.
初始化游标策略.
| PARAMETER | DESCRIPTION |
|---|---|
cursor_key
|
下一页游标写回的请求参数名. |
Source code in qqmusic_api/core/pagination.py
has_next
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还有下一页.
Source code in qqmusic_api/core/pagination.py
next_params
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
计算下一页参数.
Source code in qqmusic_api/core/pagination.py
MultiFieldContinuationStrategy
MultiFieldContinuationStrategy(
build_next_params: NextParamsBuilder,
*,
context_name: str = "continuation",
)
Bases: PagerStrategy
基于多字段 continuation 更新的翻页策略.
初始化多字段 continuation 策略.
| PARAMETER | DESCRIPTION |
|---|---|
build_next_params
|
根据当前请求与响应构造下一页完整参数的函数.
TYPE:
|
context_name
|
错误上下文中的策略名称.
TYPE:
|
Source code in qqmusic_api/core/pagination.py
has_next
has_next(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> bool
判断是否还有下一页.
Source code in qqmusic_api/core/pagination.py
next_params
next_params(
params: PaginationParams,
response: Any,
adapter: ResponseAdapter,
) -> PaginationParams
RefreshMeta
dataclass
RefreshMeta(
strategy: RefresherStrategy, adapter: ResponseAdapter
)
换一批元数据声明.
ResponsePager
ResponsePager(
initial_request: PaginatedRequest[RequestResultT],
limit: int | None = None,
)
Bases: _BaseResponseAdvancer[RequestResultT], AsyncIterator[RequestResultT]
按页消费请求结果的异步分页器.
初始化分页器.
| PARAMETER | DESCRIPTION |
|---|---|
initial_request
|
已声明连续翻页元数据的初始请求对象.
TYPE:
|
limit
|
最多返回的页数。传
TYPE:
|
Source code in qqmusic_api/core/pagination.py
next
async
ResponseRefresher
ResponseRefresher(
initial_request: RefreshableRequest[RequestResultT],
)
Bases: _BaseResponseAdvancer[RequestResultT]
按需请求下一批结果的换一批器.
初始化换一批器.
| PARAMETER | DESCRIPTION |
|---|---|
initial_request
|
已声明换一批元数据的初始请求对象。
TYPE:
|