bilibili-API-collect/docs/creativecenter/season.md
renmu123 73a2d98796
补充上传稿件和合集相关接口 (#1315)
* feat: 补充上传稿件和合集相关接口

* 补充新分新区的细节
2025-07-14 06:57:26 +08:00

1088 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 合集管理
关于用户空间的合集及视频列表参见 [合集和视频列表信息](../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)
注: 有人工审核
**正文参数 (application/x-www-form-urlencoded):**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| 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>
## 获取合集小节中的视频
> https://member.bilibili.com/x2/creative/web/season/section
*请求方法: GET*
认证方式: Cookie (SESSDATA)
可以在给合集排序时使用, 可以获取别人的
**URL 参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----- | --- | ---- | ----- | --- |
| id | num | 合集 ID | 必要 | |
**JSON 回复:**
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| section | obj | 小节信息 | |
| episodes | arr | 小节中的视频 | |
`data` 对象中的 `section` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ---- |
| id | num | 小节 ID | |
| type | num | 小节类型 | |
| seasonId | num | 合集 ID | |
| title | str | 小结标题 | |
| order | str | 排序编号? | |
| isEnd | num | 是否已完结? | 0: 未完结 |
| state | num | 合集状态? | 0: 正常显示<br />-6: 正在审核 |
| partState | num | 合集分段状态? | 0 |
| rejectReason | str | 合集拒绝原因? | |
| ctime | num | 创建时间 | |
| mtime | num | 修改时间 | |
| epCount | num | 小节视频总数 | |
| cover | num | 合集封面 | |
| show | num | 是否公开? | 1: 公开 |
| has_charging_pay | num | 是否充电付费? | 0: 否 |
| Episodes | null | | |
| has_pugv_pay | num | 是否 PUGV 付费? | 0: 否 |
`data` 对象中的 `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 | 是否视频所有者 | true:是所有者 |
| charging_pay | num | 充电付费? | 0: 否 |
**示例:**
获取合集小节 176088 的视频
```shell
curl -G --url 'https://member.bilibili.com/x2/creative/web/season/section' \
--url-query 'id=176088' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
会返回全部的,由于很长,这里只保留三个作为例子
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"section": {
"id": 176088,
"type": 1,
"seasonId": 152812,
"title": "正片",
"order": 1,
"state": 0,
"partState": 0,
"rejectReason": "",
"ctime": 1643250822,
"mtime": 1739466002,
"epCount": 112,
"cover": "http://i1.hdslb.com/bfs/archive/4439a182b142d92a169609e6e14e7217b3e14e0d.jpg",
"has_charging_pay": 0,
"Episodes": null,
"show": 1,
"has_pugv_pay": 0
},
"episodes": [
{
"id": 109100674,
"title": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
"aid": 113997323963614,
"bvid": "BV14BNfeSE5c",
"cid": 28376042631,
"seasonId": 152812,
"sectionId": 176088,
"order": 1,
"videoTitle": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
"archiveTitle": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
"archiveState": 0,
"rejectReason": "",
"state": 0,
"cover": "",
"is_free": 0,
"aid_owner": true,
"charging_pay": 0,
"member_first": 0,
"pugv_pay": 0
},
{
"id": 108733886,
"title": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
"aid": 113982291576104,
"bvid": "BV1YyNvetEbX",
"cid": 28325121446,
"seasonId": 152812,
"sectionId": 176088,
"order": 2,
"videoTitle": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
"archiveTitle": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
"archiveState": 0,
"rejectReason": "",
"state": 0,
"cover": "",
"is_free": 0,
"aid_owner": true,
"charging_pay": 0,
"member_first": 0,
"pugv_pay": 0
},
{
"id": 106045797,
"title": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
"aid": 113892936122993,
"bvid": "BV1ZFFKeTEkr",
"cid": 28087484764,
"seasonId": 152812,
"sectionId": 176088,
"order": 3,
"videoTitle": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
"archiveTitle": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
"archiveState": 0,
"rejectReason": "",
"state": 0,
"cover": "",
"is_free": 0,
"aid_owner": true,
"charging_pay": 0,
"member_first": 0,
"pugv_pay": 0
}
]
}
}
```
</details>
## 编辑投稿视频合集
> https://member.bilibili.com/x2/creative/web/season/switch
*请求方式: POST*
认证方式Cookie(SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| t | num | 当前时间 | 非必要 | UNIX 毫秒时间戳 |
| csrf | str | CSRF Token (位于 Cookie 中 bili_jct) | 必要 | |
**正文参数(application/json):**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| aid | num | 视频 ID | 必要 | |
| season_id | num | null | 合集 ID | 必要 | null 表示从合集中移除 |
| section_id | num | null | 小节 ID | 必要 | null 表示从小节中移除 |
| title | str | 视频标题 | 必要 | |
| csrf | str | CSRF Token (位于 Cookie 中 bili_jct) | 非必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----- |
| season_id | num | null | | |
| section_id | num | null | | |
| title | str | 标题 | |
| aid | num | aid | |
| csrf | num | CSRF Token (位于 Cookie 中 bili_jct) | |
**示例:**
```shell
curl -X POST "https://member.bilibili.com/x2/creative/web/season/switch" \
--url-query "csrf=xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
--data '{
"aid": 123456,
"season_id": 654321,
"section_id": 789012,
"title": "新视频标题"
}' \
-b "SESSDATA=xxxxxxxxxxx"
```
<details>
<summary>查看响应示例:</summary>
```json
{
"season_id": null,
"section_id": null,
"title": "标题",
"aid": 123,
"csrf": "eqweeqw"
}
```
</details>
## aid反查合集id
> https://member.bilibili.com/x2/creative/web/season/aid
*请求方式: GET*
认证方式Cookie(SESSDATA)
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 视频 aid | 必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----- |
| code | num | 返回值 | 0: 成功<br />其他: 失败 |
| message | str | 错误信息 | 默认为 0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| season | obj | 合集信息 | |
`season` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| id | num | 合集 ID | |
| title | str | 合集标题 | |
| cover | str | 合集封面 URL | |
| desc | str | 合集描述 | |
| isEnd | num | 是否已完结 | 0: 未完结<br />1: 已完结 |
| mid | num | 合集作者 ID | |
| isAct | num | 是否为活动合集 | 0: 否<br />1: 是 |
| is_pay | num | 是否付费 | 0: 否<br />1: 是 |
| state | num | 合集状态 | 0: 正常显示<br />-6: 正在审核 |
| partState | num | 合集分段状态 | 0: 正常 |
| signState | num | 合集签名状态 | 0: 正常 |
| rejectReason | str | 合集拒绝原因 | |
| ctime | num | 创建时间 | UNIX 时间戳 |
| mtime | num | 修改时间 | UNIX 时间戳 |
| no_section | num | 是否设小节 | 1: 不设小节 |
| forbid | num | 合集是否禁止 | 0: 否<br />1: 是 |
| protocol_id | str | 协议 ID | |
| ep_num | num | 视频数量 | |
| season_price | num | 合集价格 | 0: 免费 |
| is_opened | num | 是否公开 | 1: 公开<br />0: 不公开 |
| has_charging_pay | num | 是否充电付费 | 0: 否<br />1: 是 |
| has_pugv_pay | num | 是否 PUGV 付费 | 0: 否<br />1: 是 |
**示例:**
```shell
curl -G "https://member.bilibili.com/x2/creative/web/season/aid" \
--data-urlencode "id=123456" \
-b "SESSDATA=xxxxxxxxxxx"
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 12,
"title": "合集标题",
"desc": "",
"cover": "",
"isEnd": 0,
"mid": 123,
"isAct": 0,
"is_pay": 0,
"state": 0,
"partState": 0,
"signState": 0,
"rejectReason": "",
"ctime": 1667232000,
"mtime": 1667232000,
"no_section": 1,
"forbid": 0,
"protocol_id": "",
"ep_num": 0,
"season_price": 0,
"is_opened": 1,
"has_charging_pay": 0,
"has_pugv_pay": 0
}
}
```
</details>