feat: 各种接口补充与错误修正 (#1066)

* fix(video/collection.md): unclosed xml tags

* feat(video/report.md): uuid not really random

* feat: b23.tv short link

* feat: login/moral/exp log

* feat: v_voucher

* feat: upload video cover & post

* feat(creativecenter/upload.md): upload octet-stream

* feat(creativecenter/upload.md): update some notes

* feat(clientinfo/ip.md): another from live

* feat: live web heartbeat

* feat: update popular series & precious

* fix(creativecenter/upload.md): mistakes in example

* feat: merge duplicate fav info

* feat(README.md): missing link to webmask

* feat(search/hot.md): word_type

* feat(login/login_action): recovery old api

* feat(video/collection.md):  series operation

* feat: video season operation

* feat: add & mod some links

* feat(search/suggest.md): up to date

* feat: web home header image

* feat(misc/sign/bili_ticket.md): demo for nodejs

* feat(creativecenter/upload.md): x-upos-auth validity period

* feat: add referer & buvid3 to request header

* feat: customer service message heartbeat & upload

* feat(customerservice/msg.md): upload code 1200201

* feat(video/report.md): click/web/h5

* feat(video/report.md): view count desc

* feat: laser2

* feat: wbi_key in bili_ticket

* fix: typo & unclosed XML tags

* feat(misc/sign/v_voucher): cookie x-bili-gaia-vtoken

* feat(search/hot.md): square

* feat(video/status_number.md): fold archive_stat/stat

* feat(fav/info.md): resource/infos invalid type 21

* feat: /x/activity/subject/info

* feat: lottery

* feat(docs/misc/b23.tv): remove some unnecessary fields

* feat(creativecenter/upload.md): types/predict

* fix(video/collection.md): invalid end tag

* feat: app version upgrade

* feat(creativecenter/upload.md): tag/recommend #528

* feat(user/status_number.md): navnum

* feat: /x/activity/page/list

* feat(comment/list.md): desc about pagination_str

* feat(comment/list.md): update example

* feat(dynamic/all.md): #1082

* fix(comment/list.md): -352 not -412

* feat: #700

* feat(video/video_stream.md): #606 & cv949156

* feat(message/private_msg.md): single_unread freq

* feat: getUserWallet

* fix: broken form

* feat(Layout.vue): copyright to 2024

* feat: /x/topic/pub/rcmd/search

* feat: #425

* feat(misc/time_stamp.md): rtc/getTimestamp

* fix(misc/time_stamp.md): missing end tag

* feat: #745

* feat(dynamic/all.md): update feed/all

* feat(danmaku/action.md): #220

* feat(live/info.md): gethistory from cv8186413

* fix(danmaku/action.md): missing end tag
This commit is contained in:
Session小胡
2024-08-21 19:02:39 +08:00
committed by GitHub
parent f7599fb693
commit 60a0c5d1a2
46 changed files with 18489 additions and 8207 deletions

View File

@@ -0,0 +1,730 @@
# 合集管理
关于用户空间的合集及视频列表参见 [合集和视频列表信息](../video/collection.md)
## 获取合集列表
> https://member.bilibili.com/x2/creative/web/seasons
*请求方式: GET*
认证方式: Cookie (SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | --------- | ----------- | ----------------- |
| pn | num | 页码 | 必要 | 默认为 1 |
| ps | num | 每页数量 | 必要 | 默认为 30 |
| order | str | 排序方式 | 不必要 | 创建时间: ctime<br />修改时间: mtime |
| sort | str | 排序方式 | 不必要 | 创建时间: asc<br />修改时间: desc |
| draft | num | 1 | 不必要 | 作用尚不明确 |
**JSON回复:**
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| seasons | arr | 合集列表 | |
| tip | obj | 内容 `title` `url` 均为空 | |
| total | num | 合集总数 | |
| play_type | num | 1 | 作用尚不明确 |
`seasons`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| season | obj | 合集信息 | |
| course | null | | |
| checkin | obj | 审核信息? | |
| seasonStat | obj | 合集统计信息 | |
| sections | obj | 小节列表 | |
| part_episodes | arr | 合集视频列表 | |
`seasons`数组中的对象中的`season`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| id | num | 合集 ID | |
| title | str | 合集标题 | |
| desc | str | 合集描述 | |
| cover | str | 合集封面 URL | |
| isEnd | num | 是否已完结? | 0: 未完结 |
| mid | num | 合集作者 ID | |
| isAct | num | 是否为活动合集? | 0: 否 |
| is_pay | num | 是否付费? | 0: 否 |
| state | num | 合集状态? | 0: 正常显示<br />-6: 正在审核 |
| partState | num | 合集分段状态? | 0 |
| signState | num | 合集签名状态? | 0 |
| rejectReason | str | 合集拒绝原因? | |
| ctime | num | 创建时间 | |
| mtime | num | 修改时间 | |
| no_section | num | 是否设小节 | 1: 不设小节 |
| forbid | num | 合集是否禁止? | 0: 否 |
| protocol_id | str | 空 | |
| ep_num | num | 0 | |
| season_price | num | 合集价格? | 0: 免费 |
| is_opened | num | 是否公开? | 1: 公开 |
| has_charging_pay | num | 是否充电付费? | 0: 否 |
`seasons`数组中的对象中的`checkin`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| status | num | 状态? | 0: 正常显示 |
| status_reason | str | 状态原因? | |
| season_status | num | 合集审核状态? | 1: 审核通过 |
`seasons`数组中的对象中的`seasonStat`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| view | num | 播放量 | |
| danmaku | num | 弹幕数 | |
| reply | num | 评论数 | |
| fav | num | 收藏数 | |
| coin | num | 硬币数 | |
| share | num | 分享数 | |
| nowRank | num | 当前排名? | |
| hisRank | num | 历史最高排名? | |
| like | num | 点赞数 | |
| subscription | num | 订阅数 | |
| vt | num | 0 | |
`seasons`数组中的对象中的`sections`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| sections | arr | 小节列表 | 套了个娃 |
`seasons`数组中的对象中的`sections`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| id | num | 小节 ID | |
| type | num | 1 | |
| seasonId | num | 合集 ID | |
| title | str | 小节标题 | |
| order | num | 排序 | |
| state | num | 状态? | 0: 正常 |
| partState | num | 合集分段状态? | 0: 正常 |
| rejectReason | str | 拒绝原因? | |
| ctime | num | 创建时间 | |
| mtime | num | 修改时间 | |
| epCount | num | 视频数量 | |
| cover | str | 封面 URL | |
| has_charging_pay | num | 是否充电付费? | 0: 否 |
| Episodes | null | | |
`seasons`数组中的对象中的`part_episodes`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| id | num | 合集内视频 ID | |
| title | str | 视频标题 | |
| aid | num | 视频 aid | |
| bvid | str | 视频 bvid | |
| cid | num | 视频 cid | |
| seasonId | num | 合集 ID | |
| sectionId | num | 小节 ID | |
| order | num | 排序编号 | |
| videoTitle | str | 空 | |
| archiveTitle | str | 空 | |
| archiveState | num | 0 | |
| rejectReason | str | 拒绝理由? | |
| state | num | 0 | |
| cover | str | 封面 URL | |
| is_free | num | 是否免费? | 0: 免费 |
| aid_owner | bool | false | |
| charging_pay | num | 充电付费? | 0: 否 |
**示例:**
```shell
curl -G 'https://member.bilibili.com/x2/creative/web/seasons' \
--data-urlencode 'pn=1' \
--data-urlencode 'ps=30' \
-b "SESSDATA=xxx"
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"seasons": [
{
"season": {
"id": 3541247,
"title": "🍥Debian",
"desc": "这里是泽生折腾 Debian GNU/Linux 的珍贵影像记录喵~",
"cover": "https://archive.biliimg.com/bfs/archive/ec51de61b53159c5e2430cf963f5f97e692baeaf.jpg",
"isEnd": 0,
"mid": 645769214,
"isAct": 0,
"is_pay": 0,
"state": 0,
"partState": 0,
"signState": 0,
"rejectReason": "",
"ctime": 1722573640,
"mtime": 1722577206,
"no_section": 1,
"forbid": 0,
"protocol_id": "",
"ep_num": 0,
"season_price": 0,
"is_opened": 1,
"has_charging_pay": 0
},
"course": null,
"checkin": {
"status": 0,
"status_reason": "",
"season_status": 1
},
"seasonStat": {
"view": 6793,
"danmaku": 21,
"reply": 93,
"fav": 64,
"coin": 26,
"share": 12,
"nowRank": 0,
"hisRank": 0,
"like": 141,
"subscription": 0,
"vt": 0
},
"sections": {
"sections": [
{
"id": 3954033,
"type": 1,
"seasonId": 3541247,
"title": "正片",
"order": 1,
"state": 0,
"partState": 0,
"rejectReason": "",
"ctime": 1722573640,
"mtime": 1722577206,
"epCount": 2,
"cover": "http://i2.hdslb.com/bfs/archive/b76c0b574862f5a8e8eb133f5f33fcbcd602401a.jpg",
"has_charging_pay": 0,
"Episodes": null
}
]
},
"part_episodes": [
{
"id": 77260687,
"title": "Linux小寄巧: 原地卸载内核然后尝试救活!",
"aid": 1906473802,
"bvid": "BV1MU411S7iJ",
"cid": 1625992822,
"seasonId": 3541247,
"sectionId": 3954033,
"order": 1,
"videoTitle": "",
"archiveTitle": "",
"archiveState": 0,
"rejectReason": "",
"state": 0,
"cover": "http://i2.hdslb.com/bfs/archive/b76c0b574862f5a8e8eb133f5f33fcbcd602401a.jpg",
"is_free": 0,
"aid_owner": false,
"charging_pay": 0
},
{
"id": 77260688,
"title": "十多年前的电脑运行Debian12的启动过程",
"aid": 1956170305,
"bvid": "BV1Ay411i7Ph",
"cid": 1607067247,
"seasonId": 3541247,
"sectionId": 3954033,
"order": 2,
"videoTitle": "",
"archiveTitle": "",
"archiveState": 0,
"rejectReason": "",
"state": 0,
"cover": "http://i0.hdslb.com/bfs/archive/0bff6624fdfcbf3326fba1837fef093d455c846a.jpg",
"is_free": 0,
"aid_owner": false,
"charging_pay": 0
}
]
},
{
"season": {
"id": 3541327,
"title": "BACollect",
"desc": "",
"cover": "https://archive.biliimg.com/bfs/archive/77906db03b1eefac02613de184afad03f7bc58d7.jpg",
"isEnd": 0,
"mid": 645769214,
"isAct": 0,
"is_pay": 0,
"state": 0,
"partState": 0,
"signState": 0,
"rejectReason": "",
"ctime": 1722574656,
"mtime": 1722574658,
"no_section": 1,
"forbid": 0,
"protocol_id": "",
"ep_num": 0,
"season_price": 0,
"is_opened": 1,
"has_charging_pay": 0
},
"course": null,
"checkin": {
"status": 0,
"status_reason": "",
"season_status": 0
},
"seasonStat": {
"view": 0,
"danmaku": 0,
"reply": 0,
"fav": 0,
"coin": 0,
"share": 0,
"nowRank": 0,
"hisRank": 0,
"like": 0,
"subscription": 0,
"vt": 0
},
"sections": {
"sections": [
{
"id": 3954127,
"type": 1,
"seasonId": 3541327,
"title": "正片",
"order": 1,
"state": 0,
"partState": 0,
"rejectReason": "",
"ctime": 1722574656,
"mtime": 1722574656,
"epCount": 0,
"cover": "http://static.hdslb.com/images/transparent.gif",
"has_charging_pay": 0,
"Episodes": null
}
]
},
"part_episodes": null
}
],
"tip": {
"title": "",
"url": ""
},
"total": 2,
"play_type": 1
}
}
```
</details>
## 创建合集
> ttps://member.bilibili.com/x2/creative/web/season/add
*请求方式: POST*
认证方式: Cookie (SESSDATA)
注: 有人工审核
**正文参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| title | str | 合集标题 | 必要 | |
| desc | str | 合集简介 | 不必要 | |
| cover | str | 封面图 | 必要 | 从 [上传封面](upload.md#上传封面) 处获取 |
| season_price | num | 0 | 不必要 | 作用尚不明确 |
| csrf | str | CSRF Token (即 Cookies 中 bili_jct ) | 必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | num | 合集 ID | |
**示例:**
```shell
curl -X POST 'https://member.bilibili.com/x2/creative/web/season/add' \
--data-urlencode 'title=🍥Debian' \
--data-urlencode 'desc=这里是泽生折腾 Debian GNU/Linux 的珍贵影像记录喵~' \
--data-urlencode 'cover=https://archive.biliimg.com/bfs/archive/ec51de61b53159c5e2430cf963f5f97e692baeaf.jpg' \
--data-urlencode 'season_price=0' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx; bili_jct=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": 3541247
}
```
</details>
## 添加视频到合集
> https://member.bilibili.com/x2/creative/web/season/section/episodes/add
*请求方式: POST*
认证方式: Cookie (SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| csrf | str | CSRF Token (即 Cookies 中 bili_jct ) | 必要 | |
**正文参数 (application/json):**
根对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| episode | array | 视频列表 | 必要 | |
| section_id | num | 合集小节 ID | 必要 | |
`episode` 数组中的对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----- | --- | ---- | ----- | --- |
| aid | num | 视频 aid | 必要 | |
| cid | num | 稿件 cid | 必要 | |
| title | str | 合集内单集标题 | 必要 | |
| charging_pay | num | 0 | 不必要 | 作用尚不明确 |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
**示例:**
假设您已经把请求有效荷载放在 `payload.json` 文件中:
```json
{
"sectionId": 3954033,
"episodes": [
{
"title": "Linux小寄巧: 原地卸载内核然后尝试救活!",
"aid": 1906473802,
"cid": 1625992822,
"charging_pay": 0
},
{
"title": "十多年前的电脑运行Debian12的启动过程",
"aid": 1956170305,
"cid": 1607067247,
"charging_pay": 0
}
]
}
```
```shell
curl -X POST --url 'https://member.bilibili.com/x2/creative/web/season/section/episodes/add' \
--url-query 'csrf=xxx' \
-H 'Content-Type: application/json' \
--data-binary @payload.json \
-b 'SESSDATA=xxx; bili_jct=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 编辑合集小节
> https://member.bilibili.com/x2/creative/web/season/section/edit
*请求方式: POST*
认证方式: Cookie (SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| csrf | str | CSRF Token (即 Cookies 中 bili_jct) | 必要 | |
**正文参数 (application/json):**
根对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| section | obj | 小节信息 | 必要 | |
| sorts | array | 排序列表 | 必要 | |
`section` 对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 小节 ID | 必要 | |
| seasonId | num | 合集 ID | 必要 | |
| title | str | 小节标题 | 必要 | |
| type | num | 1 | 必要 | |
`sorts` 数组中的对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 合集内视频 ID | 必要 | |
| order | num | 排序位置 | 必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
**示例:**
假设您已经把请求有效荷载放在 `payload.json` 文件中:
```json
{
"section": {
"id": 3954033,
"type": 1,
"seasonId": 3541247,
"title": "正片"
},
"sorts": [
{
"id": 77260687,
"sort": 1
},
{
"id": 77260688,
"sort": 2
}
]
}
```
```shell
curl -X POST --url 'https://member.bilibili.com/x2/creative/web/season/section/edit' \
--url-query 'csrf=xxx' \
-H 'Content-Type: application/json' \
--data-binary @payload.json \
-b 'SESSDATA=xxx; bili_jct=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 编辑合集信息
> https://member.bilibili.com/x2/creative/web/season/edit
*请求方式: POST*
认证方式: Cookie (SESSDATA)
注: 也有人工审核
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| csrf | str | CSRF Token (即 Cookies 中 bili_jct) | 必要 | |
**正文参数 (application/json):**
根对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| season | obj | 合集信息 | 必要 | |
| sorts | array | 排序列表 | 必要 | |
`season` 对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 合集 ID | 必要 | |
| title | str | 合集标题 | 必要 | |
| cover | str | 封面图 | 必要 | 从 [上传封面](upload.md#上传封面) 处获取 |
| desc | str | 合集简介 | 不必要 | |
| season_price | num | 0 | 不必要 | 作用尚不明确 |
| isEnd | num | 是否完结 | 不必要 | 0未完结<br />1完结 |
`sorts` 数组中的对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 小节 ID | 必要 | |
| sort | num | 排序位置 | 必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
**示例:**
假设您已经把请求有效荷载放在 `payload.json` 文件中:
```json
{
"season": {
"cover": "https://archive.biliimg.com/bfs/archive/77906db03b1eefac02613de184afad03f7bc58d7.jpg",
"id": 3541327,
"title": "IWILLBEDEL"
},
"sorts": [
{
"id": 3954127,
"sort": 1
}
]
}
```
```shell
curl -X POST --url 'https://member.bilibili.com/x2/creative/web/season/edit' \
--url-query 'csrf=xxx' \
-H 'Content-Type: application/json' \
--data-binary @payload.json \
-b 'SESSDATA=xxx; bili_jct=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 删除合集
> https://member.bilibili.com/x2/creative/web/season/del
*请求方式: POST*
认证方式: Cookie (SESSDATA)
**正文参数 (application/x-www-form-urlencoded):**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----- | --- | ---- | ----- | --- |
| id | num | 合集 ID | 必要 | |
| csrf | str | CSRF Token (即 Cookie 中 bili_jct) | 必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
**示例:**
删除合集 `id=3541327`
```shell
curl -X POST 'https://member.bilibili.com/x2/creative/web/season/del' \
--data-urlencode 'id=3541327' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx; bili_jct=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,555 @@
# 视频相关杂项
## 获取稿件列表
> https://member.bilibili.com/x2/creative/web/archives/sp
*请求方式: GET*
认证方式: Cookie (SESSDATA)
注: 该接口返回内容大多为无实际意义的空值, 具体内容建议通过常规接口获取
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | --------- | ----------- | ----------------- |
| pn | num | 页码 | 必要 | 默认为 1 |
| ps | num | 每页数量 | 必要 | 默认为 10, 留空为 100 |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------ | ---- |
| class | null | 作用尚不明确 | |
| arc_audits | array | 稿件列表 | |
| page | obj | 分页信息 | |
| play_type | num | 1 | |
`arc_audits` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| - | - | - | - |
| Archive | obj | 稿件信息 | |
| Videos | null | | |
| stat | obj | 稿件统计信息 | |
| state_panel | num | 0 | |
| parent_tname | str | 空 | |
| typename | str | 空 | |
| open_appeal | num | 0 | |
| activity | null | | |
| season_add_state | num | 是否可加入合集 | 0: 可以<br />1: 不可以 |
`Archive` 对象:
| 字段 | 类型 | 内容 | 备注 |
| - | - | - | - |
| aid | num | av 号 | |
| bvid | str | bv 号 | |
| mid | num | 0 | |
| tid | num | 0 | |
| tp_info | null | | |
| title | str | 稿件标题 | |
| author | str | 空 | |
| cover | str | 封面图 | 位于 bfs 需要自行拼接 URL |
| reject_reason | str | 空 | |
| reject_reason_url | str | 空 | |
| tag | str | 空 | |
| duration | num | 0 | |
| copyright | num | 0 | |
| no_reprint | num | 0 | |
| ugcpay | num | 0 | |
| order_id | num | 0 | |
| order_name | str | 空 | |
| adorder_id | num | 0 | |
| adorder_name | str | 空 | |
| adorder_no | str | 空 | |
| online_time | num | 0 | |
| new_adorder_info | null | | |
| desc | str | 稿件简介 | |
| mission_id | num | 0 | |
| mission_name | str | 空 | |
| attribute | num | 0 | |
| state | num | 0 | |
| state_desc | str | 空 | |
| state_panel | num | 0 | |
| source | str | 空 | |
| desc_format_id | num | 0 | |
| attrs | null | | |
| porder | null | | |
| dynamic | str | 空 | |
| poi_object | null | | |
| dtime | num | 0 | |
| ptime | num | 0 | |
| ctime | num | 0 | |
| ugcpay_info | null | | |
| staffs | null | | |
| vote | null | | |
| activity | null | | |
| interactive | num | 0 | |
| hl | null | | |
| no_background | num | 0 | |
| dynamic_video | num | 0 | |
| no_public | num | 0 | |
| is_360 | num | 0 | |
| is_dolby | num | 0 | |
| lossless_music | num | 0 | |
| bs_editor | num | 0 | |
| up_from | num | 0 | |
| desc_v2 | null | | |
| dynamic_v2 | null | | |
| topic_id | num | 0 | |
| topic_name | str | 空 | |
| topic_stat | num | 0 | |
| premiere | num | 0 | |
| is_ugcpay_v2 | num | 0 | |
| recreate | null | | |
| charging_pay | num | 0 | |
| neutral_mark | str | 空 | |
| preview | null | | |
| upower_level | null | | |
| cover43 | str | 空 | |
| had_passed | bool | false | |
| is_staff | num | 0 | |
| is_pugv | num | 0 | |
| upower_mode | num | 0 | |
| upower_unit_price | num | 0 | |
`stat` 对象:
| 字段 | 类型 | 内容 | 备注 |
| - | - | - | - |
| aid | num | av 号 | |
| view | num | 播放量 | |
| danmaku | num | 弹幕数 | |
| reply | num | 评论数 | |
| favorite | num | 收藏数 | |
| coin | num | 硬币数 | |
| share | num | 分享数 | |
| now_rank | num | 0 | 当前排名 |
| his_rank | num | 0 | 历史最高排名 |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | 恒为 0 |
| vt | num | 0 | |
| vv | num | 播放量 | |
**示例:**
```shell
curl -G "https://member.bilibili.com/x2/creative/web/archives/sp" \
--data-urlencode "pn=1" \
--data-urlencode "ps=3" \
-b "SESSDATA=xxx"
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"class": null,
"arc_audits": [
{
"Archive": {
"aid": 1906473802,
"bvid": "BV1MU411S7iJ",
"mid": 0,
"tid": 0,
"tp_info": null,
"title": "Linux小寄巧: 原地卸载内核然后尝试救活!",
"author": "",
"cover": "/bfs/archive/b76c0b574862f5a8e8eb133f5f33fcbcd602401a.jpg",
"reject_reason": "",
"reject_reason_url": "",
"tag": "",
"duration": 0,
"copyright": 0,
"no_reprint": 0,
"ugcpay": 0,
"order_id": 0,
"order_name": "",
"adorder_id": 0,
"adorder_name": "",
"adorder_no": "",
"online_time": 0,
"new_adorder_info": null,
"desc": "",
"mission_id": 0,
"mission_name": "",
"attribute": 0,
"state": 0,
"state_desc": "",
"state_panel": 0,
"source": "",
"desc_format_id": 0,
"attrs": null,
"porder": null,
"dynamic": "",
"poi_object": null,
"dtime": 0,
"ptime": 0,
"ctime": 0,
"ugcpay_info": null,
"staffs": null,
"vote": null,
"activity": null,
"interactive": 0,
"hl": null,
"no_background": 0,
"dynamic_video": 0,
"no_public": 0,
"is_360": 0,
"is_dolby": 0,
"lossless_music": 0,
"bs_editor": 0,
"up_from": 0,
"desc_v2": null,
"dynamic_v2": null,
"topic_id": 0,
"topic_name": "",
"topic_stat": 0,
"premiere": 0,
"is_ugcpay_v2": 0,
"recreate": null,
"political_media": 0,
"political_editable": 0,
"charging_pay": 0,
"neutral_mark": "",
"preview": null,
"upower_level": null,
"cover43": "",
"had_passed": false,
"is_staff": 0,
"is_pugv": 0,
"upower_mode": 0,
"upower_unit_price": 0
},
"Videos": null,
"stat": {
"aid": 1906473802,
"view": 4036,
"danmaku": 8,
"reply": 56,
"favorite": 53,
"coin": 12,
"share": 8,
"now_rank": 0,
"his_rank": 0,
"like": 99,
"dislike": 0,
"vt": 0,
"vv": 4036
},
"state_panel": 0,
"parent_tname": "",
"typename": "",
"open_appeal": 0,
"activity": null,
"season_add_state": 0
},
{
"Archive": {
"aid": 1956170305,
"bvid": "BV1Ay411i7Ph",
"mid": 0,
"tid": 0,
"tp_info": null,
"title": "十多年前的电脑运行Debian12的启动过程",
"author": "",
"cover": "/bfs/archive/0bff6624fdfcbf3326fba1837fef093d455c846a.jpg",
"reject_reason": "",
"reject_reason_url": "",
"tag": "",
"duration": 0,
"copyright": 0,
"no_reprint": 0,
"ugcpay": 0,
"order_id": 0,
"order_name": "",
"adorder_id": 0,
"adorder_name": "",
"adorder_no": "",
"online_time": 0,
"new_adorder_info": null,
"desc": "",
"mission_id": 0,
"mission_name": "",
"attribute": 0,
"state": 0,
"state_desc": "",
"state_panel": 0,
"source": "",
"desc_format_id": 0,
"attrs": null,
"porder": null,
"dynamic": "",
"poi_object": null,
"dtime": 0,
"ptime": 0,
"ctime": 0,
"ugcpay_info": null,
"staffs": null,
"vote": null,
"activity": null,
"interactive": 0,
"hl": null,
"no_background": 0,
"dynamic_video": 0,
"no_public": 0,
"is_360": 0,
"is_dolby": 0,
"lossless_music": 0,
"bs_editor": 0,
"up_from": 0,
"desc_v2": null,
"dynamic_v2": null,
"topic_id": 0,
"topic_name": "",
"topic_stat": 0,
"premiere": 0,
"is_ugcpay_v2": 0,
"recreate": null,
"political_media": 0,
"political_editable": 0,
"charging_pay": 0,
"neutral_mark": "",
"preview": null,
"upower_level": null,
"cover43": "",
"had_passed": false,
"is_staff": 0,
"is_pugv": 0,
"upower_mode": 0,
"upower_unit_price": 0
},
"Videos": null,
"stat": {
"aid": 1956170305,
"view": 2747,
"danmaku": 13,
"reply": 37,
"favorite": 11,
"coin": 14,
"share": 4,
"now_rank": 0,
"his_rank": 0,
"like": 42,
"dislike": 0,
"vt": 0,
"vv": 2747
},
"state_panel": 0,
"parent_tname": "",
"typename": "",
"open_appeal": 0,
"activity": null,
"season_add_state": 0
},
{
"Archive": {
"aid": 910326709,
"bvid": "BV1GM4y1a7Vn",
"mid": 0,
"tid": 0,
"tp_info": null,
"title": "Minecraft终末之诗但是谷歌翻译20遍",
"author": "",
"cover": "/bfs/archive/09b7f2542f3e66973ec7de1a3c806cdd45b95426.jpg",
"reject_reason": "",
"reject_reason_url": "",
"tag": "",
"duration": 0,
"copyright": 0,
"no_reprint": 0,
"ugcpay": 0,
"order_id": 0,
"order_name": "",
"adorder_id": 0,
"adorder_name": "",
"adorder_no": "",
"online_time": 0,
"new_adorder_info": null,
"desc": "原内容来源Minecraft Wiki\n使用的工具Google Translate\n视频仅供娱乐请勿当真",
"mission_id": 0,
"mission_name": "",
"attribute": 0,
"state": 0,
"state_desc": "",
"state_panel": 0,
"source": "",
"desc_format_id": 0,
"attrs": null,
"porder": null,
"dynamic": "",
"poi_object": null,
"dtime": 0,
"ptime": 0,
"ctime": 0,
"ugcpay_info": null,
"staffs": null,
"vote": null,
"activity": null,
"interactive": 0,
"hl": null,
"no_background": 0,
"dynamic_video": 0,
"no_public": 0,
"is_360": 0,
"is_dolby": 0,
"lossless_music": 0,
"bs_editor": 0,
"up_from": 0,
"desc_v2": null,
"dynamic_v2": null,
"topic_id": 0,
"topic_name": "",
"topic_stat": 0,
"premiere": 0,
"is_ugcpay_v2": 0,
"recreate": null,
"political_media": 0,
"political_editable": 0,
"charging_pay": 0,
"neutral_mark": "",
"preview": null,
"upower_level": null,
"cover43": "",
"had_passed": false,
"is_staff": 0,
"is_pugv": 0,
"upower_mode": 0,
"upower_unit_price": 0
},
"Videos": null,
"stat": {
"aid": 910326709,
"view": 533,
"danmaku": 6,
"reply": 4,
"favorite": 15,
"coin": 13,
"share": 4,
"now_rank": 0,
"his_rank": 0,
"like": 29,
"dislike": 0,
"vt": 0,
"vv": 533
},
"state_panel": 0,
"parent_tname": "",
"typename": "",
"open_appeal": 0,
"activity": null,
"season_add_state": 0
}
],
"page": {
"pn": 1,
"ps": 3,
"count": 32
},
"play_type": 1
}
}
```
</details>
## 视频基础信息
> https://member.bilibili.com/x/web/archive/videos
*请求方式: GET*
认证方式: Cookie (SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---- | ---- | ---- | ---- | ---- |
| aid | num | av 号 | 必要 | |
**JSON回复:**
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| archive | obj | 稿件信息 | |
| videos | array | 视频信息 | |
`archive` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| aid | num | av 号 | |
| bvid | str | bvid | |
| title | str | 标题 | |
`videos` 数组:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | -- | --- |
| cid | num | 分P cid | |
| index | num | 分P 序号 | |
| title | str | 分P 标题 | |
| duration | num | 0 | |
**示例:**
```shell
curl -G "https://member.bilibili.com/x/web/archive/videos" \
--data-urlencode "aid=1906473802" \
-b "SESSDATA=xxx"
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"archive": {
"aid": 1906473802,
"bvid": "BV1MU411S7iJ",
"title": "Linux小寄巧: 原地卸载内核然后尝试救活!"
},
"videos": [
{
"cid": 1625992822,
"index": 1,
"title": "Linux小寄巧: 原地卸载内核然后尝试救活!",
"duration": 0
}
]
}
}
```
</details>