@kyun.si/codex-hongguo 0.0.0-stage → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codex-plugin/plugin.json +19 -0
- package/.mcp.json +11 -0
- package/LICENSE +21 -0
- package/README.en.md +131 -0
- package/README.md +129 -2
- package/bin/codex-hongguo.mjs +3 -0
- package/bin/run-node +29 -0
- package/bin/run-node.exe +0 -0
- package/dist/cli/main.mjs +8 -0
- package/dist/hooks/write.mjs +46 -0
- package/dist/server/index.mjs +147 -0
- package/dist/setup/check.mjs +47 -0
- package/dist/ui/player.html +2067 -0
- package/dist/vendor/openhongguo/GO_LICENSE +27 -0
- package/dist/vendor/openhongguo/LICENSE +202 -0
- package/dist/vendor/openhongguo/README.md +283 -0
- package/dist/vendor/openhongguo/dist/openhongguo.wasm +0 -0
- package/dist/vendor/openhongguo/dist/wasm_exec.js +575 -0
- package/dist/vendor/openhongguo/index.d.ts +212 -0
- package/dist/vendor/openhongguo/index.js +297 -0
- package/dist/vendor/openhongguo/package.json +46 -0
- package/dist/vendor/openhongguo/types.d.ts +887 -0
- package/docs/images/codex-hongguo-catalog.png +0 -0
- package/docs/images/codex-hongguo-player.png +0 -0
- package/hooks/hooks.json +40 -0
- package/licenses/@babel-runtime-LICENSE +22 -0
- package/licenses/@hono-node-server-LICENSE +21 -0
- package/licenses/@modelcontextprotocol-ext-apps-LICENSE +216 -0
- package/licenses/@modelcontextprotocol-sdk-LICENSE +21 -0
- package/licenses/@standard-schema-spec-LICENSE +21 -0
- package/licenses/@videojs-vhs-utils-LICENSE +19 -0
- package/licenses/@xmldom-xmldom-LICENSE +8 -0
- package/licenses/PROJECT-NOTICE.txt +1 -0
- package/licenses/accepts-LICENSE +23 -0
- package/licenses/ajv-LICENSE +22 -0
- package/licenses/ajv-formats-LICENSE +21 -0
- package/licenses/body-parser-LICENSE +23 -0
- package/licenses/body-parser-content-type-LICENSE +22 -0
- package/licenses/bytes-LICENSE +23 -0
- package/licenses/call-bind-apply-helpers-LICENSE +21 -0
- package/licenses/call-bound-LICENSE +21 -0
- package/licenses/content-disposition-LICENSE +22 -0
- package/licenses/content-type-LICENSE +22 -0
- package/licenses/cookie-LICENSE +24 -0
- package/licenses/cookie-signature-LICENSE +22 -0
- package/licenses/cors-LICENSE +22 -0
- package/licenses/cross-spawn-LICENSE +21 -0
- package/licenses/debug-LICENSE +20 -0
- package/licenses/depd-LICENSE +22 -0
- package/licenses/dom-walk-LICENCE +19 -0
- package/licenses/dunder-proto-LICENSE +21 -0
- package/licenses/ee-first-LICENSE +22 -0
- package/licenses/encodeurl-LICENSE +22 -0
- package/licenses/es-define-property-LICENSE +21 -0
- package/licenses/es-errors-LICENSE +21 -0
- package/licenses/es-object-atoms-LICENSE +21 -0
- package/licenses/escape-html-LICENSE +24 -0
- package/licenses/etag-LICENSE +22 -0
- package/licenses/eventsource-LICENSE +22 -0
- package/licenses/eventsource-parser-LICENSE +21 -0
- package/licenses/express-LICENSE +24 -0
- package/licenses/express-content-type-LICENSE +22 -0
- package/licenses/express-rate-limit-license +21 -0
- package/licenses/fast-deep-equal-LICENSE +21 -0
- package/licenses/fast-uri-LICENSE +30 -0
- package/licenses/finalhandler-LICENSE +22 -0
- package/licenses/forwarded-LICENSE +22 -0
- package/licenses/fresh-LICENSE +23 -0
- package/licenses/function-bind-LICENSE +20 -0
- package/licenses/get-intrinsic-LICENSE +21 -0
- package/licenses/get-proto-LICENSE +21 -0
- package/licenses/global-LICENSE +19 -0
- package/licenses/gopd-LICENSE +21 -0
- package/licenses/has-symbols-LICENSE +21 -0
- package/licenses/hasown-LICENSE +21 -0
- package/licenses/hls.js-LICENSE +28 -0
- package/licenses/hono-LICENSE +21 -0
- package/licenses/http-errors-LICENSE +23 -0
- package/licenses/iconv-lite-LICENSE +21 -0
- package/licenses/inherits-LICENSE +16 -0
- package/licenses/ip-address-LICENSE +19 -0
- package/licenses/ipaddr.js-LICENSE +19 -0
- package/licenses/is-promise-LICENSE +19 -0
- package/licenses/isexe-LICENSE +15 -0
- package/licenses/jose-LICENSE.md +21 -0
- package/licenses/json-schema-traverse-LICENSE +21 -0
- package/licenses/json-schema-typed-LICENSE.md +57 -0
- package/licenses/m3u8-parser-LICENSE +13 -0
- package/licenses/math-intrinsics-LICENSE +21 -0
- package/licenses/media-typer-LICENSE +22 -0
- package/licenses/merge-descriptors-license +11 -0
- package/licenses/mime-db-LICENSE +23 -0
- package/licenses/mime-types-LICENSE +23 -0
- package/licenses/min-document-LICENCE +19 -0
- package/licenses/mpd-parser-LICENSE +13 -0
- package/licenses/ms-license.md +21 -0
- package/licenses/negotiator-LICENSE +24 -0
- package/licenses/negotiator-content-type-LICENSE +22 -0
- package/licenses/object-assign-license +21 -0
- package/licenses/object-inspect-LICENSE +21 -0
- package/licenses/on-finished-LICENSE +23 -0
- package/licenses/once-LICENSE +15 -0
- package/licenses/openhongguo-LICENSE +202 -0
- package/licenses/parseurl-LICENSE +24 -0
- package/licenses/path-key-license +9 -0
- package/licenses/path-to-regexp-LICENSE +21 -0
- package/licenses/pkce-challenge-LICENSE +21 -0
- package/licenses/process-LICENSE +22 -0
- package/licenses/proxy-addr-LICENSE +22 -0
- package/licenses/qs-LICENSE.md +29 -0
- package/licenses/range-parser-LICENSE +23 -0
- package/licenses/raw-body-LICENSE +22 -0
- package/licenses/require-from-string-license +21 -0
- package/licenses/router-LICENSE +23 -0
- package/licenses/safer-buffer-LICENSE +21 -0
- package/licenses/send-LICENSE +23 -0
- package/licenses/serve-static-LICENSE +25 -0
- package/licenses/setprototypeof-LICENSE +13 -0
- package/licenses/shebang-command-license +9 -0
- package/licenses/shebang-regex-license +9 -0
- package/licenses/side-channel-LICENSE +21 -0
- package/licenses/side-channel-list-LICENSE +21 -0
- package/licenses/side-channel-map-LICENSE +21 -0
- package/licenses/side-channel-weakmap-LICENSE +21 -0
- package/licenses/statuses-LICENSE +23 -0
- package/licenses/toidentifier-LICENSE +21 -0
- package/licenses/type-is-LICENSE +23 -0
- package/licenses/type-is-content-type-LICENSE +22 -0
- package/licenses/unpipe-LICENSE +22 -0
- package/licenses/vary-LICENSE +22 -0
- package/licenses/which-LICENSE +15 -0
- package/licenses/wrappy-LICENSE +15 -0
- package/licenses/zod-LICENSE +21 -0
- package/licenses/zod-to-json-schema-LICENSE +15 -0
- package/package.json +37 -4
- package/skills/hongguo-setup/SKILL.md +16 -0
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
// 由 go run ./bindings/node/tsgen 生成,请勿手工修改。
|
|
2
|
+
// 返回值的字段名与 Go SDK 的 JSON 一致(如 has_more、cover_url);
|
|
3
|
+
// 查询参数用驼峰(如 pageSize)。
|
|
4
|
+
|
|
5
|
+
/** Page 是一页匿名结果。 */
|
|
6
|
+
export interface Page<T> {
|
|
7
|
+
items: T[];
|
|
8
|
+
cursor?: string;
|
|
9
|
+
has_more: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Album 是多季的合集,来自 /novel/player/album_detail/v1/。
|
|
14
|
+
*/
|
|
15
|
+
export interface Album {
|
|
16
|
+
id: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
cover_url?: string;
|
|
20
|
+
cover_expires_at?: string;
|
|
21
|
+
season_count?: number;
|
|
22
|
+
seasons?: Season[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* CategoryPage 是一个分类落地页及其筛选项。
|
|
27
|
+
*/
|
|
28
|
+
export interface CategoryPage {
|
|
29
|
+
category_id?: string;
|
|
30
|
+
category_name?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
filters?: FilterGroup[];
|
|
33
|
+
/**
|
|
34
|
+
* Tabs 是受众标签页(全部、男生、女生),每个 Value 是标签页类型编号;
|
|
35
|
+
* DefaultTab 是页面打开时所在的标签页类型。
|
|
36
|
+
*/
|
|
37
|
+
tabs?: FilterOption[];
|
|
38
|
+
default_tab?: number;
|
|
39
|
+
items: SeriesSummary[];
|
|
40
|
+
has_more: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* NextOffset 是下一页的偏移量,即 LandingOptions.Cursor 的值。
|
|
43
|
+
*/
|
|
44
|
+
next_offset?: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* ContentKey 是受保护播放模型的 CENC(cenc-aes-ctr)内容密钥,
|
|
49
|
+
* 由 sdk.ContentKey 还原。
|
|
50
|
+
*/
|
|
51
|
+
export interface ContentKey {
|
|
52
|
+
/**
|
|
53
|
+
* Hex 是 16 字节 AES 密钥的小写十六进制形式,
|
|
54
|
+
* 即 ffmpeg 的 -decryption_key 和播放器的 ClearKey 配置接受的形式。
|
|
55
|
+
*/
|
|
56
|
+
key: string;
|
|
57
|
+
/**
|
|
58
|
+
* Version 是播放器在密钥旁读取的方案标记。
|
|
59
|
+
*/
|
|
60
|
+
version?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* ContentType 是视频的 content_type,
|
|
65
|
+
* 取自 com.dragon.read.rpc.model.VideoContentType。
|
|
66
|
+
* 官方 App 的枚举混用小数值和从 1000 起的一段数值;这里两者都复现。
|
|
67
|
+
*
|
|
68
|
+
* 取值:
|
|
69
|
+
* - ContentUnknown = 0
|
|
70
|
+
* - ContentShortSeries = 1:真人短剧
|
|
71
|
+
* - ContentScenePlay = 2:场景剧
|
|
72
|
+
* - ContentExpertRecommend = 3:专家荐书
|
|
73
|
+
* - ContentPPTRecommend = 4:PPT 荐书
|
|
74
|
+
* - ContentMovie = 5:电影
|
|
75
|
+
* - ContentTelePlay = 6:电视剧
|
|
76
|
+
* - ContentShortPlay = 7:短剧
|
|
77
|
+
* - ContentDropMaterial = 1000:投放素材
|
|
78
|
+
* - ContentPUGC = 1001:PUGC
|
|
79
|
+
* - ContentUnrealShortPlay = 1002:虚拍短剧
|
|
80
|
+
* - ContentAlbum = 1003:合集
|
|
81
|
+
* - ContentMotionComic = 1004:漫剧(动态漫)
|
|
82
|
+
*/
|
|
83
|
+
export type ContentType = number;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Device 是匿名身份出示的手机。注册请求体、
|
|
87
|
+
* 每个请求的设备参数和 User-Agent 都描述它,所以一个设备 id 始终对应一个机型。
|
|
88
|
+
*/
|
|
89
|
+
export interface Device {
|
|
90
|
+
/**
|
|
91
|
+
* Brand 是 device_brand,也是制造商("Xiaomi");Model 是机型代号,
|
|
92
|
+
* 作为 device_type、device_model 发送,也写进 User-Agent("23127PN0CC")。
|
|
93
|
+
*/
|
|
94
|
+
brand: string;
|
|
95
|
+
model: string;
|
|
96
|
+
/**
|
|
97
|
+
* OSVersion 是 Android 版本("14"),OSAPI 是其 API 级别(34),
|
|
98
|
+
* Build 是 User-Agent 携带的构建 id("UKQ1.230804.001")。
|
|
99
|
+
*/
|
|
100
|
+
os_version: string;
|
|
101
|
+
os_api: number;
|
|
102
|
+
build: string;
|
|
103
|
+
/**
|
|
104
|
+
* Resolution 是 "height*width",单位是像素;DPI 是屏幕密度,
|
|
105
|
+
* 单位是每英寸点数。
|
|
106
|
+
*/
|
|
107
|
+
resolution: string;
|
|
108
|
+
dpi: number;
|
|
109
|
+
/**
|
|
110
|
+
* Pad 让设备以平板身份出现(dragon_device_type=pad)。
|
|
111
|
+
*/
|
|
112
|
+
pad?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Channel 是 App 构建上报的分发渠道("xiaomi_8662_64" 来自小米应用商店)。
|
|
115
|
+
*/
|
|
116
|
+
channel: string;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Episode 是一个公开列出的分集。Number 对调用方从 1 开始。
|
|
121
|
+
*/
|
|
122
|
+
export interface Episode {
|
|
123
|
+
id: string;
|
|
124
|
+
series_id: string;
|
|
125
|
+
number: number;
|
|
126
|
+
title?: string;
|
|
127
|
+
/**
|
|
128
|
+
* 服务端禁止播放该分集时,Playable 为 false(video_list[].disable_play)。
|
|
129
|
+
*/
|
|
130
|
+
playable: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Vertical 标记竖屏画幅的分集。
|
|
133
|
+
*/
|
|
134
|
+
vertical?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* IsNew 标记本次更新中发布的分集。
|
|
137
|
+
*/
|
|
138
|
+
is_new?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* CoverURL 是分集剧照;CoverExpiresAt 是它的签名过期时间。
|
|
141
|
+
*/
|
|
142
|
+
cover_url?: string;
|
|
143
|
+
cover_expires_at?: string;
|
|
144
|
+
/**
|
|
145
|
+
* ContentType 与 Series.ContentType 是同一枚举。
|
|
146
|
+
*/
|
|
147
|
+
content_type?: ContentType;
|
|
148
|
+
/**
|
|
149
|
+
* CommentCount 和 DiggCount 是分集的计数。
|
|
150
|
+
*/
|
|
151
|
+
comment_count?: number;
|
|
152
|
+
digg_count?: number;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* FilterGroup 是一个筛选维度(状态、排序、子分类、篇幅)。
|
|
157
|
+
*/
|
|
158
|
+
export interface FilterGroup {
|
|
159
|
+
/**
|
|
160
|
+
* Key 是该组设置的查询参数,例如 sort_by。
|
|
161
|
+
*/
|
|
162
|
+
key: string;
|
|
163
|
+
options: FilterOption[];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* FilterOption 是分类页上的一个可选值。
|
|
168
|
+
*/
|
|
169
|
+
export interface FilterOption {
|
|
170
|
+
/**
|
|
171
|
+
* Name 是显示的标签;Value 是查询选中它时发送的值。
|
|
172
|
+
*/
|
|
173
|
+
name: string;
|
|
174
|
+
value: string;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* FilterRow 是短剧筛选页的一个选择行。Key 是该行的 select_items 键(genre、
|
|
179
|
+
* category_dim_theme、category_dim_role、category_dim_epoch、sort、gender、
|
|
180
|
+
* online_time、creation_status);选项的 Value 是查询所选的值。
|
|
181
|
+
* 有哪些行取决于 genre。
|
|
182
|
+
*/
|
|
183
|
+
export interface FilterRow {
|
|
184
|
+
key: string;
|
|
185
|
+
name: string;
|
|
186
|
+
options: FilterOption[];
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* HotBoard 是一个热榜。作品榜(短剧热搜榜、漫剧热搜榜、短剧新剧榜)填充 Items;
|
|
191
|
+
* 热点话题榜填充 Topics。出现哪些榜单因调用而异。
|
|
192
|
+
*/
|
|
193
|
+
export interface HotBoard {
|
|
194
|
+
name: string;
|
|
195
|
+
items?: HotItem[];
|
|
196
|
+
topics?: HotTopic[];
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* HotItem 是热榜上的一部作品,按榜单顺序排列。
|
|
201
|
+
*/
|
|
202
|
+
export interface HotItem {
|
|
203
|
+
/**
|
|
204
|
+
* Position 是在榜单上的名次,从 1 开始。
|
|
205
|
+
*/
|
|
206
|
+
position: number;
|
|
207
|
+
series_id: string;
|
|
208
|
+
title: string;
|
|
209
|
+
cover_url?: string;
|
|
210
|
+
cover_expires_at?: string;
|
|
211
|
+
episode_count?: number;
|
|
212
|
+
content_type?: ContentType;
|
|
213
|
+
/**
|
|
214
|
+
* SearchScore 是榜单自己的数值("355万热搜值",有时带 "·第1季");
|
|
215
|
+
* Heat 是作品的总热度("4102万热度")。
|
|
216
|
+
*/
|
|
217
|
+
search_score?: string;
|
|
218
|
+
heat?: string;
|
|
219
|
+
/**
|
|
220
|
+
* Tag 是角标,例如新剧。
|
|
221
|
+
*/
|
|
222
|
+
tag?: string;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* HotSearch 是查询前的搜索页:猜你想搜一行,以及其下的热榜。
|
|
227
|
+
*/
|
|
228
|
+
export interface HotSearch {
|
|
229
|
+
guesses?: HotItem[];
|
|
230
|
+
boards?: HotBoard[];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* HotTopic 是热点话题榜的一项。Query 是它打开的搜索。
|
|
235
|
+
*/
|
|
236
|
+
export interface HotTopic {
|
|
237
|
+
id: string;
|
|
238
|
+
title: string;
|
|
239
|
+
query?: string;
|
|
240
|
+
heat?: string;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* InfoKind 是 secondary_infos[].data_type,
|
|
245
|
+
* 取自 com.dragon.read.rpc.model.SecondaryInfoDataType。
|
|
246
|
+
*
|
|
247
|
+
* 取值:
|
|
248
|
+
* - InfoSeasonOrder = 0:InfoSeasonOrder 是 "第 N 季" 那一行(实测值为 0)。
|
|
249
|
+
* - InfoRecommendReason = 1:InfoRecommendReason 是推荐理由。
|
|
250
|
+
* - InfoRankScore = 2:InfoRankScore 是榜单名次。
|
|
251
|
+
* - InfoCategory = 3:InfoCategory 是分类标签,例如 "末世"(实测值为 3)。
|
|
252
|
+
* - InfoScore = 4:InfoScore 是用户评分。
|
|
253
|
+
* - InfoAuthorName = 8:InfoAuthorName 是作者名。
|
|
254
|
+
* - InfoTags = 9:InfoTags 是标签列表。
|
|
255
|
+
* - InfoCreationStatus = 11:InfoCreationStatus 是连载中或已完结的说明。
|
|
256
|
+
* - InfoTwoActors = 33:InfoTwoActors 是演员行 "演员·A B"(实测值为 33)。
|
|
257
|
+
* - InfoPlotTag = 40:InfoPlotTag 是剧情标签。
|
|
258
|
+
*/
|
|
259
|
+
export type InfoKind = number;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* InfoRow 是 secondary_infos 的一项:详情页上带标签的一行。
|
|
263
|
+
*/
|
|
264
|
+
export interface InfoRow {
|
|
265
|
+
kind: InfoKind;
|
|
266
|
+
text: string;
|
|
267
|
+
/**
|
|
268
|
+
* Schema 是该行打开的应用内链接(如果有)。
|
|
269
|
+
*/
|
|
270
|
+
schema?: string;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* NewRelease 是上新日历中的一部作品:已上线(Online),
|
|
275
|
+
* 或已预告在 PublishAt 上线。
|
|
276
|
+
*/
|
|
277
|
+
export interface NewRelease {
|
|
278
|
+
series_id: string;
|
|
279
|
+
title: string;
|
|
280
|
+
description?: string;
|
|
281
|
+
cover_url?: string;
|
|
282
|
+
cover_expires_at?: string;
|
|
283
|
+
episode_count?: number;
|
|
284
|
+
/**
|
|
285
|
+
* 作品已上线时 Online 为 true;PublishAt 是预告作品的上线时间。
|
|
286
|
+
*/
|
|
287
|
+
online: boolean;
|
|
288
|
+
publish_at?: string;
|
|
289
|
+
categories?: string[];
|
|
290
|
+
/**
|
|
291
|
+
* 已上线的作品 Heat 形如 "378万热度",预告作品形如 "159.7万人预约";
|
|
292
|
+
* Note 是预告文案("预计10月26日上线")。
|
|
293
|
+
*/
|
|
294
|
+
heat?: string;
|
|
295
|
+
note?: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* NewReleasePage 是上新日历中的一天。
|
|
300
|
+
*/
|
|
301
|
+
export interface NewReleasePage {
|
|
302
|
+
/**
|
|
303
|
+
* Date 是本次返回的日期(YYYYMMDD);Dates 是日历提供的日期,
|
|
304
|
+
* 即今天前后各一周。
|
|
305
|
+
*/
|
|
306
|
+
date?: string;
|
|
307
|
+
dates?: string[];
|
|
308
|
+
items: NewRelease[];
|
|
309
|
+
has_more: boolean;
|
|
310
|
+
cursor?: string;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Novel 是短剧改编自的小说。
|
|
315
|
+
*/
|
|
316
|
+
export interface Novel {
|
|
317
|
+
book_id: string;
|
|
318
|
+
/**
|
|
319
|
+
* Title 是小说本身的名称;ShortTitle 是它与短剧共用的名称。
|
|
320
|
+
*/
|
|
321
|
+
title: string;
|
|
322
|
+
short_title?: string;
|
|
323
|
+
status: NovelStatus;
|
|
324
|
+
tags?: string[];
|
|
325
|
+
reads?: number;
|
|
326
|
+
cover_url?: string;
|
|
327
|
+
cover_expires_at?: string;
|
|
328
|
+
/**
|
|
329
|
+
* ShowAtEpisode 是播放器推荐该小说时所在的集数。
|
|
330
|
+
*/
|
|
331
|
+
show_at_episode?: number;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* NovelStatus 是客户端的 NovelCreationStatus;未给出时为 -1。
|
|
336
|
+
*
|
|
337
|
+
* 取值:
|
|
338
|
+
* - NovelFinished = 0:已完结
|
|
339
|
+
* - NovelOngoing = 1:连载中
|
|
340
|
+
* - NovelUpdatedToday = 3:今日更新
|
|
341
|
+
*/
|
|
342
|
+
export type NovelStatus = number;
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* PayType 是 pay_info.pay_type,取自 com.dragon.read.rpc.model.VideoPayType。
|
|
346
|
+
*
|
|
347
|
+
* 取值:
|
|
348
|
+
* - PayFree = 0:PayFree 表示无需账号即可观看。
|
|
349
|
+
* - PayVip = 1:PayVip 表示需要订阅。
|
|
350
|
+
* - PaySingle = 2:PaySingle 表示需要单次购买。
|
|
351
|
+
*/
|
|
352
|
+
export type PayType = number;
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Person 是演员或角色的主页。
|
|
356
|
+
*/
|
|
357
|
+
export interface Person {
|
|
358
|
+
user_id: string;
|
|
359
|
+
name: string;
|
|
360
|
+
description?: string;
|
|
361
|
+
avatar_url?: string;
|
|
362
|
+
/**
|
|
363
|
+
* Tags 是主页上的头衔("女演员"、"虚拟人物");
|
|
364
|
+
* Labels 是名字下方的小徽标("水瓶座")。
|
|
365
|
+
*/
|
|
366
|
+
tags?: string[];
|
|
367
|
+
labels?: string[];
|
|
368
|
+
/**
|
|
369
|
+
* Followers 是粉丝数;Likes 是获赞数。
|
|
370
|
+
*/
|
|
371
|
+
followers?: number;
|
|
372
|
+
likes?: number;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* PlatformType 是 video_platform,
|
|
377
|
+
* 取自 com.dragon.read.rpc.model.VideoPlatformType。
|
|
378
|
+
*
|
|
379
|
+
* 取值:
|
|
380
|
+
* - PlatformUnknown = 0:未知;有声书带此值
|
|
381
|
+
* - PlatformDouyin = 1:抖音
|
|
382
|
+
* - PlatformUGCVideo = 2:UGC 视频
|
|
383
|
+
* - PlatformOuter = 3:站外与自制短剧
|
|
384
|
+
* - PlatformXigua = 4:西瓜视频,电影来自这里
|
|
385
|
+
* - PlatformChameleon = 5:Chameleon
|
|
386
|
+
* - PlatformMixed = 1024:混合来源
|
|
387
|
+
*/
|
|
388
|
+
export type PlatformType = number;
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Playback 是一个已解析的匿名媒体模型。它描述服务端提供的内容,
|
|
392
|
+
* 从不携带解密密钥或许可证材料。
|
|
393
|
+
*/
|
|
394
|
+
export interface Playback {
|
|
395
|
+
episode_id: string;
|
|
396
|
+
/**
|
|
397
|
+
* VideoID 是分集背后的媒体 id。
|
|
398
|
+
*/
|
|
399
|
+
video_id?: string;
|
|
400
|
+
/**
|
|
401
|
+
* MediaType 是服务端的媒体类型,例如 "video"。
|
|
402
|
+
*/
|
|
403
|
+
media_type?: string;
|
|
404
|
+
duration_seconds?: number;
|
|
405
|
+
/**
|
|
406
|
+
* ExpiresAt 是流 URL 失效的时间,单位是 unix 秒。
|
|
407
|
+
*/
|
|
408
|
+
expires_at?: number;
|
|
409
|
+
/**
|
|
410
|
+
* Protected 标记加密的分集;参见 Stream.Protected。
|
|
411
|
+
*/
|
|
412
|
+
protected: boolean;
|
|
413
|
+
streams: Stream[];
|
|
414
|
+
/**
|
|
415
|
+
* AudioURL 是分段(DASH)作品(如长片电影)的独立音轨。
|
|
416
|
+
* 单文件的表示形式留空。
|
|
417
|
+
*/
|
|
418
|
+
audio_url?: string;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* RankBoard 是某个榜单内容下的一个榜(推荐榜、热播榜……)。
|
|
423
|
+
*/
|
|
424
|
+
export interface RankBoard {
|
|
425
|
+
id: string;
|
|
426
|
+
name: string;
|
|
427
|
+
selected?: boolean;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* RankChange 是榜单行的变动(客户端中的 RankChangeType)。
|
|
432
|
+
*/
|
|
433
|
+
export interface RankChange {
|
|
434
|
+
kind: RankChangeKind;
|
|
435
|
+
/**
|
|
436
|
+
* Places 是该行变动的位数;新上榜或不变的行为 0。
|
|
437
|
+
*/
|
|
438
|
+
places?: number;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* RankChangeKind 的取值即客户端的 RankChangeType。
|
|
443
|
+
*
|
|
444
|
+
* 取值:
|
|
445
|
+
* - RankNew = 0:新上榜
|
|
446
|
+
* - RankUp = 1:上升 RankChange.Places 位
|
|
447
|
+
* - RankDown = 2:下降 RankChange.Places 位
|
|
448
|
+
* - RankUnchanged = 3:名次不变
|
|
449
|
+
*/
|
|
450
|
+
export type RankChangeKind = number;
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* RankContent 是短剧榜单页的一个内容
|
|
454
|
+
* (全部、真人剧、漫剧、AI剧、系列剧、演员),带有自己的各个榜。
|
|
455
|
+
*/
|
|
456
|
+
export interface RankContent {
|
|
457
|
+
id: string;
|
|
458
|
+
name: string;
|
|
459
|
+
selected?: boolean;
|
|
460
|
+
boards: RankBoard[];
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* RankItem 是榜单的一行。
|
|
465
|
+
*/
|
|
466
|
+
export interface RankItem {
|
|
467
|
+
/**
|
|
468
|
+
* Rank 是服务端给该行的名次(参见 Position)。
|
|
469
|
+
*/
|
|
470
|
+
rank?: number;
|
|
471
|
+
/**
|
|
472
|
+
* Votes 和 Kind 用于活动榜单行:分别是票数和服务端的条目类型,原样透传。
|
|
473
|
+
*/
|
|
474
|
+
votes?: number;
|
|
475
|
+
kind?: number;
|
|
476
|
+
/**
|
|
477
|
+
* Actor 在书籍榜单上是作者,在活动榜单或短剧演员榜上是演员名。
|
|
478
|
+
*/
|
|
479
|
+
actor?: string;
|
|
480
|
+
series_id?: string;
|
|
481
|
+
title?: string;
|
|
482
|
+
cover_url?: string;
|
|
483
|
+
/**
|
|
484
|
+
* Score 是显示的热度("2550万热度"、"998万推荐"、"平台推荐")。
|
|
485
|
+
*/
|
|
486
|
+
score?: string;
|
|
487
|
+
/**
|
|
488
|
+
* EpisodeCount 由短剧榜单填充。
|
|
489
|
+
*/
|
|
490
|
+
episode_count?: number;
|
|
491
|
+
/**
|
|
492
|
+
* Position 是该行在短剧榜单页上的名次,从 1 开始。Rank 是服务端自己的编号,
|
|
493
|
+
* 在推广行前后会重复,在推荐榜上是个性化的。
|
|
494
|
+
*/
|
|
495
|
+
position?: number;
|
|
496
|
+
/**
|
|
497
|
+
* Promoted 标记服务端插入短剧榜单的行:它显示 "平台推荐" 而非热度,
|
|
498
|
+
* 名次照抄下一行(实测)。
|
|
499
|
+
*/
|
|
500
|
+
promoted?: boolean;
|
|
501
|
+
/**
|
|
502
|
+
* ActorID、AvatarURL、Intro 和 Details 用于短剧榜单的演员行,
|
|
503
|
+
* 该行的 Actor 是名字,Score 是人气。Intro 列出作品;
|
|
504
|
+
* Details 存放 "67部作品" 这样的行。
|
|
505
|
+
*/
|
|
506
|
+
actor_id?: string;
|
|
507
|
+
/**
|
|
508
|
+
* UserID 是演员的账号,即 ActorProfile 和 ActorWorks 接受的 id。
|
|
509
|
+
*/
|
|
510
|
+
user_id?: string;
|
|
511
|
+
avatar_url?: string;
|
|
512
|
+
intro?: string;
|
|
513
|
+
details?: string[];
|
|
514
|
+
/**
|
|
515
|
+
* Change 是该行相对上一期榜单的变动(如果有)。
|
|
516
|
+
*/
|
|
517
|
+
change?: RankChange;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* RankList 是活动的一个榜单频道。
|
|
522
|
+
*/
|
|
523
|
+
export interface RankList {
|
|
524
|
+
id: string;
|
|
525
|
+
name?: string;
|
|
526
|
+
/**
|
|
527
|
+
* Type 和 Size 是服务端的榜单类型和长度,原样透传。
|
|
528
|
+
*/
|
|
529
|
+
type?: number;
|
|
530
|
+
size?: number;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Ranking 是一个活动榜单页。
|
|
535
|
+
*/
|
|
536
|
+
export interface Ranking {
|
|
537
|
+
list_name?: string;
|
|
538
|
+
/**
|
|
539
|
+
* Lists 是该活动的其他榜单频道。
|
|
540
|
+
*/
|
|
541
|
+
lists?: RankList[];
|
|
542
|
+
items: RankItem[];
|
|
543
|
+
has_more: boolean;
|
|
544
|
+
/**
|
|
545
|
+
* NextOffset 用于续取列表(RankRows 把它当作 offset);
|
|
546
|
+
* SessionID 是服务端上报的分页会话。
|
|
547
|
+
*/
|
|
548
|
+
next_offset?: number;
|
|
549
|
+
/**
|
|
550
|
+
* ActivityStage 和 CanVote 是服务端上报的活动状态。
|
|
551
|
+
*/
|
|
552
|
+
activity_stage?: number;
|
|
553
|
+
can_vote?: boolean;
|
|
554
|
+
session_id?: string;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* Recommend 是一部短剧的相关视频单元:包含各行、单元标题,
|
|
559
|
+
* 以及客户端为后续请求保留的分页会话。
|
|
560
|
+
*/
|
|
561
|
+
export interface Recommend {
|
|
562
|
+
cell_title?: string;
|
|
563
|
+
session_id?: string;
|
|
564
|
+
items: SeriesSummary[];
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Season 是合集(多季合集)中的一项。
|
|
569
|
+
*/
|
|
570
|
+
export interface Season {
|
|
571
|
+
series_id: string;
|
|
572
|
+
title?: string;
|
|
573
|
+
/**
|
|
574
|
+
* Index 是季序号,从 1 开始。
|
|
575
|
+
*/
|
|
576
|
+
index?: number;
|
|
577
|
+
cover_url?: string;
|
|
578
|
+
episode_count?: number;
|
|
579
|
+
status?: SeriesStatus;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Series 是一部短剧的详情视图。
|
|
584
|
+
*/
|
|
585
|
+
export interface Series extends SeriesSummary {
|
|
586
|
+
/**
|
|
587
|
+
* Status 是发布状态;PayType 是付费墙状态。
|
|
588
|
+
*/
|
|
589
|
+
status?: SeriesStatus;
|
|
590
|
+
pay_type?: PayType;
|
|
591
|
+
/**
|
|
592
|
+
* ContentType 和 Platform 描述作品是什么、来自哪里(短剧、电影、漫剧……)。
|
|
593
|
+
*/
|
|
594
|
+
content_type?: ContentType;
|
|
595
|
+
platform?: PlatformType;
|
|
596
|
+
/**
|
|
597
|
+
* Heat 是原始热度分;App 将其显示为 "红果热度值N万"。
|
|
598
|
+
*/
|
|
599
|
+
heat?: number;
|
|
600
|
+
/**
|
|
601
|
+
* PlayCount 是短剧的总播放量(series_play_cnt)。
|
|
602
|
+
*/
|
|
603
|
+
play_count?: number;
|
|
604
|
+
/**
|
|
605
|
+
* FollowCount 和 DiggCount 是标题旁显示的计数。
|
|
606
|
+
*/
|
|
607
|
+
follow_count?: number;
|
|
608
|
+
digg_count?: number;
|
|
609
|
+
/**
|
|
610
|
+
* CreatedAt 是发布时间(create_time,unix 秒)。
|
|
611
|
+
*/
|
|
612
|
+
created_at?: string;
|
|
613
|
+
/**
|
|
614
|
+
* RightText 是集数旁的角标("更新至12集")。
|
|
615
|
+
*/
|
|
616
|
+
right_text?: string;
|
|
617
|
+
/**
|
|
618
|
+
* Subtitles 是标题下方的简短状态行。
|
|
619
|
+
*/
|
|
620
|
+
subtitles?: string[];
|
|
621
|
+
/**
|
|
622
|
+
* AgeGate 对不受限的作品为 0。
|
|
623
|
+
*/
|
|
624
|
+
age_gate?: number;
|
|
625
|
+
/**
|
|
626
|
+
* IsMultiSeason 标记属于多季合集的作品。
|
|
627
|
+
*/
|
|
628
|
+
is_multi_season?: boolean;
|
|
629
|
+
/**
|
|
630
|
+
* SeasonIndex 是该合集内的季序号,从 1 开始。
|
|
631
|
+
*/
|
|
632
|
+
season_index?: number;
|
|
633
|
+
/**
|
|
634
|
+
* RelatedAlbumID 是各季共用的合集 id。
|
|
635
|
+
*/
|
|
636
|
+
related_album_id?: string;
|
|
637
|
+
/**
|
|
638
|
+
* RelatedNovelBookID 是短剧改编的小说(如已公开)。
|
|
639
|
+
*/
|
|
640
|
+
related_novel_book_id?: string;
|
|
641
|
+
/**
|
|
642
|
+
* Novel 是详情页链接的原著小说(video_relate_book),服务端给出时才有。
|
|
643
|
+
*/
|
|
644
|
+
novel?: Novel;
|
|
645
|
+
/**
|
|
646
|
+
* Rows 是详情页的次要信息行(季、分类、演员)。
|
|
647
|
+
*/
|
|
648
|
+
rows?: InfoRow[];
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* SeriesDetail 是一部短剧及其分集,由批量读取返回。
|
|
653
|
+
*/
|
|
654
|
+
export interface SeriesDetail {
|
|
655
|
+
series: Series;
|
|
656
|
+
episodes: Episode[];
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* SeriesStatus 是短剧的发布状态,由 data.video_data.series_status 携带。
|
|
661
|
+
*
|
|
662
|
+
* 名称取自官方 App 的枚举 com.dragon.read.rpc.model.SeriesStatus(
|
|
663
|
+
* SeriesUpdating、SeriesEnd、SeriesUpdateTaday、SeriesUpdateStop);
|
|
664
|
+
* 值 0 和 1 也已在线上实测。
|
|
665
|
+
*
|
|
666
|
+
* 取值:
|
|
667
|
+
* - SeriesUpdating = 0:SeriesUpdating 是未完结的短剧("更新至 N 集")。
|
|
668
|
+
* - SeriesEnd = 1:SeriesEnd 是已完结的短剧("全 N 集")。
|
|
669
|
+
* - SeriesUpdatedToday = 3:SeriesUpdatedToday 是枚举中的“今日更新”状态(推断)。
|
|
670
|
+
* - SeriesUpdateStopped = 4:SeriesUpdateStopped 是枚举中的“停止更新”状态(推断)。
|
|
671
|
+
*/
|
|
672
|
+
export type SeriesStatus = number;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* SeriesSummary 是公开目录中的一行。ID 和标题是稳定字段。
|
|
676
|
+
*/
|
|
677
|
+
export interface SeriesSummary {
|
|
678
|
+
id: string;
|
|
679
|
+
title: string;
|
|
680
|
+
description?: string;
|
|
681
|
+
cover_url?: string;
|
|
682
|
+
/**
|
|
683
|
+
* CoverExpiresAt 是 CoverURL 的签名过期时间(x-expires);
|
|
684
|
+
* 过期后要从 API 重新获取封面。
|
|
685
|
+
*/
|
|
686
|
+
cover_expires_at?: string;
|
|
687
|
+
episode_count?: number;
|
|
688
|
+
/**
|
|
689
|
+
* Author、Category 和 Words 由分类页的行填充。
|
|
690
|
+
*/
|
|
691
|
+
author?: string;
|
|
692
|
+
category?: string;
|
|
693
|
+
words?: number;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
* ShortFilterPage 是符合筛选条件的短剧的一页。
|
|
698
|
+
*/
|
|
699
|
+
export interface ShortFilterPage {
|
|
700
|
+
items: SeriesSummary[];
|
|
701
|
+
has_more: boolean;
|
|
702
|
+
/**
|
|
703
|
+
* Cursor 用于续取列表;它携带已展示的短剧,服务端会跳过它们。
|
|
704
|
+
*/
|
|
705
|
+
cursor?: string;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* ShortRanking 是短剧榜单的一页。
|
|
710
|
+
*/
|
|
711
|
+
export interface ShortRanking {
|
|
712
|
+
/**
|
|
713
|
+
* Contents 是该页的目录:每个内容及其各个榜。
|
|
714
|
+
*/
|
|
715
|
+
contents: RankContent[];
|
|
716
|
+
/**
|
|
717
|
+
* Content 和 Board 是本页对应的 ID。
|
|
718
|
+
*/
|
|
719
|
+
content: string;
|
|
720
|
+
board: string;
|
|
721
|
+
/**
|
|
722
|
+
* Version 是服务端上报的榜单版本。
|
|
723
|
+
*/
|
|
724
|
+
version?: string;
|
|
725
|
+
items: RankItem[];
|
|
726
|
+
has_more: boolean;
|
|
727
|
+
cursor?: string;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
/**
|
|
731
|
+
* Stream 是媒体模型中的一个表示形式。Protected
|
|
732
|
+
* 标记官方客户端在内部解密的表示形式;sdk.ContentKey 从模型的 KeyMaterial
|
|
733
|
+
* 还原它的密钥。
|
|
734
|
+
*/
|
|
735
|
+
export interface Stream {
|
|
736
|
+
/**
|
|
737
|
+
* Definition 是分辨率标签("720p");Quality 是服务端的画质标签
|
|
738
|
+
* ("normal")。
|
|
739
|
+
*/
|
|
740
|
+
definition?: string;
|
|
741
|
+
quality?: string;
|
|
742
|
+
codec?: string;
|
|
743
|
+
width?: number;
|
|
744
|
+
height?: number;
|
|
745
|
+
/**
|
|
746
|
+
* Bitrate 的单位是 bit/s;Size 是文件大小,单位是字节。
|
|
747
|
+
*/
|
|
748
|
+
bitrate?: number;
|
|
749
|
+
size?: number;
|
|
750
|
+
/**
|
|
751
|
+
* BackupURL 是同一文件的第二个 CDN 地址。
|
|
752
|
+
*/
|
|
753
|
+
url?: string;
|
|
754
|
+
backup_url?: string;
|
|
755
|
+
/**
|
|
756
|
+
* HLS 标记 m3u8 播放列表;Dash 标记分段(DASH)的表示形式。
|
|
757
|
+
*/
|
|
758
|
+
hls?: boolean;
|
|
759
|
+
dash?: boolean;
|
|
760
|
+
protected: boolean;
|
|
761
|
+
/**
|
|
762
|
+
* Encryption 是受保护流的加密方案,例如 "cenc-aes-ctr"。
|
|
763
|
+
*/
|
|
764
|
+
encryption?: string;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
/**
|
|
768
|
+
* Suggestion 是一条搜索建议。Text 是搜索框显示的文本;
|
|
769
|
+
* Keyword 是它提交的内容(直达行为内容 ID)。
|
|
770
|
+
*/
|
|
771
|
+
export interface Suggestion {
|
|
772
|
+
text: string;
|
|
773
|
+
keyword?: string;
|
|
774
|
+
/**
|
|
775
|
+
* Kind 是服务端的行类型,原样透传。
|
|
776
|
+
*/
|
|
777
|
+
kind?: number;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* Work 是某人出演的一部短剧。
|
|
782
|
+
*/
|
|
783
|
+
export interface Work {
|
|
784
|
+
series_id: string;
|
|
785
|
+
title: string;
|
|
786
|
+
description?: string;
|
|
787
|
+
cover_url?: string;
|
|
788
|
+
cover_expires_at?: string;
|
|
789
|
+
episode_count?: number;
|
|
790
|
+
/**
|
|
791
|
+
* Tags 是卡片上的各行,例如 "爱情" 和 "70集"。
|
|
792
|
+
*/
|
|
793
|
+
tags?: string[];
|
|
794
|
+
/**
|
|
795
|
+
* Heat 是短剧的原始热度分;Plays 是其播放量。
|
|
796
|
+
*/
|
|
797
|
+
heat?: number;
|
|
798
|
+
plays?: number;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* WorkPage 是某人作品的一页(作品 › 剧作)。
|
|
803
|
+
*/
|
|
804
|
+
export interface WorkPage {
|
|
805
|
+
items: Work[];
|
|
806
|
+
has_more: boolean;
|
|
807
|
+
cursor?: string;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* DiscoverOptions 选择一个发现页。Channel 是书城频道名,空频道即推荐。
|
|
812
|
+
* Cursor 是上一页给出的令牌。
|
|
813
|
+
*/
|
|
814
|
+
export interface DiscoverOptions {
|
|
815
|
+
cursor?: string;
|
|
816
|
+
channel?: string;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* SearchOptions 选择一个搜索页。Tab 取值为综合、剧集、视频、讨论、小说、
|
|
821
|
+
* 用户或听书,空 tab 即综合。Cursor 是下一个偏移量。
|
|
822
|
+
*/
|
|
823
|
+
export interface SearchOptions {
|
|
824
|
+
cursor?: string;
|
|
825
|
+
pageSize?: number;
|
|
826
|
+
tab?: string;
|
|
827
|
+
/**
|
|
828
|
+
* Filters 把综合 tab 收窄到 SearchFilter* 值;选多个时互相放宽。
|
|
829
|
+
* 游标不携带这些筛选,所以要连同游标传入相同的筛选。
|
|
830
|
+
*/
|
|
831
|
+
filters?: string[];
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* EpisodeOptions 选择一个分集页。游标不在第 1 阶段的范围内。
|
|
836
|
+
*/
|
|
837
|
+
export interface EpisodeOptions {
|
|
838
|
+
cursor?: string;
|
|
839
|
+
pageSize?: number;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/**
|
|
843
|
+
* LandingOptions 选择一个分类落地页。
|
|
844
|
+
*
|
|
845
|
+
* Tab 是 Categories 给出的 tab 值:8(全部,默认)、1(男生)或 0(女生)。
|
|
846
|
+
* Filters 把 CategoryPage.Filters 中的筛选组键(book_status、sort_by、
|
|
847
|
+
* sub_category、word_type)映射到该组的某个选项值。
|
|
848
|
+
* Cursor 是上一页的 NextOffset。
|
|
849
|
+
*/
|
|
850
|
+
export interface LandingOptions {
|
|
851
|
+
tab?: string;
|
|
852
|
+
filters?: Record<string, string>;
|
|
853
|
+
cursor?: string;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* NewReleaseQuery 选择上新日历中的一天:Date 格式为 YYYYMMDD(空即今天),
|
|
858
|
+
* Cursor 是上一页的 Cursor,它带有所在的日期。
|
|
859
|
+
*/
|
|
860
|
+
export interface NewReleaseQuery {
|
|
861
|
+
date?: string;
|
|
862
|
+
cursor?: string;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* ShortFilterQuery 在筛选页(筛选)上挑选短剧。
|
|
867
|
+
*
|
|
868
|
+
* Selections 把 FilterRow.Key 映射到选中的选项 Values;缺省的行即全部。
|
|
869
|
+
* Cursor 是上一页的 Cursor。
|
|
870
|
+
*/
|
|
871
|
+
export interface ShortFilterQuery {
|
|
872
|
+
selections?: Record<string, string[]>;
|
|
873
|
+
cursor?: string;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
/**
|
|
877
|
+
* ShortRankQuery 选择一个短剧榜单。Content 是 RankContent ID(all、human、
|
|
878
|
+
* comic_series_rank、ai_playlet、series_album;空即 all),
|
|
879
|
+
* Board 是它的某个 RankBoard ID(空即服务端对该 content 的默认值)。
|
|
880
|
+
* Cursor 是上一页的 Cursor。
|
|
881
|
+
*/
|
|
882
|
+
export interface ShortRankQuery {
|
|
883
|
+
content?: string;
|
|
884
|
+
board?: string;
|
|
885
|
+
cursor?: string;
|
|
886
|
+
}
|
|
887
|
+
|