@laplace.live/internal 1.2.57 → 1.3.1
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/package.json +6 -2
- package/src/common.d.ts +124 -0
- package/src/const/steam.ts +38 -0
- package/src/index.d.ts +16 -0
- package/src/namespaces/aicu.d.ts +120 -0
- package/src/namespaces/aliyun.d.ts +61 -0
- package/{index.d.ts → src/namespaces/bilibili.d.ts} +5 -2643
- package/src/namespaces/danmakus.d.ts +254 -0
- package/src/namespaces/kuaidi100.d.ts +56 -0
- package/src/namespaces/laplace.d.ts +1608 -0
- package/src/namespaces/loveava.d.ts +45 -0
- package/src/namespaces/steam.d.ts +273 -0
- package/src/namespaces/vtbs.d.ts +93 -0
- package/src/namespaces/zeroroku.d.ts +23 -0
|
@@ -1,1739 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* The Global LAPLACE typings
|
|
3
|
-
* Maintained by laplace.live
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/** Used for brain-fucked bilibili devs */
|
|
7
|
-
type StringBoolean = 'true' | 'false'
|
|
8
|
-
|
|
9
|
-
/** Emote list */
|
|
10
|
-
export interface SimpleEmotesList {
|
|
11
|
-
[key: string]: SimpleEmote
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Used by bmotes and remote emotes
|
|
16
|
-
*/
|
|
17
|
-
export interface SimpleEmote {
|
|
18
|
-
url: string
|
|
19
|
-
width?: number
|
|
20
|
-
height?: number
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 用于 `DANMU` 事件中 @ 用户回复的 type
|
|
25
|
-
* Used by:
|
|
26
|
-
* - chat.laplace.chat
|
|
27
|
-
*/
|
|
28
|
-
export interface DanmakuReplyProps {
|
|
29
|
-
uid: number
|
|
30
|
-
uname: string
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* LAPLACE fans medal
|
|
35
|
-
*/
|
|
36
|
-
export interface FansMedal {
|
|
37
|
-
/**
|
|
38
|
-
* 当没佩戴粉丝勋章时,返回 0
|
|
39
|
-
*/
|
|
40
|
-
level: number
|
|
41
|
-
/**
|
|
42
|
-
* 当没佩戴粉丝勋章时,返回空字符串
|
|
43
|
-
*/
|
|
44
|
-
name: string
|
|
45
|
-
/**
|
|
46
|
-
* 当前粉丝勋章的房间号,并不是所有的事件都支持,例如弹幕事件支持,礼物事件就不支持
|
|
47
|
-
*
|
|
48
|
-
* 不支持的时候会返回 0,返回 0 时会影响千舰、万舰的头像框和粉丝勋章图标的判断
|
|
49
|
-
*/
|
|
50
|
-
room: number
|
|
51
|
-
/**
|
|
52
|
-
* 此字段通过计算事件中返回的 `uinfo.medal.guard_icon` 而来,不过 guard_icon 并不是
|
|
53
|
-
* 所有的事件都会返回(例如大航海就返回空),因此仅作为兜底使用
|
|
54
|
-
* 目前大航海图标只区分是否千舰,不区分万舰,只有大航海头像框区分
|
|
55
|
-
*/
|
|
56
|
-
resolvedPerkLevel?: number
|
|
57
|
-
/**
|
|
58
|
-
* 粉丝勋章图标,千舰、万舰会有区别
|
|
59
|
-
* @link https://i0.hdslb.com/bfs/live/98a201c14a64e860a758f089144dcf3f42e7038c.png
|
|
60
|
-
* @deprecated 直接传 URL 的方式已弃用,会增大事件体积,请使用上方的 `resolvedPerkLevel` 进行判断
|
|
61
|
-
*/
|
|
62
|
-
guardIcon?: string
|
|
63
|
-
/**
|
|
64
|
-
* 粉丝牌所对应主播的 UID,当 `type` 为 1 时,此时为粉丝团套票,此处的 UID 等于粉丝团 id😅
|
|
65
|
-
*/
|
|
66
|
-
uid?: number
|
|
67
|
-
/** Color in decimal color */
|
|
68
|
-
// colorBorder: number;
|
|
69
|
-
/** Color in decimal color */
|
|
70
|
-
// colorStart: number;
|
|
71
|
-
/** Color in decimal color */
|
|
72
|
-
// colorEnd: number;
|
|
73
|
-
/**
|
|
74
|
-
* 0: 白字
|
|
75
|
-
* 1: 总督
|
|
76
|
-
* 2: 提督
|
|
77
|
-
* 3: 舰长
|
|
78
|
-
*/
|
|
79
|
-
guardType: number
|
|
80
|
-
/**
|
|
81
|
-
* 粉丝勋章是否点亮
|
|
82
|
-
*
|
|
83
|
-
* 1: 点亮
|
|
84
|
-
* 0: 未点亮
|
|
85
|
-
*/
|
|
86
|
-
lightened: number
|
|
87
|
-
/**
|
|
88
|
-
* 粉丝勋章类型,后加的属性,为了兼容性,因此为可选
|
|
89
|
-
*
|
|
90
|
-
* 0: 普通粉丝牌
|
|
91
|
-
* 1: 大航海套票
|
|
92
|
-
*/
|
|
93
|
-
type?: number
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* b豆 emote props
|
|
98
|
-
* @deprecated Use `SimpleBmote` instead
|
|
99
|
-
*/
|
|
100
|
-
export interface Bmote {
|
|
101
|
-
emoticon_id: number
|
|
102
|
-
emoji: string
|
|
103
|
-
descript: string
|
|
104
|
-
url: string
|
|
105
|
-
width: number
|
|
106
|
-
height: number
|
|
107
|
-
emoticon_unique: string
|
|
108
|
-
count: number
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* `buvid` props
|
|
113
|
-
*/
|
|
114
|
-
export interface BuvidProps {
|
|
115
|
-
token: string
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Protobuf data from danmu v2 props
|
|
120
|
-
* @deprecated Not bilibili no longer returns protobuf
|
|
121
|
-
*/
|
|
122
|
-
export type ProtobufDanmuV2Props = {
|
|
123
|
-
user: {
|
|
124
|
-
face: string
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/** 内部连接方式 */
|
|
129
|
-
export type ConnectionModes = 'direct' | 'builtin' | 'qrcode' | 'open-platform'
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* LAPLACE 内部 typings
|
|
133
|
-
*/
|
|
134
|
-
export declare namespace LaplaceInternal {
|
|
135
|
-
/**
|
|
136
|
-
* HTTP(S) 协议类型的 API
|
|
137
|
-
*/
|
|
138
|
-
export namespace HTTPS {
|
|
139
|
-
/**
|
|
140
|
-
* LAPLACE Workers
|
|
141
|
-
*/
|
|
142
|
-
export namespace Workers {
|
|
143
|
-
/**
|
|
144
|
-
* 获取云端弹幕机配置
|
|
145
|
-
* /laplace/remote-config
|
|
146
|
-
*/
|
|
147
|
-
export interface RemoteConfig {
|
|
148
|
-
headerText?: string
|
|
149
|
-
headerSubtitle?: string
|
|
150
|
-
headerLink?: string
|
|
151
|
-
headerLogo?: string
|
|
152
|
-
headerLogoWidth?: number
|
|
153
|
-
headerLogoHeight?: number
|
|
154
|
-
footerExtraText?: string
|
|
155
|
-
footerText?: string
|
|
156
|
-
footerLink?: string
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Gatus status response
|
|
161
|
-
* /laplace/network
|
|
162
|
-
*/
|
|
163
|
-
export interface NetworkItem {
|
|
164
|
-
/** "miscs" */
|
|
165
|
-
group: string
|
|
166
|
-
/** miscs_bilibili-fingerprint-reporter */
|
|
167
|
-
key: string
|
|
168
|
-
/** bilibili-fingerprint-reporter */
|
|
169
|
-
name: string
|
|
170
|
-
results: {
|
|
171
|
-
status: number
|
|
172
|
-
duration: number
|
|
173
|
-
hostname?: string
|
|
174
|
-
success: boolean
|
|
175
|
-
/** 2024-04-28T08:22:07.19385135Z */
|
|
176
|
-
timestamp: string
|
|
177
|
-
errors?: string[]
|
|
178
|
-
conditionResults?: {
|
|
179
|
-
/** "[CERTIFICATE_EXPIRATION] > 48h" */
|
|
180
|
-
condition: string
|
|
181
|
-
success: boolean
|
|
182
|
-
}[]
|
|
183
|
-
}[]
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Login Sync info
|
|
188
|
-
* A subset of `BilibiliInternal.HTTPS.Prod.LiveGetUserInfo`
|
|
189
|
-
*/
|
|
190
|
-
export interface LoginSyncInfo {
|
|
191
|
-
/** 0: 成功 */
|
|
192
|
-
code: number
|
|
193
|
-
message: string
|
|
194
|
-
data: {
|
|
195
|
-
isLogin: boolean
|
|
196
|
-
face: string
|
|
197
|
-
mid: number
|
|
198
|
-
uname: string
|
|
199
|
-
/** The actual `buvid` */
|
|
200
|
-
ack: string
|
|
201
|
-
fetchMode: 'login-sync' | 'anonymous' | 'built-in'
|
|
202
|
-
ackMode: 'guest' | 'passthrough' | 'builtin-passthrough'
|
|
203
|
-
fetcher: number
|
|
204
|
-
syncServer: boolean
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* 获取云端表情包
|
|
210
|
-
* /laplace/remote-emotes
|
|
211
|
-
*/
|
|
212
|
-
export interface PspRemoteEmotesProps {
|
|
213
|
-
/**
|
|
214
|
-
* - 0: valid result
|
|
215
|
-
* - 403: not valid
|
|
216
|
-
*/
|
|
217
|
-
status: number
|
|
218
|
-
data: {
|
|
219
|
-
emoji: {
|
|
220
|
-
server_base: string
|
|
221
|
-
map: {
|
|
222
|
-
[key: string]: string
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* 直播间排名列表,由外部 API 聚合而来
|
|
230
|
-
* /laplace/ranking
|
|
231
|
-
*/
|
|
232
|
-
export interface RankingItem {
|
|
233
|
-
/**
|
|
234
|
-
* @minimum 1
|
|
235
|
-
*/
|
|
236
|
-
_laplace_rank: number
|
|
237
|
-
cate: string
|
|
238
|
-
uname: string
|
|
239
|
-
uid: number
|
|
240
|
-
face: string
|
|
241
|
-
cover: string
|
|
242
|
-
system_cover: string
|
|
243
|
-
start_time: number
|
|
244
|
-
roomid: number
|
|
245
|
-
watched?: number
|
|
246
|
-
watched_avg?: number
|
|
247
|
-
ten_minutes_counter: number
|
|
248
|
-
interaction_avg?: number
|
|
249
|
-
income?: number
|
|
250
|
-
income_avg?: number
|
|
251
|
-
danmakus?: number
|
|
252
|
-
danmakus_avg?: number
|
|
253
|
-
title: string
|
|
254
|
-
tags?: string[]
|
|
255
|
-
commentCount?: number
|
|
256
|
-
lastLiveIncome?: number
|
|
257
|
-
/**
|
|
258
|
-
* laplace/loveava 独有的热度/人气字段
|
|
259
|
-
*/
|
|
260
|
-
count?: number
|
|
261
|
-
/**
|
|
262
|
-
* 平均观看人数
|
|
263
|
-
*/
|
|
264
|
-
count_avg?: number
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/** 关注 API 的数据库扩展 */
|
|
268
|
-
interface FollowingResponseExtended extends BilibiliInternal.HTTPS.Prod.GameCenterFollowingList {
|
|
269
|
-
/**
|
|
270
|
-
* 最后 KV 缓存写入时间戳
|
|
271
|
-
*/
|
|
272
|
-
last: number
|
|
273
|
-
/**
|
|
274
|
-
* 数据来源
|
|
275
|
-
*/
|
|
276
|
-
from: 'cache' | 'origin'
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* 由 vtbs 整理来的直播间开播状态
|
|
281
|
-
*/
|
|
282
|
-
interface LiveState {
|
|
283
|
-
name: string
|
|
284
|
-
room: number
|
|
285
|
-
liveStatus: number
|
|
286
|
-
lastLive: {
|
|
287
|
-
time: number
|
|
288
|
-
}
|
|
289
|
-
title: string
|
|
290
|
-
time: number
|
|
291
|
-
liveStartTime: number
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* UID by Room
|
|
296
|
-
*/
|
|
297
|
-
interface UidByRoom {
|
|
298
|
-
/**
|
|
299
|
-
* 0 正常,404 未找到直播间
|
|
300
|
-
*/
|
|
301
|
-
status: 0 | 404
|
|
302
|
-
uid: number
|
|
303
|
-
/** 真实房间号 */
|
|
304
|
-
roomId: number
|
|
305
|
-
/** 短房间号 */
|
|
306
|
-
shortRoomId: number
|
|
307
|
-
/** 用户名 */
|
|
308
|
-
username: string | null
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* 哔哩哔哩装扮列表
|
|
313
|
-
*/
|
|
314
|
-
interface Suit {
|
|
315
|
-
id: number
|
|
316
|
-
name: string
|
|
317
|
-
description: string
|
|
318
|
-
startTime: number
|
|
319
|
-
totalPurchaseCount: number
|
|
320
|
-
user: number
|
|
321
|
-
username: string
|
|
322
|
-
owner: number
|
|
323
|
-
image_cover: string | null
|
|
324
|
-
createdAt: string
|
|
325
|
-
updatedAt: string
|
|
326
|
-
ownerDetails: {
|
|
327
|
-
id: number
|
|
328
|
-
room: number
|
|
329
|
-
username: string
|
|
330
|
-
guild: null
|
|
331
|
-
avatar: string
|
|
332
|
-
updatedAt: string
|
|
333
|
-
} | null
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* 哔哩哔哩收藏集列表
|
|
338
|
-
*/
|
|
339
|
-
interface Collection {
|
|
340
|
-
id: number
|
|
341
|
-
name: string
|
|
342
|
-
description: string
|
|
343
|
-
startTime: number
|
|
344
|
-
relatedUsers: number[]
|
|
345
|
-
totalPreorderCount: number
|
|
346
|
-
totalPurchaseCount: number
|
|
347
|
-
/** @deprecated use `lottery_image` */
|
|
348
|
-
act_square_img: string
|
|
349
|
-
lottery_image: string
|
|
350
|
-
createdAt: string
|
|
351
|
-
updatedAt: string
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* 日程表项目
|
|
356
|
-
* @link https://laplace.live/schedule
|
|
357
|
-
*/
|
|
358
|
-
export interface WeekItem {
|
|
359
|
-
/** 年份,例如 2024 */
|
|
360
|
-
year: number
|
|
361
|
-
/** 当前周数,例如 19 */
|
|
362
|
-
week: number
|
|
363
|
-
/** 哔哩哔哩动态对应 ID,只需要填入 ID 即可 */
|
|
364
|
-
bilibili_url?: string
|
|
365
|
-
events: EventItem[]
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Item of WeekItem events
|
|
370
|
-
* 此处 type 为简化版 `string`,在 laplace 本体仓库中有详细定义
|
|
371
|
-
*/
|
|
372
|
-
export interface EventItem {
|
|
373
|
-
/** 日期字符串,格式 YYYY-MM-DD */
|
|
374
|
-
date: string
|
|
375
|
-
/** 日程类型 */
|
|
376
|
-
type: string
|
|
377
|
-
/** 日程标题 */
|
|
378
|
-
title: string
|
|
379
|
-
/** 录播链接,此应填入完整 URL */
|
|
380
|
-
rec?: string
|
|
381
|
-
/** 是否被取消,此字段用于 iCal 日历 */
|
|
382
|
-
cancelled?: boolean
|
|
383
|
-
/** 取消原因 */
|
|
384
|
-
reason?: string
|
|
385
|
-
/** 录播是否为第三方录入 */
|
|
386
|
-
fans_rec?: boolean
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
/** 多媒体可用语言 */
|
|
390
|
-
export type MediaLanguages = 'zh' | 'en' | 'ja' | 'yue' | 'kr' | 'ru' | 'es' | 'fr'
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* 多媒体项目
|
|
394
|
-
*/
|
|
395
|
-
export interface MediaItem {
|
|
396
|
-
ver: number
|
|
397
|
-
/** 当前媒体语言,例如 `en` */
|
|
398
|
-
lang: MediaLanguages
|
|
399
|
-
/** 日期 */
|
|
400
|
-
date: string
|
|
401
|
-
/** 是否有切片,完整 URL */
|
|
402
|
-
clips?: string
|
|
403
|
-
/** 标题 */
|
|
404
|
-
title: string
|
|
405
|
-
/** alternate 名称,通常用于提供标题的无翻译原文 */
|
|
406
|
-
altName?: string
|
|
407
|
-
/** 是否为官方发布 */
|
|
408
|
-
official?: boolean
|
|
409
|
-
/** 作者/艺术家 */
|
|
410
|
-
author: string
|
|
411
|
-
/** 备注内容 */
|
|
412
|
-
note?: string
|
|
413
|
-
/** 是否为本站首发,LAPLACE 内部字段 */
|
|
414
|
-
exclusive?: boolean
|
|
415
|
-
/**
|
|
416
|
-
* 标签
|
|
417
|
-
* 如果一场直播内唱了多次同一首歌曲,会导致声称的文件名重复,用此属性定义额外后缀防止冲突
|
|
418
|
-
*/
|
|
419
|
-
tags?: string
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* 时间线项目
|
|
424
|
-
* @link https://laplace.live/timeline
|
|
425
|
-
*/
|
|
426
|
-
export interface TimelineItem {
|
|
427
|
-
/**
|
|
428
|
-
* - `hitokoto`: 一言
|
|
429
|
-
* - `video`: 视频
|
|
430
|
-
* - `event`: 事件
|
|
431
|
-
*/
|
|
432
|
-
type: 'hitokoto' | 'video' | 'event'
|
|
433
|
-
/** 内容 */
|
|
434
|
-
content: string
|
|
435
|
-
/** 事件关联人物 */
|
|
436
|
-
from_who: string
|
|
437
|
-
/** 是否含有音声,LAPLACE 内部字段 */
|
|
438
|
-
hasVoice?: boolean
|
|
439
|
-
/** 音声对应文件名,LAPLACE 内部字段 */
|
|
440
|
-
voiceFilename?: string
|
|
441
|
-
/** 事件发生点 */
|
|
442
|
-
from?: string
|
|
443
|
-
/** 事件消息来源 */
|
|
444
|
-
source?: string
|
|
445
|
-
/** 事件日期 */
|
|
446
|
-
date?: string
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
* 开发日志项目
|
|
451
|
-
* @link https://laplace.live/blog
|
|
452
|
-
*/
|
|
453
|
-
export interface BlogItem {
|
|
454
|
-
id: number
|
|
455
|
-
date: string
|
|
456
|
-
title?: string
|
|
457
|
-
content: string | null
|
|
458
|
-
/** 给 Atom RSS 用的纯文本输出 */
|
|
459
|
-
plain?: string
|
|
460
|
-
author?: string
|
|
461
|
-
tags?: string[]
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
/**
|
|
465
|
-
* SuperChat FoS
|
|
466
|
-
* @link /laplace/superchat-fos
|
|
467
|
-
*/
|
|
468
|
-
export interface SuperChatFoS {
|
|
469
|
-
code: number
|
|
470
|
-
/** 报错时会返回 */
|
|
471
|
-
message?: string
|
|
472
|
-
content: string
|
|
473
|
-
moderated: boolean
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
/**
|
|
477
|
-
* 用户信息
|
|
478
|
-
* @link /laplace/bilibili-user/:uid
|
|
479
|
-
*/
|
|
480
|
-
export interface BilibiliUser {
|
|
481
|
-
/** 对应 UID */
|
|
482
|
-
id: number
|
|
483
|
-
username: string
|
|
484
|
-
/**
|
|
485
|
-
* 之前泄漏的工会字段
|
|
486
|
-
*
|
|
487
|
-
* @deprecated use `guildInfo` instead
|
|
488
|
-
*/
|
|
489
|
-
guild: string
|
|
490
|
-
room: number
|
|
491
|
-
liveFansCount: number
|
|
492
|
-
liveFansMedal: string | null
|
|
493
|
-
avatar: string | null
|
|
494
|
-
/** 2024-12-15T03:44:13.788Z */
|
|
495
|
-
updatedAt: string
|
|
496
|
-
/**
|
|
497
|
-
* 工会详细信息
|
|
498
|
-
*
|
|
499
|
-
* @deprecated use `guildInfo` instead
|
|
500
|
-
*/
|
|
501
|
-
guildDetails: {
|
|
502
|
-
id: number
|
|
503
|
-
name: string
|
|
504
|
-
} | null
|
|
505
|
-
/** 工会详细信息 */
|
|
506
|
-
guildInfo: {
|
|
507
|
-
/**
|
|
508
|
-
* @deprecated use `history` instead, latest guild is now migrated to history in Sep 25, 2025, 4:51:27 AM PDT
|
|
509
|
-
*/
|
|
510
|
-
current: {
|
|
511
|
-
name: string
|
|
512
|
-
/** Unix timestamp
|
|
513
|
-
*
|
|
514
|
-
* @example 1758039520166
|
|
515
|
-
*/
|
|
516
|
-
updatedAt: number
|
|
517
|
-
} | null
|
|
518
|
-
history: {
|
|
519
|
-
name: string
|
|
520
|
-
/** Unix timestamp
|
|
521
|
-
*
|
|
522
|
-
* @example 1758039520166
|
|
523
|
-
*/
|
|
524
|
-
updatedAt: number
|
|
525
|
-
}[]
|
|
526
|
-
} | null
|
|
527
|
-
/** MCN 机构详细信息 (mcnId is internal-only, not exposed in public API) */
|
|
528
|
-
mcnInfo: {
|
|
529
|
-
history: {
|
|
530
|
-
/** MCN agency name */
|
|
531
|
-
mcnName: string
|
|
532
|
-
/** Unix timestamp
|
|
533
|
-
*
|
|
534
|
-
* @example 1758039520166
|
|
535
|
-
*/
|
|
536
|
-
updatedAt: number
|
|
537
|
-
}[]
|
|
538
|
-
} | null
|
|
539
|
-
/** Resolved tags with usage counts. Only present when `?fields=tags` is requested. */
|
|
540
|
-
tags?: LaplaceInternal.HTTPS.Workers.TagWithCount[]
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
/**
|
|
544
|
-
* 列表哔哩哔哩用户(分页)
|
|
545
|
-
* @link /laplace/bilibili-users
|
|
546
|
-
*
|
|
547
|
-
* Query params:
|
|
548
|
-
* - `?page=1` — page number (min 1, default 1)
|
|
549
|
-
* - `?pageSize=100` — items per page (1–500, default 100)
|
|
550
|
-
* - `?all=true` — return all rows without pagination
|
|
551
|
-
* - `?tags=1,2,3` — filter to users who have all listed tag IDs (AND)
|
|
552
|
-
* - `?search=keyword` — filter by UID (exact) or username (case-insensitive partial match)
|
|
553
|
-
*/
|
|
554
|
-
export interface ListBilibiliUsers {
|
|
555
|
-
data: ListBilibiliUsersItem[]
|
|
556
|
-
total: number
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
/**
|
|
560
|
-
* Single user item returned by the list endpoint.
|
|
561
|
-
*
|
|
562
|
-
* Differs from {@link BilibiliUser} (single-user endpoint) because the list
|
|
563
|
-
* query returns raw DB rows without relation joins or sanitization:
|
|
564
|
-
* - `guild` is a raw numeric FK (not a resolved name string)
|
|
565
|
-
* - `tags` is a raw `int[]` (not resolved {@link TagWithCount} objects)
|
|
566
|
-
* - `mcnInfo.history` entries include `mcnId` (stripped in single-user endpoint)
|
|
567
|
-
* - No `guildDetails` relation (only present when joined via single-user query)
|
|
568
|
-
*/
|
|
569
|
-
export interface ListBilibiliUsersItem {
|
|
570
|
-
id: number
|
|
571
|
-
room: number | null
|
|
572
|
-
username: string
|
|
573
|
-
liveFansCount: number | null
|
|
574
|
-
liveFansMedal: string | null
|
|
575
|
-
liveStatus: number | null
|
|
576
|
-
/** @deprecated use `guildInfo` instead */
|
|
577
|
-
guild: number | null
|
|
578
|
-
avatar: string | null
|
|
579
|
-
guildInfo: {
|
|
580
|
-
history: {
|
|
581
|
-
name: string
|
|
582
|
-
/** Unix timestamp */
|
|
583
|
-
updatedAt: number
|
|
584
|
-
}[]
|
|
585
|
-
} | null
|
|
586
|
-
mcnInfo: {
|
|
587
|
-
history: {
|
|
588
|
-
mcnId: number
|
|
589
|
-
mcnName: string
|
|
590
|
-
/** Unix timestamp */
|
|
591
|
-
updatedAt: number
|
|
592
|
-
}[]
|
|
593
|
-
} | null
|
|
594
|
-
/** Raw integer tag IDs assigned to this user */
|
|
595
|
-
tags: number[] | null
|
|
596
|
-
/** ISO 8601 timestamp */
|
|
597
|
-
updatedAt: string
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// ============================================
|
|
601
|
-
// Tag Types
|
|
602
|
-
// ============================================
|
|
603
|
-
|
|
604
|
-
/** Tag definition (viewer-facing, no internal fields) */
|
|
605
|
-
export interface Tag {
|
|
606
|
-
id: number
|
|
607
|
-
name: string
|
|
608
|
-
color: string | null
|
|
609
|
-
/** Emoji fallback -- shown when `icon` is not set. When both exist, `icon` takes priority. */
|
|
610
|
-
emoji: string | null
|
|
611
|
-
/** Icon URL -- takes priority over `emoji` when both are set. */
|
|
612
|
-
icon: string | null
|
|
613
|
-
description: string | null
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
/** Tag with usage count (viewer-facing, entity type is not exposed) */
|
|
617
|
-
export interface TagWithCount extends Tag {
|
|
618
|
-
/** Number of entities using this tag, computed on-the-fly for the requested entity type. */
|
|
619
|
-
count: number
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
/** Full tag definition (admin-facing, includes internal fields) */
|
|
623
|
-
export interface TagAdmin extends Tag {
|
|
624
|
-
scope: string[] | null
|
|
625
|
-
/** Per-entity-type usage counts, computed on-the-fly. Keys are entity type names (e.g. `bilibili_user`, `bilibili_meme`). */
|
|
626
|
-
entityCounts: Record<string, number>
|
|
627
|
-
createdAt: string
|
|
628
|
-
updatedAt: string
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
/** Request body for POST /laplace/tags (create tag) */
|
|
632
|
-
export interface TagCreateRequest {
|
|
633
|
-
name: string
|
|
634
|
-
color?: string
|
|
635
|
-
emoji?: string
|
|
636
|
-
icon?: string
|
|
637
|
-
description?: string
|
|
638
|
-
scope?: string[]
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
/** Request body for PATCH /laplace/tags/:id (update tag) */
|
|
642
|
-
export interface TagUpdateRequest {
|
|
643
|
-
name?: string
|
|
644
|
-
color?: string | null
|
|
645
|
-
emoji?: string | null
|
|
646
|
-
icon?: string | null
|
|
647
|
-
description?: string | null
|
|
648
|
-
scope?: string[] | null
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
/** Request body for POST /laplace/tags/assign (assign tags to entity) */
|
|
652
|
-
export interface TagAssignRequest {
|
|
653
|
-
tagIds: number[]
|
|
654
|
-
entityType: string
|
|
655
|
-
entityId: number
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
/** Request body for DELETE /laplace/tags/assign (unassign tags from entity) */
|
|
659
|
-
export interface TagUnassignRequest {
|
|
660
|
-
tagIds: number[]
|
|
661
|
-
entityType: string
|
|
662
|
-
entityId: number
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
/**
|
|
666
|
-
* 礼物配置信息
|
|
667
|
-
*/
|
|
668
|
-
export interface RoomGiftItem extends BilibiliInternal.HTTPS.Prod.RoomGiftItemPick {
|
|
669
|
-
/** 出现的时间 */
|
|
670
|
-
firstSeen?: Date
|
|
671
|
-
/** 出现的直播间 */
|
|
672
|
-
firstSeenRoom?: number
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
/**
|
|
676
|
-
* 礼物配置列表
|
|
677
|
-
* @link /bilibili/room-gift-config/25034104?list=1
|
|
678
|
-
*/
|
|
679
|
-
export interface RoomGiftConfigList {
|
|
680
|
-
code: number
|
|
681
|
-
message: string
|
|
682
|
-
ttl: number
|
|
683
|
-
gift_ttl: number
|
|
684
|
-
gift_version: number
|
|
685
|
-
data: {
|
|
686
|
-
list: RoomGiftItem[]
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
/**
|
|
691
|
-
* 获取直播分区列表
|
|
692
|
-
* @link /bilibili/live-areas
|
|
693
|
-
*/
|
|
694
|
-
export interface LiveAreas {
|
|
695
|
-
/** 0 代表成功 */
|
|
696
|
-
code: number
|
|
697
|
-
/** 成功时返回 "success" */
|
|
698
|
-
message: string
|
|
699
|
-
/** 直播分区列表 */
|
|
700
|
-
data: LiveAreaItem[]
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
/**
|
|
704
|
-
* 直播分区项
|
|
705
|
-
*/
|
|
706
|
-
export interface LiveAreaItem {
|
|
707
|
-
/** 分区 ID */
|
|
708
|
-
id: string
|
|
709
|
-
/** 分区名称 */
|
|
710
|
-
name: string
|
|
711
|
-
/** 父分区 ID */
|
|
712
|
-
parentId: string
|
|
713
|
-
/** 父分区名称 */
|
|
714
|
-
parentName: string
|
|
715
|
-
/** 完整分区名称,格式为 `${parentName}-${name}` */
|
|
716
|
-
cate: string
|
|
717
|
-
/** 分区图标 URL */
|
|
718
|
-
icon: string
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
/**
|
|
722
|
-
* Response interface for the transformed LiveGiftEffect data
|
|
723
|
-
* Used by frontend to consume the simplified gift effect data
|
|
724
|
-
* @example /bilibili/live-gift-effect/25034104
|
|
725
|
-
*/
|
|
726
|
-
export interface LiveGiftEffect {
|
|
727
|
-
code: number
|
|
728
|
-
message: string
|
|
729
|
-
data: LiveGiftEffectItem[]
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
/**
|
|
733
|
-
* Simplified gift effect item with only necessary fields
|
|
734
|
-
*/
|
|
735
|
-
export interface LiveGiftEffectItem {
|
|
736
|
-
type: number
|
|
737
|
-
id: number
|
|
738
|
-
bind_gift_ids: number[]
|
|
739
|
-
video: string
|
|
740
|
-
/** json config URL, only the hash part */
|
|
741
|
-
json: string
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
/**
|
|
745
|
-
* Successful response for guild members list
|
|
746
|
-
* @example /laplace/bilibili-guilds/:guildName
|
|
747
|
-
*/
|
|
748
|
-
export interface ListGuildMembers {
|
|
749
|
-
success: true
|
|
750
|
-
guild: string
|
|
751
|
-
count: number
|
|
752
|
-
members: LaplaceInternal.HTTPS.Workers.BilibiliUser[]
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
* Error response when guild is not found
|
|
757
|
-
* @example /laplace/bilibili-guilds/:guildName
|
|
758
|
-
*/
|
|
759
|
-
export interface ListGuildMembersNotFound {
|
|
760
|
-
success: false
|
|
761
|
-
error: string
|
|
762
|
-
guild: string
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
/**
|
|
766
|
-
* Request body for guild info update
|
|
767
|
-
* @example POST /laplace/guild-update
|
|
768
|
-
*/
|
|
769
|
-
export interface UpdateGuildInfoRequest {
|
|
770
|
-
uid: number
|
|
771
|
-
guildName: string
|
|
772
|
-
updatedAt?: number
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
/**
|
|
776
|
-
* Successful response for guild info update
|
|
777
|
-
* @example POST /laplace/guild-update
|
|
778
|
-
*/
|
|
779
|
-
export interface UpdateGuildInfoResponse {
|
|
780
|
-
success: true
|
|
781
|
-
message: string
|
|
782
|
-
uid: number
|
|
783
|
-
guildName: string
|
|
784
|
-
updatedAt: number
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
/**
|
|
788
|
-
* Error response for guild info update
|
|
789
|
-
* @example POST /laplace/guild-update
|
|
790
|
-
*/
|
|
791
|
-
export interface UpdateGuildInfoError {
|
|
792
|
-
success: false
|
|
793
|
-
error: string
|
|
794
|
-
uid?: number
|
|
795
|
-
details?: string
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
// ============================================
|
|
799
|
-
// Fertility Cycle Types
|
|
800
|
-
// ============================================
|
|
801
|
-
|
|
802
|
-
/**
|
|
803
|
-
* Fertility status enum values
|
|
804
|
-
*
|
|
805
|
-
* @since Jan 29, 2026
|
|
806
|
-
* @example GET /bilibili/fertility/:uid
|
|
807
|
-
* @example GET /bilibili/fertilities
|
|
808
|
-
*/
|
|
809
|
-
export type FertilityStatus = 'menstruating' | 'fertile' | 'ovulating' | 'normal'
|
|
810
|
-
|
|
811
|
-
/**
|
|
812
|
-
* A single cycle history entry - tracks each period event
|
|
813
|
-
* Stored in the `cycleHistory` JSONB column
|
|
814
|
-
*/
|
|
815
|
-
export interface CycleHistoryItem {
|
|
816
|
-
/** Unix timestamp (ms) - when this period started */
|
|
817
|
-
periodStart: number
|
|
818
|
-
/** Optional: days this period lasted (user may not track) */
|
|
819
|
-
periodLength?: number
|
|
820
|
-
/** Unix timestamp (ms) - when this entry was recorded */
|
|
821
|
-
submittedAt: number
|
|
822
|
-
/** Optional: URL or description of the evidence source (e.g., livestream clip, tweet) */
|
|
823
|
-
source?: string
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
* Result of fertility status calculation
|
|
828
|
-
* Returned by calculateFertilityStatus utility
|
|
829
|
-
*/
|
|
830
|
-
export interface CycleCalculationResult {
|
|
831
|
-
status: FertilityStatus
|
|
832
|
-
/** Current day in the menstrual cycle (1-indexed) */
|
|
833
|
-
dayInCycle: number
|
|
834
|
-
/** Calculated from history or user-stated preference */
|
|
835
|
-
effectiveCycleLength: number
|
|
836
|
-
/** Calculated from history or user-stated preference */
|
|
837
|
-
effectivePeriodLength: number
|
|
838
|
-
/** Calculated ovulation day (cycleLength - 14) */
|
|
839
|
-
ovulationDay: number
|
|
840
|
-
/** Predicted next period start date */
|
|
841
|
-
nextPeriod: Date
|
|
842
|
-
/** How many history entries used for calculation */
|
|
843
|
-
dataPoints: number
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
/**
|
|
847
|
-
* Response for GET /bilibili/fertility/:uid
|
|
848
|
-
*/
|
|
849
|
-
export interface FertilityUserResponse {
|
|
850
|
-
uid: number
|
|
851
|
-
user: {
|
|
852
|
-
username: string
|
|
853
|
-
avatar: string | null
|
|
854
|
-
room: number | null
|
|
855
|
-
/** 0 = offline, 1 = live, 2 = rotating */
|
|
856
|
-
liveStatus: number | null
|
|
857
|
-
/** Number of live room membership */
|
|
858
|
-
liveFansCount: number | null
|
|
859
|
-
/** Guild membership info */
|
|
860
|
-
guildInfo: {
|
|
861
|
-
history: {
|
|
862
|
-
name: string
|
|
863
|
-
/** Unix timestamp in milliseconds */
|
|
864
|
-
updatedAt: number
|
|
865
|
-
}[]
|
|
866
|
-
} | null
|
|
867
|
-
/** MCN agency membership info */
|
|
868
|
-
mcnInfo: {
|
|
869
|
-
history: {
|
|
870
|
-
/** MCN agency ID */
|
|
871
|
-
mcnId: number
|
|
872
|
-
/** MCN agency name */
|
|
873
|
-
mcnName: string
|
|
874
|
-
/** Unix timestamp in milliseconds */
|
|
875
|
-
updatedAt: number
|
|
876
|
-
}[]
|
|
877
|
-
} | null
|
|
878
|
-
} | null
|
|
879
|
-
status: FertilityStatus
|
|
880
|
-
dayInCycle: number
|
|
881
|
-
ovulationDay: number
|
|
882
|
-
/** ISO date string (YYYY-MM-DD) */
|
|
883
|
-
nextPeriod: string
|
|
884
|
-
effectiveCycleLength: number
|
|
885
|
-
effectivePeriodLength: number
|
|
886
|
-
dataPoints: number
|
|
887
|
-
userPreferences: {
|
|
888
|
-
cycleLength: number
|
|
889
|
-
periodLength: number
|
|
890
|
-
}
|
|
891
|
-
history: CycleHistoryItem[]
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
/**
|
|
895
|
-
* Single user item in list response
|
|
896
|
-
* @example GET /bilibili/fertilities
|
|
897
|
-
*/
|
|
898
|
-
export interface FertilityListItem {
|
|
899
|
-
uid: number
|
|
900
|
-
user: {
|
|
901
|
-
username: string
|
|
902
|
-
avatar: string | null
|
|
903
|
-
room: number | null
|
|
904
|
-
/** 0 = offline, 1 = live, 2 = rotating */
|
|
905
|
-
liveStatus: number | null
|
|
906
|
-
/** Number of live room followers */
|
|
907
|
-
liveFansCount: number | null
|
|
908
|
-
/** Guild membership info */
|
|
909
|
-
guildInfo: {
|
|
910
|
-
history: {
|
|
911
|
-
name: string
|
|
912
|
-
/** Unix timestamp in milliseconds */
|
|
913
|
-
updatedAt: number
|
|
914
|
-
}[]
|
|
915
|
-
} | null
|
|
916
|
-
/** MCN agency membership info */
|
|
917
|
-
mcnInfo: {
|
|
918
|
-
history: {
|
|
919
|
-
/** MCN agency ID */
|
|
920
|
-
mcnId: number
|
|
921
|
-
/** MCN agency name */
|
|
922
|
-
mcnName: string
|
|
923
|
-
/** Unix timestamp in milliseconds */
|
|
924
|
-
updatedAt: number
|
|
925
|
-
}[]
|
|
926
|
-
} | null
|
|
927
|
-
} | null
|
|
928
|
-
status: FertilityStatus
|
|
929
|
-
dayInCycle: number
|
|
930
|
-
/** Expected ovulation day in cycle (effectiveCycleLength - 14) */
|
|
931
|
-
ovulationDay: number
|
|
932
|
-
/** ISO date string (YYYY-MM-DD) */
|
|
933
|
-
nextPeriod: string
|
|
934
|
-
/** Calculated cycle length based on history (median) or user preference */
|
|
935
|
-
effectiveCycleLength: number
|
|
936
|
-
/** Calculated period length based on history (mean) or user preference */
|
|
937
|
-
effectivePeriodLength: number
|
|
938
|
-
/** Number of history entries used for calculation */
|
|
939
|
-
dataPoints: number
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
/**
|
|
943
|
-
* Response for GET /bilibili/fertilities
|
|
944
|
-
*/
|
|
945
|
-
export interface FertilityListResponse {
|
|
946
|
-
data: FertilityListItem[]
|
|
947
|
-
total: number
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
/**
|
|
951
|
-
* Request body for POST /bilibili/fertility-submit
|
|
952
|
-
*/
|
|
953
|
-
export interface FertilitySubmitRequest {
|
|
954
|
-
/** Bilibili user ID */
|
|
955
|
-
uid: number
|
|
956
|
-
/** Unix timestamp (ms) when period started */
|
|
957
|
-
periodStart: number
|
|
958
|
-
/** Optional: How many days this period lasted (1-15) */
|
|
959
|
-
periodLength?: number
|
|
960
|
-
/** Optional: Update user's preferred cycle length (15-60) */
|
|
961
|
-
cycleLength?: number
|
|
962
|
-
/** Optional: Evidence URL (must be a valid URL, max 256 chars) */
|
|
963
|
-
source?: string
|
|
964
|
-
}
|
|
965
|
-
|
|
966
|
-
/**
|
|
967
|
-
* Success response for POST /bilibili/fertility-submit
|
|
968
|
-
*/
|
|
969
|
-
export interface FertilitySubmitResponse {
|
|
970
|
-
success: true
|
|
971
|
-
uid: number
|
|
972
|
-
historyCount: number
|
|
973
|
-
/** ISO timestamp string */
|
|
974
|
-
lastPeriodStart: string
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
// ============================================
|
|
978
|
-
// Fertility Cycle Entry Management (Admin)
|
|
979
|
-
// ============================================
|
|
980
|
-
|
|
981
|
-
/**
|
|
982
|
-
* Request body for PATCH /laplace/fertility-entry/:uid
|
|
983
|
-
* Updates a specific history entry identified by originalPeriodStart
|
|
984
|
-
*/
|
|
985
|
-
export interface FertilityEntryUpdateRequest {
|
|
986
|
-
/** Required: periodStart of the entry to update (identifier) */
|
|
987
|
-
originalPeriodStart: number
|
|
988
|
-
/** Optional: New periodStart value (Unix timestamp ms) */
|
|
989
|
-
periodStart?: number
|
|
990
|
-
/** Optional: Period length (1-15 days), or null to clear */
|
|
991
|
-
periodLength?: number | null
|
|
992
|
-
/** Optional: Evidence URL, or null to clear */
|
|
993
|
-
source?: string | null
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
/**
|
|
997
|
-
* Request body for DELETE /laplace/fertility-entry/:uid
|
|
998
|
-
* Deletes a specific history entry identified by periodStart
|
|
999
|
-
*/
|
|
1000
|
-
export interface FertilityEntryDeleteRequest {
|
|
1001
|
-
/** Required: periodStart of the entry to delete */
|
|
1002
|
-
periodStart: number
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
|
-
/**
|
|
1006
|
-
* Response for PATCH/DELETE /laplace/fertility-entry/:uid
|
|
1007
|
-
*/
|
|
1008
|
-
export interface FertilityEntryActionResponse {
|
|
1009
|
-
success: true
|
|
1010
|
-
uid: number
|
|
1011
|
-
historyCount: number
|
|
1012
|
-
/** ISO timestamp string */
|
|
1013
|
-
lastPeriodStart: string
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
// ============================================
|
|
1017
|
-
// Fertility Contribution Types (Anonymous Submissions)
|
|
1018
|
-
// ============================================
|
|
1019
|
-
|
|
1020
|
-
/**
|
|
1021
|
-
* Status of a fertility contribution
|
|
1022
|
-
*/
|
|
1023
|
-
export type ContributionStatus = 'pending' | 'approved' | 'rejected'
|
|
1024
|
-
|
|
1025
|
-
/**
|
|
1026
|
-
* Request body for POST /laplace/fertility-contribute
|
|
1027
|
-
* Anonymous users submit period data with Turnstile verification
|
|
1028
|
-
*/
|
|
1029
|
-
export interface FertilityContributeRequest {
|
|
1030
|
-
/** Bilibili user ID */
|
|
1031
|
-
uid: number
|
|
1032
|
-
/** Unix timestamp (ms) when period started */
|
|
1033
|
-
periodStart: number
|
|
1034
|
-
/** Optional: How many days this period lasted (1-15) */
|
|
1035
|
-
periodLength?: number
|
|
1036
|
-
/** Optional: Update user's preferred cycle length (15-60) */
|
|
1037
|
-
cycleLength?: number
|
|
1038
|
-
/** Evidence URL (required, must be HTTP/HTTPS, max 256 chars) */
|
|
1039
|
-
source: string
|
|
1040
|
-
/** Cloudflare Turnstile token for bot verification */
|
|
1041
|
-
turnstileToken: string
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
/**
|
|
1045
|
-
* A fertility contribution record
|
|
1046
|
-
* Returned by GET /laplace/fertility-contributions
|
|
1047
|
-
*/
|
|
1048
|
-
export interface FertilityContribution {
|
|
1049
|
-
id: number
|
|
1050
|
-
uid: number
|
|
1051
|
-
periodStart: number
|
|
1052
|
-
periodLength?: number
|
|
1053
|
-
cycleLength?: number
|
|
1054
|
-
source?: string
|
|
1055
|
-
status: ContributionStatus
|
|
1056
|
-
contributorIp?: string
|
|
1057
|
-
/** ISO timestamp string */
|
|
1058
|
-
createdAt: string
|
|
1059
|
-
/** ISO timestamp string */
|
|
1060
|
-
reviewedAt?: string
|
|
1061
|
-
rejectReason?: string
|
|
1062
|
-
}
|
|
1063
|
-
|
|
1064
|
-
/**
|
|
1065
|
-
* Query parameters for GET /laplace/fertility-contributions
|
|
1066
|
-
*/
|
|
1067
|
-
export interface FertilityContributionsListQuery {
|
|
1068
|
-
/** Filter by status */
|
|
1069
|
-
status?: ContributionStatus
|
|
1070
|
-
/** Filter by target user UID */
|
|
1071
|
-
uid?: number
|
|
1072
|
-
/** Maximum number of results (1-500, default: 100) */
|
|
1073
|
-
limit?: number
|
|
1074
|
-
/** Offset for pagination (default: 0) */
|
|
1075
|
-
offset?: number
|
|
1076
|
-
/** Field to sort by (default: 'createdAt') */
|
|
1077
|
-
sortBy?: 'createdAt' | 'reviewedAt'
|
|
1078
|
-
/** Sort order (default: 'desc') */
|
|
1079
|
-
sort?: 'asc' | 'desc'
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
|
-
/**
|
|
1083
|
-
* Response for GET /laplace/fertility-contributions
|
|
1084
|
-
*/
|
|
1085
|
-
export interface FertilityContributionsListResponse {
|
|
1086
|
-
data: FertilityContribution[]
|
|
1087
|
-
total: number
|
|
1088
|
-
}
|
|
1089
|
-
|
|
1090
|
-
/**
|
|
1091
|
-
* Success response for POST /laplace/fertility-contribute
|
|
1092
|
-
*/
|
|
1093
|
-
export interface FertilityContributeResponse {
|
|
1094
|
-
success: true
|
|
1095
|
-
id: number
|
|
1096
|
-
message: string
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
/**
|
|
1100
|
-
* Request body for POST /laplace/fertility-contribution-reject/:id
|
|
1101
|
-
*/
|
|
1102
|
-
export interface FertilityContributionRejectRequest {
|
|
1103
|
-
reason?: string
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
|
-
/**
|
|
1107
|
-
* Response for approve/reject endpoints
|
|
1108
|
-
*/
|
|
1109
|
-
export interface FertilityContributionActionResponse {
|
|
1110
|
-
success: true
|
|
1111
|
-
id: number
|
|
1112
|
-
status: ContributionStatus
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
/**
|
|
1116
|
-
* Request body for PATCH /laplace/fertility-contribution-update/:id
|
|
1117
|
-
* All fields are optional - only provided fields will be updated
|
|
1118
|
-
*/
|
|
1119
|
-
export interface FertilityContributionUpdateRequest {
|
|
1120
|
-
/** Bilibili user ID */
|
|
1121
|
-
uid?: number
|
|
1122
|
-
/** Unix timestamp (ms) when period started */
|
|
1123
|
-
periodStart?: number
|
|
1124
|
-
/** How many days this period lasted (1-15), or null to clear */
|
|
1125
|
-
periodLength?: number | null
|
|
1126
|
-
/** User's preferred cycle length (15-60), or null to clear */
|
|
1127
|
-
cycleLength?: number | null
|
|
1128
|
-
/** Evidence URL (must be HTTP/HTTPS, max 256 chars), or null to remove */
|
|
1129
|
-
source?: string | null
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
/**
|
|
1133
|
-
* Response for PATCH /laplace/fertility-contribution-update/:id
|
|
1134
|
-
*/
|
|
1135
|
-
export interface FertilityContributionUpdateResponse {
|
|
1136
|
-
success: true
|
|
1137
|
-
id: number
|
|
1138
|
-
contribution?: FertilityContribution
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
/**
|
|
1142
|
-
* Response for GET /laplace/fertility-contribution-stats
|
|
1143
|
-
* Public endpoint showing contribution statistics
|
|
1144
|
-
*/
|
|
1145
|
-
export interface FertilityContributionStatsResponse {
|
|
1146
|
-
pending: number
|
|
1147
|
-
approved: number
|
|
1148
|
-
rejected: number
|
|
1149
|
-
total: number
|
|
1150
|
-
/** Average time from submission to approval/rejection in milliseconds */
|
|
1151
|
-
avgProcessingTimeMs: number | null
|
|
1152
|
-
/** Average time from submission to approval/rejection in hours (1 decimal) */
|
|
1153
|
-
avgProcessingTimeHours: number | null
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
// ============================================
|
|
1157
|
-
// Meme Types
|
|
1158
|
-
// ============================================
|
|
1159
|
-
|
|
1160
|
-
/** Meme list item with resolved tags and user info (GET /laplace/memes) */
|
|
1161
|
-
export interface Meme {
|
|
1162
|
-
id: number
|
|
1163
|
-
uid: number
|
|
1164
|
-
content: string
|
|
1165
|
-
tags: TagWithCount[]
|
|
1166
|
-
copyCount: number
|
|
1167
|
-
createdAt: string
|
|
1168
|
-
updatedAt: string
|
|
1169
|
-
}
|
|
1170
|
-
|
|
1171
|
-
/** Meme with user details (list response item) */
|
|
1172
|
-
export interface MemeWithUser extends Meme {
|
|
1173
|
-
username: string | null
|
|
1174
|
-
avatar: string | null
|
|
1175
|
-
room: number | null
|
|
1176
|
-
}
|
|
1177
|
-
|
|
1178
|
-
/** Query params for GET /laplace/memes */
|
|
1179
|
-
export interface MemeListQuery {
|
|
1180
|
-
uid?: number
|
|
1181
|
-
tags?: number[]
|
|
1182
|
-
sortBy?: 'copyCount' | 'createdAt'
|
|
1183
|
-
sort?: 'asc' | 'desc'
|
|
1184
|
-
limit?: number
|
|
1185
|
-
offset?: number
|
|
1186
|
-
}
|
|
1187
|
-
|
|
1188
|
-
/** Response for GET /laplace/memes */
|
|
1189
|
-
export interface MemeListResponse {
|
|
1190
|
-
data: MemeWithUser[]
|
|
1191
|
-
total: number
|
|
1192
|
-
}
|
|
1193
|
-
|
|
1194
|
-
/** Request body for POST /laplace/memes (admin direct add) */
|
|
1195
|
-
export interface MemeCreateRequest {
|
|
1196
|
-
uid: number
|
|
1197
|
-
content: string
|
|
1198
|
-
}
|
|
1199
|
-
|
|
1200
|
-
/** Request body for PATCH /laplace/memes/:id (update approved meme) */
|
|
1201
|
-
export interface MemeUpdateRequest {
|
|
1202
|
-
content?: string
|
|
1203
|
-
tags?: number[] | null
|
|
1204
|
-
}
|
|
1205
|
-
|
|
1206
|
-
/** Response for POST /laplace/memes and DELETE /laplace/memes/:id (admin only) */
|
|
1207
|
-
export interface MemeActionResponse {
|
|
1208
|
-
success: true
|
|
1209
|
-
id: number
|
|
1210
|
-
}
|
|
1211
|
-
|
|
1212
|
-
/** Request body for POST /laplace/meme-contribute */
|
|
1213
|
-
export interface MemeContributeRequest {
|
|
1214
|
-
uid: number
|
|
1215
|
-
content: string
|
|
1216
|
-
note?: string
|
|
1217
|
-
/** Existing tag IDs to suggest for this meme (max 10) */
|
|
1218
|
-
tags?: number[]
|
|
1219
|
-
turnstileToken: string
|
|
1220
|
-
}
|
|
1221
|
-
|
|
1222
|
-
/** Success response for POST /laplace/meme-contribute */
|
|
1223
|
-
export interface MemeContributeResponse {
|
|
1224
|
-
success: true
|
|
1225
|
-
id: number
|
|
1226
|
-
message: string
|
|
1227
|
-
}
|
|
1228
|
-
|
|
1229
|
-
/** Meme contribution record (GET /laplace/meme-contributions) */
|
|
1230
|
-
export interface MemeContribution {
|
|
1231
|
-
id: number
|
|
1232
|
-
uid: number
|
|
1233
|
-
content: string
|
|
1234
|
-
note?: string | null
|
|
1235
|
-
tags?: number[] | null
|
|
1236
|
-
status: ContributionStatus
|
|
1237
|
-
contributorIp?: string
|
|
1238
|
-
createdAt: string
|
|
1239
|
-
reviewedAt?: string
|
|
1240
|
-
rejectReason?: string
|
|
1241
|
-
}
|
|
1242
|
-
|
|
1243
|
-
/** Query params for GET /laplace/meme-contributions */
|
|
1244
|
-
export interface MemeContributionsListQuery {
|
|
1245
|
-
status?: ContributionStatus
|
|
1246
|
-
uid?: number
|
|
1247
|
-
limit?: number
|
|
1248
|
-
offset?: number
|
|
1249
|
-
sortBy?: 'createdAt' | 'reviewedAt'
|
|
1250
|
-
sort?: 'asc' | 'desc'
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
/** Response for GET /laplace/meme-contributions */
|
|
1254
|
-
export interface MemeContributionsListResponse {
|
|
1255
|
-
data: MemeContribution[]
|
|
1256
|
-
total: number
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
/** Request body for POST /laplace/meme-contribution-reject/:id */
|
|
1260
|
-
export interface MemeContributionRejectRequest {
|
|
1261
|
-
reason?: string
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
/** Response for approve/reject meme contribution */
|
|
1265
|
-
export interface MemeContributionActionResponse {
|
|
1266
|
-
success: true
|
|
1267
|
-
id: number
|
|
1268
|
-
status: ContributionStatus
|
|
1269
|
-
}
|
|
1270
|
-
|
|
1271
|
-
/** Request body for PATCH /laplace/meme-contribution-update/:id */
|
|
1272
|
-
export interface MemeContributionUpdateRequest {
|
|
1273
|
-
uid?: number
|
|
1274
|
-
content?: string
|
|
1275
|
-
note?: string | null
|
|
1276
|
-
tags?: number[] | null
|
|
1277
|
-
}
|
|
1278
|
-
|
|
1279
|
-
/** Response for PATCH /laplace/meme-contribution-update/:id */
|
|
1280
|
-
export interface MemeContributionUpdateResponse {
|
|
1281
|
-
success: true
|
|
1282
|
-
id: number
|
|
1283
|
-
contribution?: MemeContribution
|
|
1284
|
-
}
|
|
1285
|
-
|
|
1286
|
-
/** Response for GET /laplace/meme-contribution-stats */
|
|
1287
|
-
export interface MemeContributionStatsResponse {
|
|
1288
|
-
pending: number
|
|
1289
|
-
approved: number
|
|
1290
|
-
rejected: number
|
|
1291
|
-
total: number
|
|
1292
|
-
avgProcessingTimeMs: number | null
|
|
1293
|
-
avgProcessingTimeHours: number | null
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
|
-
/** Response for POST /laplace/meme-copy/:id */
|
|
1297
|
-
export interface MemeCopyResponse {
|
|
1298
|
-
success: true
|
|
1299
|
-
id: number
|
|
1300
|
-
copyCount: number
|
|
1301
|
-
}
|
|
1302
|
-
|
|
1303
|
-
// ============================================
|
|
1304
|
-
// Guild History Types
|
|
1305
|
-
// ============================================
|
|
1306
|
-
|
|
1307
|
-
/**
|
|
1308
|
-
* A single guild history entry - tracks each guild membership change
|
|
1309
|
-
* Stored in the `guildInfo.history` JSONB column on bilibili_users table
|
|
1310
|
-
*/
|
|
1311
|
-
export interface GuildHistoryItem {
|
|
1312
|
-
/** Guild name */
|
|
1313
|
-
name: string
|
|
1314
|
-
/** Unix timestamp (ms) - when this guild membership was recorded */
|
|
1315
|
-
updatedAt: number
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
|
-
// ============================================
|
|
1319
|
-
// MCN History Types
|
|
1320
|
-
// ============================================
|
|
1321
|
-
|
|
1322
|
-
/**
|
|
1323
|
-
* A single MCN agency history entry - tracks each MCN membership change
|
|
1324
|
-
* Stored in the `mcnInfo.history` JSONB column on bilibili_users table
|
|
1325
|
-
*/
|
|
1326
|
-
export interface McnHistoryItem {
|
|
1327
|
-
/** MCN agency ID */
|
|
1328
|
-
mcnId: number
|
|
1329
|
-
/** MCN agency name */
|
|
1330
|
-
mcnName: string
|
|
1331
|
-
/** Unix timestamp (ms) - when this MCN membership was recorded */
|
|
1332
|
-
updatedAt: number
|
|
1333
|
-
}
|
|
1334
|
-
|
|
1335
|
-
/**
|
|
1336
|
-
* Response for GET /laplace/guild-entry/:uid
|
|
1337
|
-
* Returns guild history for a specific user
|
|
1338
|
-
*/
|
|
1339
|
-
export interface GuildHistoryResponse {
|
|
1340
|
-
success: true
|
|
1341
|
-
uid: number
|
|
1342
|
-
user: {
|
|
1343
|
-
id: number
|
|
1344
|
-
username: string
|
|
1345
|
-
avatar: string | null
|
|
1346
|
-
room: number | null
|
|
1347
|
-
}
|
|
1348
|
-
history: GuildHistoryItem[]
|
|
1349
|
-
historyCount: number
|
|
1350
|
-
}
|
|
1351
|
-
|
|
1352
|
-
/**
|
|
1353
|
-
* Request body for POST /laplace/guild-entry/:uid
|
|
1354
|
-
* Adds a new guild history entry
|
|
1355
|
-
*/
|
|
1356
|
-
export interface GuildEntryAddRequest {
|
|
1357
|
-
/** Guild name (max 100 chars, no special characters) */
|
|
1358
|
-
name: string
|
|
1359
|
-
/** Optional: Unix timestamp (ms) - defaults to current time */
|
|
1360
|
-
updatedAt?: number
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
|
-
/**
|
|
1364
|
-
* Request body for PATCH /laplace/guild-entry/:uid
|
|
1365
|
-
* Updates a specific guild history entry identified by originalUpdatedAt
|
|
1366
|
-
*/
|
|
1367
|
-
export interface GuildEntryUpdateRequest {
|
|
1368
|
-
/** Required: updatedAt of the entry to update (identifier) */
|
|
1369
|
-
originalUpdatedAt: number
|
|
1370
|
-
/** Optional: New guild name */
|
|
1371
|
-
name?: string
|
|
1372
|
-
/** Optional: New timestamp (Unix timestamp ms) */
|
|
1373
|
-
updatedAt?: number
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
/**
|
|
1377
|
-
* Request body for DELETE /laplace/guild-entry/:uid
|
|
1378
|
-
* Deletes a specific guild history entry identified by updatedAt
|
|
1379
|
-
*/
|
|
1380
|
-
export interface GuildEntryDeleteRequest {
|
|
1381
|
-
/** Required: updatedAt of the entry to delete */
|
|
1382
|
-
updatedAt: number
|
|
1383
|
-
}
|
|
1384
|
-
|
|
1385
|
-
/**
|
|
1386
|
-
* Response for POST/PATCH/DELETE /laplace/guild-entry/:uid
|
|
1387
|
-
*/
|
|
1388
|
-
export interface GuildEntryActionResponse {
|
|
1389
|
-
success: true
|
|
1390
|
-
uid: number
|
|
1391
|
-
historyCount: number
|
|
1392
|
-
}
|
|
1393
|
-
|
|
1394
|
-
// ============================================
|
|
1395
|
-
// MCN Batch Update Types
|
|
1396
|
-
// ============================================
|
|
1397
|
-
|
|
1398
|
-
/**
|
|
1399
|
-
* A single entry in the MCN batch update request
|
|
1400
|
-
* Maps to the raw export format from the MCN agency data (laplace-scripts)
|
|
1401
|
-
*/
|
|
1402
|
-
export interface McnBatchUpdateEntry {
|
|
1403
|
-
/** User's Bilibili UID (maps to bilibili_users.id) */
|
|
1404
|
-
upper_mid: number
|
|
1405
|
-
/** MCN agency ID */
|
|
1406
|
-
mcn_id: number
|
|
1407
|
-
/** MCN agency company name */
|
|
1408
|
-
mcn_company_name: string
|
|
1409
|
-
}
|
|
1410
|
-
|
|
1411
|
-
/**
|
|
1412
|
-
* Request body for POST /laplace/mcn-batch-update
|
|
1413
|
-
* Batch updates MCN info for multiple users (max 10,000 entries)
|
|
1414
|
-
*/
|
|
1415
|
-
export interface McnBatchUpdateRequest {
|
|
1416
|
-
entries: McnBatchUpdateEntry[]
|
|
1417
|
-
}
|
|
1418
|
-
|
|
1419
|
-
/**
|
|
1420
|
-
* Response for POST /laplace/mcn-batch-update
|
|
1421
|
-
*/
|
|
1422
|
-
export interface McnBatchUpdateResponse {
|
|
1423
|
-
success: true
|
|
1424
|
-
/** Total entries received */
|
|
1425
|
-
total: number
|
|
1426
|
-
/** Count of users whose mcnInfo was changed */
|
|
1427
|
-
updated: number
|
|
1428
|
-
/** UIDs whose mcnInfo was changed (new MCN or MCN change) */
|
|
1429
|
-
updatedUids: number[]
|
|
1430
|
-
/** Count of users whose MCN matched the latest history entry (no-op) */
|
|
1431
|
-
unchanged: number
|
|
1432
|
-
/** UIDs whose MCN matched the latest history entry (no-op) */
|
|
1433
|
-
unchangedUids: number[]
|
|
1434
|
-
/** Count of UIDs not found in bilibili_users */
|
|
1435
|
-
skipped: number
|
|
1436
|
-
/** List of missing UIDs */
|
|
1437
|
-
skippedUids: number[]
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
// ============================================
|
|
1441
|
-
// Guild Batch Update Types
|
|
1442
|
-
// ============================================
|
|
1443
|
-
|
|
1444
|
-
/**
|
|
1445
|
-
* A single entry in the guild batch update request
|
|
1446
|
-
* Maps to the raw export format from the agency data
|
|
1447
|
-
*/
|
|
1448
|
-
export interface GuildBatchUpdateEntry {
|
|
1449
|
-
/** User's Bilibili UID (maps to bilibili_users.id) */
|
|
1450
|
-
upper_mid: number
|
|
1451
|
-
/** Guild name (null if user is not in any guild) */
|
|
1452
|
-
live_guild_name: string | null
|
|
1453
|
-
}
|
|
1454
|
-
|
|
1455
|
-
/**
|
|
1456
|
-
* Request body for POST /laplace/guild-batch-update
|
|
1457
|
-
* Batch updates guild info for multiple users (max 10,000 entries)
|
|
1458
|
-
*/
|
|
1459
|
-
export interface GuildBatchUpdateRequest {
|
|
1460
|
-
entries: GuildBatchUpdateEntry[]
|
|
1461
|
-
}
|
|
1462
|
-
|
|
1463
|
-
/**
|
|
1464
|
-
* Response for POST /laplace/guild-batch-update
|
|
1465
|
-
*/
|
|
1466
|
-
export interface GuildBatchUpdateResponse {
|
|
1467
|
-
success: true
|
|
1468
|
-
/** Total entries received */
|
|
1469
|
-
total: number
|
|
1470
|
-
/** Count of users whose guildInfo was changed */
|
|
1471
|
-
updated: number
|
|
1472
|
-
/** UIDs whose guildInfo was changed (new guild or guild change) */
|
|
1473
|
-
updatedUids: number[]
|
|
1474
|
-
/** Count of users whose guild matched the latest history entry (no-op) */
|
|
1475
|
-
unchanged: number
|
|
1476
|
-
/** UIDs whose guild matched the latest history entry (no-op) */
|
|
1477
|
-
unchangedUids: number[]
|
|
1478
|
-
/** Count of UIDs not found in bilibili_users */
|
|
1479
|
-
skipped: number
|
|
1480
|
-
/** List of missing UIDs */
|
|
1481
|
-
skippedUids: number[]
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
|
|
1485
|
-
/** Migrated from experiments.sparanoid.net */
|
|
1486
|
-
export namespace Experiments {
|
|
1487
|
-
/**
|
|
1488
|
-
* fixer.io API
|
|
1489
|
-
* @link http://data.fixer.io/api/latest?access_key=
|
|
1490
|
-
* */
|
|
1491
|
-
interface Fixer {
|
|
1492
|
-
success: boolean
|
|
1493
|
-
timestamp: number
|
|
1494
|
-
base: string
|
|
1495
|
-
date: string
|
|
1496
|
-
rates: FixerRates
|
|
1497
|
-
}
|
|
1498
|
-
|
|
1499
|
-
/** Props of Fixer */
|
|
1500
|
-
interface FixerRates {
|
|
1501
|
-
[key: string]: number
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
|
-
/**
|
|
1505
|
-
* Spotify API
|
|
1506
|
-
*/
|
|
1507
|
-
export namespace Spotify {
|
|
1508
|
-
/**
|
|
1509
|
-
* Spotify get access token
|
|
1510
|
-
* @link https://developer.spotify.com/documentation/web-api/tutorials/getting-started
|
|
1511
|
-
*/
|
|
1512
|
-
interface Token {
|
|
1513
|
-
access_token: string
|
|
1514
|
-
token_type: 'Bearer'
|
|
1515
|
-
expires_in: 3600
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
/**
|
|
1519
|
-
* Search result
|
|
1520
|
-
*/
|
|
1521
|
-
export interface Search {
|
|
1522
|
-
tracks: Tracks
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
/** Track list of `Search` */
|
|
1526
|
-
export interface Tracks {
|
|
1527
|
-
href: string
|
|
1528
|
-
items: Track[] | []
|
|
1529
|
-
limit: number
|
|
1530
|
-
next: string | null
|
|
1531
|
-
offset: number
|
|
1532
|
-
previous: null
|
|
1533
|
-
total: number
|
|
1534
|
-
}
|
|
1535
|
-
|
|
1536
|
-
/** Track item of `Tracks` */
|
|
1537
|
-
export interface Track {
|
|
1538
|
-
album: Album
|
|
1539
|
-
artists: Artist[]
|
|
1540
|
-
available_markets: string[]
|
|
1541
|
-
disc_number: number
|
|
1542
|
-
duration_ms: number
|
|
1543
|
-
explicit: boolean
|
|
1544
|
-
external_ids: ExternalIDS
|
|
1545
|
-
external_urls: ExternalUrls
|
|
1546
|
-
href: string
|
|
1547
|
-
id: string
|
|
1548
|
-
is_local: boolean
|
|
1549
|
-
name: string
|
|
1550
|
-
popularity: number
|
|
1551
|
-
preview_url: null
|
|
1552
|
-
track_number: number
|
|
1553
|
-
type: string
|
|
1554
|
-
uri: string
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
/** Album item of `Track` */
|
|
1558
|
-
export interface Album {
|
|
1559
|
-
album_type: string
|
|
1560
|
-
artists: Artist[]
|
|
1561
|
-
available_markets: string[]
|
|
1562
|
-
external_urls: ExternalUrls
|
|
1563
|
-
href: string
|
|
1564
|
-
id: string
|
|
1565
|
-
images: Image[] | []
|
|
1566
|
-
name: string
|
|
1567
|
-
release_date: Date
|
|
1568
|
-
release_date_precision: string
|
|
1569
|
-
total_tracks: number
|
|
1570
|
-
type: string
|
|
1571
|
-
uri: string
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
/** Artist props */
|
|
1575
|
-
export interface Artist {
|
|
1576
|
-
external_urls: ExternalUrls
|
|
1577
|
-
href: string
|
|
1578
|
-
id: string
|
|
1579
|
-
name: string
|
|
1580
|
-
type: string
|
|
1581
|
-
uri: string
|
|
1582
|
-
}
|
|
1583
|
-
|
|
1584
|
-
/** External URLs */
|
|
1585
|
-
export interface ExternalUrls {
|
|
1586
|
-
spotify: string
|
|
1587
|
-
}
|
|
1588
|
-
|
|
1589
|
-
/** 专辑封面 */
|
|
1590
|
-
export interface Image {
|
|
1591
|
-
height: number
|
|
1592
|
-
url: string
|
|
1593
|
-
width: number
|
|
1594
|
-
}
|
|
1595
|
-
|
|
1596
|
-
/** External IDs */
|
|
1597
|
-
export interface ExternalIDS {
|
|
1598
|
-
isrc: string
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
|
|
1602
|
-
/** Apple API */
|
|
1603
|
-
export namespace Apple {
|
|
1604
|
-
/** Apple Music API */
|
|
1605
|
-
export interface Music {
|
|
1606
|
-
results: MusicSearchResults
|
|
1607
|
-
meta: MusicSearchMeta
|
|
1608
|
-
}
|
|
1609
|
-
|
|
1610
|
-
/** Props of `Music` */
|
|
1611
|
-
export interface MusicSearchMeta {
|
|
1612
|
-
results: MusicSearchMetaResults
|
|
1613
|
-
}
|
|
1614
|
-
|
|
1615
|
-
/** Props of `MusicSearchMeta` */
|
|
1616
|
-
export interface MusicSearchMetaResults {
|
|
1617
|
-
order: string[]
|
|
1618
|
-
rawOrder: string[]
|
|
1619
|
-
}
|
|
1620
|
-
|
|
1621
|
-
/** Props of `Music` */
|
|
1622
|
-
export interface MusicSearchResults {
|
|
1623
|
-
songs: Songs
|
|
1624
|
-
}
|
|
1625
|
-
|
|
1626
|
-
/** Props of `Songs` */
|
|
1627
|
-
export interface Songs {
|
|
1628
|
-
href: string
|
|
1629
|
-
next: string
|
|
1630
|
-
data: Datum[]
|
|
1631
|
-
}
|
|
1632
|
-
|
|
1633
|
-
/** Props of `Datum` */
|
|
1634
|
-
export interface Datum {
|
|
1635
|
-
id: string
|
|
1636
|
-
type: string
|
|
1637
|
-
href: string
|
|
1638
|
-
attributes: Attributes
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
|
-
/** Props of `Attributes` */
|
|
1642
|
-
export interface Attributes {
|
|
1643
|
-
albumName: string
|
|
1644
|
-
genreNames: string[]
|
|
1645
|
-
trackNumber: number
|
|
1646
|
-
durationInMillis: number
|
|
1647
|
-
releaseDate: Date
|
|
1648
|
-
isrc: string
|
|
1649
|
-
artwork: Artwork
|
|
1650
|
-
playParams: PlayParams
|
|
1651
|
-
url: string
|
|
1652
|
-
discNumber: number
|
|
1653
|
-
hasCredits: boolean
|
|
1654
|
-
isAppleDigitalMaster: boolean
|
|
1655
|
-
hasLyrics: boolean
|
|
1656
|
-
name: string
|
|
1657
|
-
previews: Preview[]
|
|
1658
|
-
artistName: string
|
|
1659
|
-
composerName?: string
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
|
-
/** Props of `Attributes` */
|
|
1663
|
-
export interface Artwork {
|
|
1664
|
-
width: number
|
|
1665
|
-
height: number
|
|
1666
|
-
url: string
|
|
1667
|
-
bgColor: string
|
|
1668
|
-
textColor1: string
|
|
1669
|
-
textColor2: string
|
|
1670
|
-
textColor3: string
|
|
1671
|
-
textColor4: string
|
|
1672
|
-
}
|
|
1673
|
-
|
|
1674
|
-
/** Props of `Attributes` */
|
|
1675
|
-
export interface PlayParams {
|
|
1676
|
-
id: string
|
|
1677
|
-
kind: string
|
|
1678
|
-
}
|
|
1679
|
-
|
|
1680
|
-
/** Props of `Attributes` */
|
|
1681
|
-
export interface Preview {
|
|
1682
|
-
url: string
|
|
1683
|
-
}
|
|
1684
|
-
}
|
|
1685
|
-
|
|
1686
|
-
/**
|
|
1687
|
-
* Address Completion
|
|
1688
|
-
* @link /experiments/address-completion
|
|
1689
|
-
*/
|
|
1690
|
-
export interface AddressCompletion {
|
|
1691
|
-
code: number
|
|
1692
|
-
/** 报错时会返回 */
|
|
1693
|
-
message?: string
|
|
1694
|
-
data: {
|
|
1695
|
-
/** 地址信息,通常为 `poiInfo` + `houseInfo` */
|
|
1696
|
-
addrInfo: string
|
|
1697
|
-
/** 门牌号,通常为 address line 2 */
|
|
1698
|
-
houseInfo: string
|
|
1699
|
-
/** 详细地址,通常为 address line 1 */
|
|
1700
|
-
poiInfo: string
|
|
1701
|
-
/** 街道 */
|
|
1702
|
-
street: string
|
|
1703
|
-
/** 城市 */
|
|
1704
|
-
city: string
|
|
1705
|
-
/** 地区 */
|
|
1706
|
-
district: string
|
|
1707
|
-
/** 省 */
|
|
1708
|
-
province: string
|
|
1709
|
-
/** 收件人 */
|
|
1710
|
-
person: string
|
|
1711
|
-
/** 手机/电话 */
|
|
1712
|
-
phone: string
|
|
1713
|
-
}
|
|
1714
|
-
}
|
|
1715
|
-
}
|
|
1716
|
-
}
|
|
1717
|
-
|
|
1718
|
-
/**
|
|
1719
|
-
* WebSocket 协议
|
|
1720
|
-
*/
|
|
1721
|
-
export namespace WebSocket {
|
|
1722
|
-
/**
|
|
1723
|
-
* 线上环境
|
|
1724
|
-
*/
|
|
1725
|
-
export namespace Prod {
|
|
1726
|
-
/**
|
|
1727
|
-
* 内置系统消息
|
|
1728
|
-
*/
|
|
1729
|
-
export interface SYSTEM_MSG {
|
|
1730
|
-
timestamp: number
|
|
1731
|
-
username?: string
|
|
1732
|
-
message?: string
|
|
1733
|
-
}
|
|
1734
|
-
}
|
|
1735
|
-
}
|
|
1736
|
-
}
|
|
1
|
+
import type { StringBoolean } from '../common'
|
|
1737
2
|
|
|
1738
3
|
/**
|
|
1739
4
|
* 哔哩哔哩内部 typings
|
|
@@ -6058,6 +4323,8 @@ export declare namespace BilibiliInternal {
|
|
|
6058
4323
|
cid: number
|
|
6059
4324
|
/** 视频分辨率 */
|
|
6060
4325
|
dimension: VideoMetaDimension
|
|
4326
|
+
/** 合集 ID */
|
|
4327
|
+
season_id?: number
|
|
6061
4328
|
premiere: null
|
|
6062
4329
|
/** 青少年模式,`1` 为开启 */
|
|
6063
4330
|
teenage_mode: number
|
|
@@ -6077,7 +4344,7 @@ export declare namespace BilibiliInternal {
|
|
|
6077
4344
|
pages: VideoMetaPage[]
|
|
6078
4345
|
/** 字幕信息 */
|
|
6079
4346
|
subtitle: VideoMetaSubtitle
|
|
6080
|
-
label
|
|
4347
|
+
label?: { type: number }
|
|
6081
4348
|
/** 是否为合集展示 */
|
|
6082
4349
|
is_season_display: boolean
|
|
6083
4350
|
/** 用户装扮信息 */
|
|
@@ -6086,7 +4353,7 @@ export declare namespace BilibiliInternal {
|
|
|
6086
4353
|
url_image_ani_cut: string
|
|
6087
4354
|
}
|
|
6088
4355
|
/** 荣誉信息 */
|
|
6089
|
-
honor_reply: { honor
|
|
4356
|
+
honor_reply: { honor?: VideoMetaHonor[] }
|
|
6090
4357
|
like_icon: string
|
|
6091
4358
|
need_jump_bv: boolean
|
|
6092
4359
|
disable_show_up_info: boolean
|
|
@@ -9069,908 +7336,3 @@ export declare namespace BilibiliInternal {
|
|
|
9069
7336
|
}
|
|
9070
7337
|
}
|
|
9071
7338
|
}
|
|
9072
|
-
|
|
9073
|
-
/**
|
|
9074
|
-
* vtbs.moe API
|
|
9075
|
-
*/
|
|
9076
|
-
export declare namespace Vtbs {
|
|
9077
|
-
/**
|
|
9078
|
-
* VUP 列表,经过筛选的,并非 vtbs 官方列表,由 vtb 和 vdb 聚合而来
|
|
9079
|
-
* @link https://github.com/sparanoid/vup.json
|
|
9080
|
-
*/
|
|
9081
|
-
export interface VupListItem {
|
|
9082
|
-
uid: number
|
|
9083
|
-
name: string
|
|
9084
|
-
type: string
|
|
9085
|
-
room: number | null
|
|
9086
|
-
face: string
|
|
9087
|
-
group_name: string
|
|
9088
|
-
}
|
|
9089
|
-
|
|
9090
|
-
/**
|
|
9091
|
-
* 根据 vup list 增强后的数据
|
|
9092
|
-
*/
|
|
9093
|
-
export interface EnrichedGlobalGuardItem extends GlobalGuardItem {
|
|
9094
|
-
uid: number
|
|
9095
|
-
_t1: number
|
|
9096
|
-
_t2: number
|
|
9097
|
-
_t3: number
|
|
9098
|
-
_price_t1: number
|
|
9099
|
-
_price_t2: number
|
|
9100
|
-
_price_t3: number
|
|
9101
|
-
_price_sum: number
|
|
9102
|
-
ddEnriched: VupListItem[][]
|
|
9103
|
-
}
|
|
9104
|
-
|
|
9105
|
-
/**
|
|
9106
|
-
* dd 大航海
|
|
9107
|
-
*/
|
|
9108
|
-
export interface GlobalGuard {
|
|
9109
|
-
[key: string]: GlobalGuardItem
|
|
9110
|
-
}
|
|
9111
|
-
|
|
9112
|
-
/**
|
|
9113
|
-
* dd 大航海 item
|
|
9114
|
-
* @link https://api.vtbs.moe/v1/guard/all
|
|
9115
|
-
* @link https://api.vtbs.moe/v1/guard/some
|
|
9116
|
-
*/
|
|
9117
|
-
export interface GlobalGuardItem {
|
|
9118
|
-
uname: string
|
|
9119
|
-
face: string
|
|
9120
|
-
mid: number
|
|
9121
|
-
dd: [number[], number[], number[]]
|
|
9122
|
-
}
|
|
9123
|
-
|
|
9124
|
-
/**
|
|
9125
|
-
* 大航海历史 chart
|
|
9126
|
-
*/
|
|
9127
|
-
export interface LiveGuardsHistoryItem {
|
|
9128
|
-
guardNum: number
|
|
9129
|
-
time: number
|
|
9130
|
-
}
|
|
9131
|
-
|
|
9132
|
-
/**
|
|
9133
|
-
* 直播间详细信息
|
|
9134
|
-
*/
|
|
9135
|
-
export interface LiveDetails {
|
|
9136
|
-
mid: number
|
|
9137
|
-
uuid: string
|
|
9138
|
-
uname: string
|
|
9139
|
-
video: number
|
|
9140
|
-
roomid: number
|
|
9141
|
-
sign: string
|
|
9142
|
-
notice: string
|
|
9143
|
-
face: string
|
|
9144
|
-
rise: number
|
|
9145
|
-
topPhoto: string
|
|
9146
|
-
archiveView: number
|
|
9147
|
-
follower: number
|
|
9148
|
-
liveStatus: number
|
|
9149
|
-
recordNum: number
|
|
9150
|
-
guardNum: number
|
|
9151
|
-
lastLive: {
|
|
9152
|
-
online: number
|
|
9153
|
-
time: number
|
|
9154
|
-
}
|
|
9155
|
-
guardChange: number
|
|
9156
|
-
/**
|
|
9157
|
-
* 总督,提督,舰长
|
|
9158
|
-
*/
|
|
9159
|
-
guardType: [number, number, number]
|
|
9160
|
-
online: number
|
|
9161
|
-
title: string
|
|
9162
|
-
time: number
|
|
9163
|
-
liveStartTime: number
|
|
9164
|
-
}
|
|
9165
|
-
}
|
|
9166
|
-
|
|
9167
|
-
/**
|
|
9168
|
-
* danmakus.com API
|
|
9169
|
-
* @link https://ukamnads.icu/swagger
|
|
9170
|
-
*/
|
|
9171
|
-
export declare namespace Danmakus {
|
|
9172
|
-
/**
|
|
9173
|
-
* 直播实时排行榜
|
|
9174
|
-
* @link https://ukamnads.icu/api/v2/living
|
|
9175
|
-
*/
|
|
9176
|
-
export interface RankingProps {
|
|
9177
|
-
/**
|
|
9178
|
-
* 200: success
|
|
9179
|
-
*/
|
|
9180
|
-
code: number
|
|
9181
|
-
message: string
|
|
9182
|
-
data: RankingItem[]
|
|
9183
|
-
}
|
|
9184
|
-
|
|
9185
|
-
/** Item of `RankingProps` */
|
|
9186
|
-
export interface RankingItem {
|
|
9187
|
-
uId: number
|
|
9188
|
-
uName: string
|
|
9189
|
-
roomId: number
|
|
9190
|
-
faceUrl: string
|
|
9191
|
-
frameUrl: string
|
|
9192
|
-
isLiving: boolean
|
|
9193
|
-
title: string
|
|
9194
|
-
tags: string[]
|
|
9195
|
-
lastLiveDate: number
|
|
9196
|
-
lastLiveDanmakuCount: number
|
|
9197
|
-
totalDanmakuCount: number
|
|
9198
|
-
totalIncome: {
|
|
9199
|
-
value: string
|
|
9200
|
-
type: 'Big Number'
|
|
9201
|
-
}
|
|
9202
|
-
totalLiveCount: number
|
|
9203
|
-
totalLiveSecond: number
|
|
9204
|
-
addDate: Date
|
|
9205
|
-
/** can be empty in some rare case due to some program error */
|
|
9206
|
-
livingInfo?: LiveItem
|
|
9207
|
-
commentCount: number
|
|
9208
|
-
lastLiveIncome: number
|
|
9209
|
-
}
|
|
9210
|
-
|
|
9211
|
-
/**
|
|
9212
|
-
* 频道信息(直播记录列表)
|
|
9213
|
-
* @link https://ukamnads.icu/api/v2/channel?uId=2132180406
|
|
9214
|
-
*/
|
|
9215
|
-
export interface ChannelProps {
|
|
9216
|
-
/**
|
|
9217
|
-
* 200: success
|
|
9218
|
-
*/
|
|
9219
|
-
code: number
|
|
9220
|
-
message: string
|
|
9221
|
-
data: ChannelData
|
|
9222
|
-
}
|
|
9223
|
-
|
|
9224
|
-
/** Data of `ChannelProps` */
|
|
9225
|
-
export interface ChannelData {
|
|
9226
|
-
channel: ChannelInfoProps
|
|
9227
|
-
lives: LiveItem[]
|
|
9228
|
-
extra?: {
|
|
9229
|
-
fansHistory: {
|
|
9230
|
-
archiveView: number
|
|
9231
|
-
follower: number
|
|
9232
|
-
time: number
|
|
9233
|
-
}[]
|
|
9234
|
-
guardHistory: {
|
|
9235
|
-
guardNum: number
|
|
9236
|
-
areaRank: number
|
|
9237
|
-
time: number
|
|
9238
|
-
}[]
|
|
9239
|
-
}
|
|
9240
|
-
}
|
|
9241
|
-
|
|
9242
|
-
/** Props of `ChannelData` */
|
|
9243
|
-
export interface ChannelInfoProps {
|
|
9244
|
-
uId: number
|
|
9245
|
-
uName: string
|
|
9246
|
-
roomId: number
|
|
9247
|
-
faceUrl: string
|
|
9248
|
-
frameUrl: string
|
|
9249
|
-
isLiving: boolean
|
|
9250
|
-
title: string
|
|
9251
|
-
tags: string[]
|
|
9252
|
-
lastLiveDate: number
|
|
9253
|
-
lastLiveDanmakuCount: number
|
|
9254
|
-
totalDanmakuCount: number
|
|
9255
|
-
totalIncome: number
|
|
9256
|
-
totalLiveCount: number
|
|
9257
|
-
totalLiveSecond: number
|
|
9258
|
-
addDate: Date
|
|
9259
|
-
commentCount: number
|
|
9260
|
-
lastLiveIncome: number
|
|
9261
|
-
}
|
|
9262
|
-
|
|
9263
|
-
/** General live stream item */
|
|
9264
|
-
export interface LiveItem {
|
|
9265
|
-
liveId: string
|
|
9266
|
-
isFinish: boolean
|
|
9267
|
-
isFull: boolean
|
|
9268
|
-
parentArea: string
|
|
9269
|
-
area: string
|
|
9270
|
-
coverUrl: string
|
|
9271
|
-
danmakusCount: number
|
|
9272
|
-
startDate: number
|
|
9273
|
-
stopDate: number
|
|
9274
|
-
title: string
|
|
9275
|
-
totalIncome: number
|
|
9276
|
-
watchCount: number
|
|
9277
|
-
likeCount: number
|
|
9278
|
-
payCount: number
|
|
9279
|
-
interactionCount: number
|
|
9280
|
-
onlineRank: number
|
|
9281
|
-
maxOnlineCount: number
|
|
9282
|
-
}
|
|
9283
|
-
|
|
9284
|
-
/** General danmaku event props */
|
|
9285
|
-
export interface DanmakuProps {
|
|
9286
|
-
uId: number
|
|
9287
|
-
uName: string
|
|
9288
|
-
/**
|
|
9289
|
-
* - 0: 普通消息
|
|
9290
|
-
* - 1: 礼物
|
|
9291
|
-
* - 2: 上舰
|
|
9292
|
-
* - 3: SuperChat
|
|
9293
|
-
* - 4: 进入直播间
|
|
9294
|
-
* - 5: 标题变动
|
|
9295
|
-
* - 6: 分区变动
|
|
9296
|
-
* - 7: 直播中止
|
|
9297
|
-
* - 8: 直播继续
|
|
9298
|
-
* - 9: 用户封禁
|
|
9299
|
-
*/
|
|
9300
|
-
type: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
|
|
9301
|
-
sendDate: number
|
|
9302
|
-
message: string
|
|
9303
|
-
price: number
|
|
9304
|
-
ct: string
|
|
9305
|
-
count: number
|
|
9306
|
-
}
|
|
9307
|
-
|
|
9308
|
-
/** Extra props for live item */
|
|
9309
|
-
export interface ExtraProps {
|
|
9310
|
-
wordCloud: { [key: string]: number }
|
|
9311
|
-
onlineRank: { [key: string]: number }
|
|
9312
|
-
blockUsers: number[]
|
|
9313
|
-
}
|
|
9314
|
-
|
|
9315
|
-
/**
|
|
9316
|
-
* 单场直播信息
|
|
9317
|
-
* @link https://ukamnads.icu/api/v2/live?liveid=cafc0eb5-a79a-4a0d-b283-3360b6a1a814&includeExtra=true
|
|
9318
|
-
*/
|
|
9319
|
-
export interface LiveProps {
|
|
9320
|
-
/**
|
|
9321
|
-
* 200: success
|
|
9322
|
-
*/
|
|
9323
|
-
code: number
|
|
9324
|
-
message: string
|
|
9325
|
-
data: LiveData
|
|
9326
|
-
}
|
|
9327
|
-
|
|
9328
|
-
/** Data of `LiveProps` */
|
|
9329
|
-
export interface LiveData {
|
|
9330
|
-
total: number
|
|
9331
|
-
pageNum: number
|
|
9332
|
-
pageSize: number
|
|
9333
|
-
hasMore: boolean
|
|
9334
|
-
data: {
|
|
9335
|
-
channel: ChannelInfoProps
|
|
9336
|
-
live: {
|
|
9337
|
-
liveId: string
|
|
9338
|
-
isFinish: boolean
|
|
9339
|
-
isFull: boolean
|
|
9340
|
-
parentArea: string
|
|
9341
|
-
area: string
|
|
9342
|
-
coverUrl: string
|
|
9343
|
-
danmakusCount: number
|
|
9344
|
-
startDate: number
|
|
9345
|
-
stopDate: number
|
|
9346
|
-
title: string
|
|
9347
|
-
totalIncome: number
|
|
9348
|
-
watchCount: number
|
|
9349
|
-
likeCount: number
|
|
9350
|
-
payCount: number
|
|
9351
|
-
interactionCount: number
|
|
9352
|
-
onlineRank: number
|
|
9353
|
-
maxOnlineCount: number
|
|
9354
|
-
extra: ExtraProps
|
|
9355
|
-
}
|
|
9356
|
-
danmakus: DanmakuProps[]
|
|
9357
|
-
}
|
|
9358
|
-
}
|
|
9359
|
-
|
|
9360
|
-
/**
|
|
9361
|
-
* 用户看过的主播
|
|
9362
|
-
* @link https://ukamnads.icu/api/v2/user/watchedChannels?uid=2132180406
|
|
9363
|
-
*/
|
|
9364
|
-
export interface WatchedChannels {
|
|
9365
|
-
/**
|
|
9366
|
-
* 200: success
|
|
9367
|
-
*/
|
|
9368
|
-
code: number
|
|
9369
|
-
message: string
|
|
9370
|
-
data: WatchedChannelsItem[]
|
|
9371
|
-
}
|
|
9372
|
-
|
|
9373
|
-
/** Item of `WatchedChannels` */
|
|
9374
|
-
export interface WatchedChannelsItem {
|
|
9375
|
-
uId: number
|
|
9376
|
-
uName: string
|
|
9377
|
-
roomId: number
|
|
9378
|
-
faceUrl: string
|
|
9379
|
-
frameUrl: string
|
|
9380
|
-
isLiving: boolean
|
|
9381
|
-
title: string
|
|
9382
|
-
tags: string[]
|
|
9383
|
-
lastLiveDate: number
|
|
9384
|
-
lastLiveDanmakuCount: number
|
|
9385
|
-
totalDanmakuCount: number
|
|
9386
|
-
totalIncome: number
|
|
9387
|
-
totalLiveCount: number
|
|
9388
|
-
totalLiveSecond: number
|
|
9389
|
-
addDate: Date
|
|
9390
|
-
commentCount: number
|
|
9391
|
-
lastLiveIncome: number
|
|
9392
|
-
}
|
|
9393
|
-
|
|
9394
|
-
/**
|
|
9395
|
-
* 用户观看/事件记录
|
|
9396
|
-
*/
|
|
9397
|
-
export interface User {
|
|
9398
|
-
code: number
|
|
9399
|
-
message: string
|
|
9400
|
-
data: UserData
|
|
9401
|
-
}
|
|
9402
|
-
|
|
9403
|
-
/** Data of `User` */
|
|
9404
|
-
export interface UserData {
|
|
9405
|
-
total: number
|
|
9406
|
-
pageNum: number
|
|
9407
|
-
pageSize: number
|
|
9408
|
-
hasMore: boolean
|
|
9409
|
-
data: {
|
|
9410
|
-
records: UserDataRecordsItem[]
|
|
9411
|
-
}
|
|
9412
|
-
}
|
|
9413
|
-
|
|
9414
|
-
/** Item of `UserData` */
|
|
9415
|
-
export interface UserDataRecordsItem {
|
|
9416
|
-
channel: WatchedChannelsItem
|
|
9417
|
-
live: LiveItem
|
|
9418
|
-
danmakus: DanmakuProps[]
|
|
9419
|
-
}
|
|
9420
|
-
}
|
|
9421
|
-
|
|
9422
|
-
export declare namespace Aicu {
|
|
9423
|
-
/**
|
|
9424
|
-
* Root API response
|
|
9425
|
-
*
|
|
9426
|
-
* @example
|
|
9427
|
-
* {
|
|
9428
|
-
* code: 0,
|
|
9429
|
-
* data: { ... },
|
|
9430
|
-
* message: "",
|
|
9431
|
-
* ttl: 1
|
|
9432
|
-
* }
|
|
9433
|
-
* @link https://api.aicu.cc/api/v3/search/getlivedm?uid=32210417&pn=1&ps=100&keyword=
|
|
9434
|
-
*/
|
|
9435
|
-
export interface LiveDm {
|
|
9436
|
-
/** Status code, 0 indicates success */
|
|
9437
|
-
code: number
|
|
9438
|
-
|
|
9439
|
-
/** Main payload */
|
|
9440
|
-
data: {
|
|
9441
|
-
/**
|
|
9442
|
-
* List of room + danmu records
|
|
9443
|
-
*
|
|
9444
|
-
* @example
|
|
9445
|
-
* [
|
|
9446
|
-
* {
|
|
9447
|
-
* roominfo: { ... },
|
|
9448
|
-
* danmu: [ ... ]
|
|
9449
|
-
* }
|
|
9450
|
-
* ]
|
|
9451
|
-
*/
|
|
9452
|
-
list: {
|
|
9453
|
-
/**
|
|
9454
|
-
* Room metadata
|
|
9455
|
-
*
|
|
9456
|
-
* @example
|
|
9457
|
-
* {
|
|
9458
|
-
* upname: "五条悟跳舞",
|
|
9459
|
-
* upuid: "32210417",
|
|
9460
|
-
* roomid: "2156755",
|
|
9461
|
-
* roomname: "让俺移动端看看怎么个事儿"
|
|
9462
|
-
* }
|
|
9463
|
-
*/
|
|
9464
|
-
roominfo: {
|
|
9465
|
-
/** Streamer display name */
|
|
9466
|
-
upname: string
|
|
9467
|
-
|
|
9468
|
-
/** Streamer UID (stringified number) */
|
|
9469
|
-
upuid: string
|
|
9470
|
-
|
|
9471
|
-
/** Room ID (stringified number) */
|
|
9472
|
-
roomid: string
|
|
9473
|
-
|
|
9474
|
-
/** Room title */
|
|
9475
|
-
roomname: string
|
|
9476
|
-
}
|
|
9477
|
-
|
|
9478
|
-
/**
|
|
9479
|
-
* Danmu (chat messages) sent in this room
|
|
9480
|
-
*
|
|
9481
|
-
* @example
|
|
9482
|
-
* [
|
|
9483
|
-
* { uname: "五条悟跳舞", text: "666", ts: 1766410063 }
|
|
9484
|
-
* ]
|
|
9485
|
-
*/
|
|
9486
|
-
danmu: {
|
|
9487
|
-
/** Username of the sender */
|
|
9488
|
-
uname: string
|
|
9489
|
-
|
|
9490
|
-
/**
|
|
9491
|
-
* Message content
|
|
9492
|
-
* Can be plain text or emoticon codes like "[Icomochi_萌萌]"
|
|
9493
|
-
*/
|
|
9494
|
-
text: string
|
|
9495
|
-
|
|
9496
|
-
/**
|
|
9497
|
-
* Unix timestamp (seconds)
|
|
9498
|
-
*
|
|
9499
|
-
* @example
|
|
9500
|
-
* 1767347950
|
|
9501
|
-
*/
|
|
9502
|
-
ts: number
|
|
9503
|
-
}[]
|
|
9504
|
-
}[]
|
|
9505
|
-
|
|
9506
|
-
/**
|
|
9507
|
-
* Pagination cursor info
|
|
9508
|
-
*
|
|
9509
|
-
* @example
|
|
9510
|
-
* {
|
|
9511
|
-
* is_end: false,
|
|
9512
|
-
* all_count: 180
|
|
9513
|
-
* }
|
|
9514
|
-
*/
|
|
9515
|
-
cursor: {
|
|
9516
|
-
/**
|
|
9517
|
-
* Whether this is the last page
|
|
9518
|
-
*
|
|
9519
|
-
* @example false
|
|
9520
|
-
*/
|
|
9521
|
-
is_end: boolean
|
|
9522
|
-
|
|
9523
|
-
/**
|
|
9524
|
-
* Total available records
|
|
9525
|
-
*
|
|
9526
|
-
* @example 180
|
|
9527
|
-
*/
|
|
9528
|
-
all_count: number
|
|
9529
|
-
}
|
|
9530
|
-
}
|
|
9531
|
-
|
|
9532
|
-
/** Optional message, usually empty on success */
|
|
9533
|
-
message: string
|
|
9534
|
-
|
|
9535
|
-
/** Cache TTL in seconds */
|
|
9536
|
-
ttl: number
|
|
9537
|
-
}
|
|
9538
|
-
}
|
|
9539
|
-
|
|
9540
|
-
/**
|
|
9541
|
-
* vup.loveava.top API
|
|
9542
|
-
*/
|
|
9543
|
-
export declare namespace LoveAvA {
|
|
9544
|
-
/** 直播实时排行 */
|
|
9545
|
-
export interface RankingProps {
|
|
9546
|
-
/**
|
|
9547
|
-
* 0: success
|
|
9548
|
-
*/
|
|
9549
|
-
code: number
|
|
9550
|
-
/**
|
|
9551
|
-
* `'success'`
|
|
9552
|
-
*/
|
|
9553
|
-
message: string
|
|
9554
|
-
data: {
|
|
9555
|
-
rooms: RankingItem[]
|
|
9556
|
-
ctime: number
|
|
9557
|
-
}
|
|
9558
|
-
}
|
|
9559
|
-
|
|
9560
|
-
/** Item of `RankingProps` */
|
|
9561
|
-
export interface RankingItem {
|
|
9562
|
-
roomid: number
|
|
9563
|
-
uid: number
|
|
9564
|
-
title: string
|
|
9565
|
-
uname: string
|
|
9566
|
-
system_cover: string
|
|
9567
|
-
cover: string
|
|
9568
|
-
face: string
|
|
9569
|
-
parent_id: number
|
|
9570
|
-
parent_name: string
|
|
9571
|
-
area_id: number
|
|
9572
|
-
area_name: string
|
|
9573
|
-
area_v2_parent_id: number
|
|
9574
|
-
area_v2_parent_name: string
|
|
9575
|
-
area_v2_id: number
|
|
9576
|
-
area_v2_name: string
|
|
9577
|
-
start_time: number
|
|
9578
|
-
/**
|
|
9579
|
-
* 热度,danmakus 没有
|
|
9580
|
-
*/
|
|
9581
|
-
count: number
|
|
9582
|
-
ten_minutes_counter: number
|
|
9583
|
-
}
|
|
9584
|
-
}
|
|
9585
|
-
|
|
9586
|
-
/**
|
|
9587
|
-
* Zeroroku API
|
|
9588
|
-
*/
|
|
9589
|
-
export declare namespace Zeroroku {
|
|
9590
|
-
/**
|
|
9591
|
-
* 被知名 UP 关注
|
|
9592
|
-
*/
|
|
9593
|
-
export interface FamousFansItem {
|
|
9594
|
-
name: string
|
|
9595
|
-
mid: number
|
|
9596
|
-
face: string
|
|
9597
|
-
fans: number
|
|
9598
|
-
}
|
|
9599
|
-
|
|
9600
|
-
/**
|
|
9601
|
-
* /fans-history API 中粉丝数项目
|
|
9602
|
-
*/
|
|
9603
|
-
export interface FansItem {
|
|
9604
|
-
fans: number
|
|
9605
|
-
created_at: string
|
|
9606
|
-
date: string
|
|
9607
|
-
}
|
|
9608
|
-
}
|
|
9609
|
-
|
|
9610
|
-
/**
|
|
9611
|
-
* Aliyun API
|
|
9612
|
-
*/
|
|
9613
|
-
export declare namespace Aliyun {
|
|
9614
|
-
/**
|
|
9615
|
-
* 物流面单信息提取
|
|
9616
|
-
* @url https://help.aliyun.com/zh/address-purification/addrpapi/developer-reference/logistics-information-extraction
|
|
9617
|
-
*/
|
|
9618
|
-
export interface ExtractExpress {
|
|
9619
|
-
RequestId: string
|
|
9620
|
-
/** 正常时返回 */
|
|
9621
|
-
Data?: string
|
|
9622
|
-
/** 报错时返回 */
|
|
9623
|
-
Code?: string
|
|
9624
|
-
/** 报错时返回 */
|
|
9625
|
-
Message?: string
|
|
9626
|
-
/** 报错时返回 */
|
|
9627
|
-
HostId?: string
|
|
9628
|
-
/** 报错时返回 */
|
|
9629
|
-
Recommend?: string
|
|
9630
|
-
}
|
|
9631
|
-
|
|
9632
|
-
/**
|
|
9633
|
-
* Need JSON.parse() to get from `ExtractExpress.Data`
|
|
9634
|
-
*/
|
|
9635
|
-
export interface ExtractExpressData {
|
|
9636
|
-
/** 提取内容,当传入的地址无效时,会直接返回空对象 */
|
|
9637
|
-
express_extract:
|
|
9638
|
-
| {
|
|
9639
|
-
house_info: string
|
|
9640
|
-
poi_info: string
|
|
9641
|
-
town: string
|
|
9642
|
-
city: string
|
|
9643
|
-
district: string
|
|
9644
|
-
/** 电话号码 */
|
|
9645
|
-
tel: string
|
|
9646
|
-
/** 地址信息 */
|
|
9647
|
-
addr_info: string
|
|
9648
|
-
/** 姓名 */
|
|
9649
|
-
per: string
|
|
9650
|
-
prov: string
|
|
9651
|
-
}
|
|
9652
|
-
// biome-ignore lint/complexity/noBannedTypes: expected empty object
|
|
9653
|
-
| {}
|
|
9654
|
-
/** 状态,'OK',当传入的地址无效时,依然返回 OK 😅 */
|
|
9655
|
-
status: string
|
|
9656
|
-
/** 算法处理耗时 */
|
|
9657
|
-
time_used: {
|
|
9658
|
-
rt: {
|
|
9659
|
-
basic_chunking: number
|
|
9660
|
-
segment: number
|
|
9661
|
-
address_correct: number
|
|
9662
|
-
complete: number
|
|
9663
|
-
express_extract: number
|
|
9664
|
-
address_search: number
|
|
9665
|
-
structure: number
|
|
9666
|
-
}
|
|
9667
|
-
start: number
|
|
9668
|
-
}
|
|
9669
|
-
}
|
|
9670
|
-
}
|
|
9671
|
-
|
|
9672
|
-
/**
|
|
9673
|
-
* Kuaidi100 API
|
|
9674
|
-
*/
|
|
9675
|
-
export declare namespace Kuaidi100 {
|
|
9676
|
-
/**
|
|
9677
|
-
* 地址解析
|
|
9678
|
-
*/
|
|
9679
|
-
export interface AddressResolution {
|
|
9680
|
-
code: number
|
|
9681
|
-
data: {
|
|
9682
|
-
taskId: string
|
|
9683
|
-
result: {
|
|
9684
|
-
/** 用户输入的地址 */
|
|
9685
|
-
content: string
|
|
9686
|
-
mobile: number[]
|
|
9687
|
-
/** 姓名 */
|
|
9688
|
-
name: string
|
|
9689
|
-
/** 解析后的地址 */
|
|
9690
|
-
address: string
|
|
9691
|
-
xzq: {
|
|
9692
|
-
/** 完整地址:广东省,深圳市,南山区 */
|
|
9693
|
-
fullName: string
|
|
9694
|
-
/** 本字段将返回省份简称,例如:广东 */
|
|
9695
|
-
province: string
|
|
9696
|
-
/** 本字段返回市级行政区简称,例如:深圳市 */
|
|
9697
|
-
city: string
|
|
9698
|
-
/** 本字段返回区县简称,例如:南山区 */
|
|
9699
|
-
district: string
|
|
9700
|
-
/** 详细地址 */
|
|
9701
|
-
subArea: string
|
|
9702
|
-
/** 行政区父节点编码 */
|
|
9703
|
-
parentCode: string
|
|
9704
|
-
/** 行政区编码 */
|
|
9705
|
-
code: string
|
|
9706
|
-
/** 行政区级别 */
|
|
9707
|
-
level: 3
|
|
9708
|
-
}
|
|
9709
|
-
}[]
|
|
9710
|
-
}
|
|
9711
|
-
/** 是否成功,`success` */
|
|
9712
|
-
message: string
|
|
9713
|
-
/** 通常为 0,时间,可忽略 */
|
|
9714
|
-
time: number
|
|
9715
|
-
/** true提交成功,false失败 */
|
|
9716
|
-
success: boolean
|
|
9717
|
-
}
|
|
9718
|
-
|
|
9719
|
-
/**
|
|
9720
|
-
* /fans-history API 中粉丝数项目
|
|
9721
|
-
*/
|
|
9722
|
-
export interface FansItem {
|
|
9723
|
-
fans: number
|
|
9724
|
-
created_at: string
|
|
9725
|
-
date: string
|
|
9726
|
-
}
|
|
9727
|
-
}
|
|
9728
|
-
|
|
9729
|
-
/**
|
|
9730
|
-
* Steam Store API
|
|
9731
|
-
* @link https://store.steampowered.com/api/appdetails
|
|
9732
|
-
*/
|
|
9733
|
-
export declare namespace SteamInternal {
|
|
9734
|
-
/**
|
|
9735
|
-
* Steam Store appdetails API response, keyed by appid string
|
|
9736
|
-
* @link https://store.steampowered.com/api/appdetails?appids={appid}
|
|
9737
|
-
* @example /steam/game-meta/730
|
|
9738
|
-
*/
|
|
9739
|
-
export interface GameMeta {
|
|
9740
|
-
[appid: string]: {
|
|
9741
|
-
/** Whether the lookup was successful */
|
|
9742
|
-
success: boolean
|
|
9743
|
-
/** Absent when `success` is `false` */
|
|
9744
|
-
data?: GameMetaData
|
|
9745
|
-
}
|
|
9746
|
-
}
|
|
9747
|
-
|
|
9748
|
-
/** App detail data */
|
|
9749
|
-
export interface GameMetaData {
|
|
9750
|
-
/**
|
|
9751
|
-
* App type
|
|
9752
|
-
* @example "game"
|
|
9753
|
-
*/
|
|
9754
|
-
type: string
|
|
9755
|
-
/** App name @example "Counter-Strike 2" */
|
|
9756
|
-
name: string
|
|
9757
|
-
/** Steam App ID @example 730 */
|
|
9758
|
-
steam_appid: number
|
|
9759
|
-
/** Minimum age requirement, `0` for no restriction @example 0 */
|
|
9760
|
-
required_age: number
|
|
9761
|
-
/** Whether the app is free to play */
|
|
9762
|
-
is_free: boolean
|
|
9763
|
-
/** DLC app IDs @example [2678630] */
|
|
9764
|
-
dlc?: number[]
|
|
9765
|
-
/** Full HTML description */
|
|
9766
|
-
detailed_description: string
|
|
9767
|
-
/** HTML about section */
|
|
9768
|
-
about_the_game: string
|
|
9769
|
-
/** Short text description */
|
|
9770
|
-
short_description: string
|
|
9771
|
-
/** Supported languages in HTML format */
|
|
9772
|
-
supported_languages: string
|
|
9773
|
-
/** Header image URL @example "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg" */
|
|
9774
|
-
header_image: string
|
|
9775
|
-
/** Capsule image URL (231x87) */
|
|
9776
|
-
capsule_image: string
|
|
9777
|
-
/** Capsule image URL v5 (184x69) */
|
|
9778
|
-
capsule_imagev5: string
|
|
9779
|
-
/** Official website URL, `null` if not set @example "http://counter-strike.net/" */
|
|
9780
|
-
website: string | null
|
|
9781
|
-
/** PC system requirements, empty array `[]` when not available */
|
|
9782
|
-
pc_requirements: GameMetaRequirements | []
|
|
9783
|
-
/** Mac system requirements, empty array `[]` when not available */
|
|
9784
|
-
mac_requirements: GameMetaRequirements | []
|
|
9785
|
-
/** Linux system requirements, empty array `[]` when not available */
|
|
9786
|
-
linux_requirements: GameMetaRequirements | []
|
|
9787
|
-
/** Legal notice text @example "© 2024 ambr, Inc." */
|
|
9788
|
-
legal_notice?: string
|
|
9789
|
-
/** Developer names @example ["Valve"] */
|
|
9790
|
-
developers: string[]
|
|
9791
|
-
/** Publisher names @example ["Valve"] */
|
|
9792
|
-
publishers: string[]
|
|
9793
|
-
/** Package IDs available for purchase */
|
|
9794
|
-
packages: number[]
|
|
9795
|
-
/** Purchase option groups */
|
|
9796
|
-
package_groups: GameMetaPackageGroup[]
|
|
9797
|
-
/** Platform availability */
|
|
9798
|
-
platforms: GameMetaPlatforms
|
|
9799
|
-
/** Category tags (multi-player, workshop, etc.) */
|
|
9800
|
-
categories: GameMetaCategory[]
|
|
9801
|
-
/** Genre classifications */
|
|
9802
|
-
genres: GameMetaGenre[]
|
|
9803
|
-
/** Screenshots */
|
|
9804
|
-
screenshots: GameMetaScreenshot[]
|
|
9805
|
-
/** Trailer videos */
|
|
9806
|
-
movies?: GameMetaMovie[]
|
|
9807
|
-
/** User recommendations */
|
|
9808
|
-
recommendations?: { total: number }
|
|
9809
|
-
/** Achievements info */
|
|
9810
|
-
achievements?: GameMetaAchievements
|
|
9811
|
-
/** Release date info */
|
|
9812
|
-
release_date: GameMetaReleaseDate
|
|
9813
|
-
/** Support contact info */
|
|
9814
|
-
support_info: { url: string; email: string }
|
|
9815
|
-
/** Store page background image URL */
|
|
9816
|
-
background: string
|
|
9817
|
-
/** Raw background image URL */
|
|
9818
|
-
background_raw: string
|
|
9819
|
-
/** Content descriptor IDs and notes */
|
|
9820
|
-
content_descriptors: GameMetaContentDescriptors
|
|
9821
|
-
/** Price overview, absent for free games */
|
|
9822
|
-
price_overview?: GameMetaPriceOverview
|
|
9823
|
-
/** Metacritic score, absent if not rated */
|
|
9824
|
-
metacritic?: GameMetaMetacritic
|
|
9825
|
-
/** Age ratings by region */
|
|
9826
|
-
ratings?: Record<string, GameMetaRating>
|
|
9827
|
-
/**
|
|
9828
|
-
* Controller support level
|
|
9829
|
-
* @example "full"
|
|
9830
|
-
*/
|
|
9831
|
-
controller_support?: string
|
|
9832
|
-
/** Demo app IDs */
|
|
9833
|
-
demos?: { appid: number; description: string }[]
|
|
9834
|
-
}
|
|
9835
|
-
|
|
9836
|
-
/** System requirements (minimum and optionally recommended) */
|
|
9837
|
-
export interface GameMetaRequirements {
|
|
9838
|
-
/** Minimum requirements in HTML */
|
|
9839
|
-
minimum: string
|
|
9840
|
-
/** Recommended requirements in HTML */
|
|
9841
|
-
recommended?: string
|
|
9842
|
-
}
|
|
9843
|
-
|
|
9844
|
-
export interface GameMetaPackageGroup {
|
|
9845
|
-
/** @example "default" */
|
|
9846
|
-
name: string
|
|
9847
|
-
/** @example "Buy Counter-Strike 2" */
|
|
9848
|
-
title: string
|
|
9849
|
-
description: string
|
|
9850
|
-
/** @example "Select a purchase option" */
|
|
9851
|
-
selection_text: string
|
|
9852
|
-
save_text: string
|
|
9853
|
-
display_type: number
|
|
9854
|
-
is_recurring_subscription: string
|
|
9855
|
-
subs: GameMetaPackageSub[]
|
|
9856
|
-
}
|
|
9857
|
-
|
|
9858
|
-
export interface GameMetaPackageSub {
|
|
9859
|
-
/** Package ID @example 298963 */
|
|
9860
|
-
packageid: number
|
|
9861
|
-
/** @example " " */
|
|
9862
|
-
percent_savings_text: string
|
|
9863
|
-
/** Discount percentage, `0` for no discount */
|
|
9864
|
-
percent_savings: number
|
|
9865
|
-
/** @example "Counter-Strike 2 - Free" */
|
|
9866
|
-
option_text: string
|
|
9867
|
-
option_description: string
|
|
9868
|
-
can_get_free_license: string
|
|
9869
|
-
is_free_license: boolean
|
|
9870
|
-
/** Price in cents with discount applied @example 0 */
|
|
9871
|
-
price_in_cents_with_discount: number
|
|
9872
|
-
}
|
|
9873
|
-
|
|
9874
|
-
export interface GameMetaPlatforms {
|
|
9875
|
-
windows: boolean
|
|
9876
|
-
mac: boolean
|
|
9877
|
-
linux: boolean
|
|
9878
|
-
}
|
|
9879
|
-
|
|
9880
|
-
export interface GameMetaCategory {
|
|
9881
|
-
/** @example 1 */
|
|
9882
|
-
id: number
|
|
9883
|
-
/** @example "Multi-player" */
|
|
9884
|
-
description: string
|
|
9885
|
-
}
|
|
9886
|
-
|
|
9887
|
-
export interface GameMetaGenre {
|
|
9888
|
-
/** @example "1" */
|
|
9889
|
-
id: string
|
|
9890
|
-
/** @example "Action" */
|
|
9891
|
-
description: string
|
|
9892
|
-
}
|
|
9893
|
-
|
|
9894
|
-
export interface GameMetaScreenshot {
|
|
9895
|
-
/** Screenshot index @example 0 */
|
|
9896
|
-
id: number
|
|
9897
|
-
/** Thumbnail URL (600x338) */
|
|
9898
|
-
path_thumbnail: string
|
|
9899
|
-
/** Full size URL (1920x1080) */
|
|
9900
|
-
path_full: string
|
|
9901
|
-
}
|
|
9902
|
-
|
|
9903
|
-
export interface GameMetaMovie {
|
|
9904
|
-
/** Movie ID @example 256972298 */
|
|
9905
|
-
id: number
|
|
9906
|
-
/** @example "Launch Trailer" */
|
|
9907
|
-
name: string
|
|
9908
|
-
/** Thumbnail URL */
|
|
9909
|
-
thumbnail: string
|
|
9910
|
-
/** DASH AV1 manifest URL */
|
|
9911
|
-
dash_av1: string
|
|
9912
|
-
/** DASH H.264 manifest URL */
|
|
9913
|
-
dash_h264: string
|
|
9914
|
-
/** HLS H.264 master playlist URL */
|
|
9915
|
-
hls_h264: string
|
|
9916
|
-
/** Whether this is a highlighted trailer */
|
|
9917
|
-
highlight: boolean
|
|
9918
|
-
}
|
|
9919
|
-
|
|
9920
|
-
export interface GameMetaAchievements {
|
|
9921
|
-
/** Total number of achievements @example 1 */
|
|
9922
|
-
total: number
|
|
9923
|
-
/** Featured achievements shown on the store page */
|
|
9924
|
-
highlighted: {
|
|
9925
|
-
name: string
|
|
9926
|
-
path: string
|
|
9927
|
-
}[]
|
|
9928
|
-
}
|
|
9929
|
-
|
|
9930
|
-
export interface GameMetaReleaseDate {
|
|
9931
|
-
/** Whether the game is unreleased */
|
|
9932
|
-
coming_soon: boolean
|
|
9933
|
-
/** Formatted release date @example "21 Aug, 2012" */
|
|
9934
|
-
date: string
|
|
9935
|
-
}
|
|
9936
|
-
|
|
9937
|
-
export interface GameMetaContentDescriptors {
|
|
9938
|
-
/** Content descriptor IDs @example [2, 5] */
|
|
9939
|
-
ids: number[]
|
|
9940
|
-
/** @example "Includes intense violence and blood." */
|
|
9941
|
-
notes: string | null
|
|
9942
|
-
}
|
|
9943
|
-
|
|
9944
|
-
export interface GameMetaPriceOverview {
|
|
9945
|
-
/** Currency code @example "USD" */
|
|
9946
|
-
currency: string
|
|
9947
|
-
/** Original price in cents @example 5999 */
|
|
9948
|
-
initial: number
|
|
9949
|
-
/** Final price in cents after discount @example 5999 */
|
|
9950
|
-
final: number
|
|
9951
|
-
/** Discount percentage, `0` for no discount */
|
|
9952
|
-
discount_percent: number
|
|
9953
|
-
/** Formatted original price @example "$59.99" */
|
|
9954
|
-
initial_formatted: string
|
|
9955
|
-
/** Formatted final price @example "$59.99" */
|
|
9956
|
-
final_formatted: string
|
|
9957
|
-
}
|
|
9958
|
-
|
|
9959
|
-
export interface GameMetaMetacritic {
|
|
9960
|
-
/** Metacritic score @example 83 */
|
|
9961
|
-
score: number
|
|
9962
|
-
/** Metacritic page URL */
|
|
9963
|
-
url: string
|
|
9964
|
-
}
|
|
9965
|
-
|
|
9966
|
-
export interface GameMetaRating {
|
|
9967
|
-
rating: string
|
|
9968
|
-
/** Age rating descriptors */
|
|
9969
|
-
descriptors?: string
|
|
9970
|
-
/** Whether rating was auto-generated */
|
|
9971
|
-
rating_generated?: string
|
|
9972
|
-
required_age?: string
|
|
9973
|
-
banned?: string
|
|
9974
|
-
use_age_gate?: string
|
|
9975
|
-
}
|
|
9976
|
-
}
|