# 合集管理 | BAC Document
社区开源的第三方哔哩哔哩 API 文档

# 合集管理

关于用户空间的合集及视频列表参见 合集和视频列表信息

## 获取合集列表

> https://member.bilibili.com/x2/creative/web/seasons

请求方式: GET

认证方式: Cookie (SESSDATA)

URL参数:

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
pn | num | 页码 | 必要 | 默认为 1
ps | num | 每页数量 | 必要 | 默认为 30
order | str | 排序方式 | 不必要 | 创建时间: ctime 修改时间: mtime
sort | str | 排序方式 | 不必要 | 创建时间: asc 修改时间: 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: 正常显示 -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: 否

示例:

    curl -G 'https://member.bilibili.com/x2/creative/web/seasons' \
    --data-urlencode 'pn=1' \
    --data-urlencode 'ps=30' \
    -b "SESSDATA=xxx"

查看响应示例:

    {
      "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
      }
    }

## 创建合集

> ttps://member.bilibili.com/x2/creative/web/season/add

请求方式: POST

认证方式: Cookie (SESSDATA)

注: 有人工审核

正文参数 (application/x-www-form-urlencoded):

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
title | str | 合集标题 | 必要 |
desc | str | 合集简介 | 不必要 |
cover | str | 封面图 | 必要 | 从 上传封面 处获取
season_price | num | 0 | 不必要 | 作用尚不明确
csrf | str | CSRF Token (即 Cookies 中 bili_jct ) | 必要 |

JSON回复:

根对象:

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0：成功
message | str | 错误信息 |
ttl | num | 1 |
data | num | 合集 ID |

示例:

    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'

查看响应示例:

    {
      "code": 0,
      "message": "0",
      "ttl": 1,
      "data": 3541247
    }

## 添加视频到合集

> 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` 文件中:

    {
      "sectionId": 3954033,
      "episodes": [
        {
          "title": "Linux小寄巧: 原地卸载内核然后尝试救活!",
          "aid": 1906473802,
          "cid": 1625992822,
          "charging_pay": 0
        },
        {
          "title": "十多年前的电脑运行Debian12的启动过程",
          "aid": 1956170305,
          "cid": 1607067247,
          "charging_pay": 0
        }
      ]
    }

    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'

查看响应示例:

    {
      "code": 0,
      "message": "0",
      "ttl": 1
    }

## 编辑合集小节

> 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` 文件中:

    {
      "section": {
        "id": 3954033,
        "type": 1,
        "seasonId": 3541247,
        "title": "正片"
      },
      "sorts": [
        {
          "id": 77260687,
          "sort": 1
        },
        {
          "id": 77260688,
          "sort": 2
        }
      ]
    }

    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'

查看响应示例:

    {
      "code": 0,
      "message": "0",
      "ttl": 1
    }

## 编辑合集信息

> 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 | 封面图 | 必要 | 从 上传封面 处获取
desc | str | 合集简介 | 不必要 |
season_price | num | 0 | 不必要 | 作用尚不明确
isEnd | num | 是否完结 | 不必要 | 0：未完结 1：完结

`sorts` 数组中的对象:

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
id | num | 小节 ID | 必要 |
sort | num | 排序位置 | 必要 |

JSON回复:

根对象:

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0：成功
message | str | 错误信息 |
ttl | num | 1 |

示例:

假设您已经把请求有效荷载放在 `payload.json` 文件中:

    {
      "season": {
        "cover": "https://archive.biliimg.com/bfs/archive/77906db03b1eefac02613de184afad03f7bc58d7.jpg",
        "id": 3541327,
        "title": "IWILLBEDEL"
      },
      "sorts": [
        {
          "id": 3954127,
          "sort": 1
        }
      ]
    }

    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'

查看响应示例:

    {
      "code": 0,
      "message": "0",
      "ttl": 1
    }

## 删除合集

> 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`

    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'

查看响应示例:

    {
      "code": 0,
      "message": "0",
      "ttl": 1
    }

## 获取合集小节中的视频

> 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: 正常显示 -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 的视频

    curl -G --url 'https://member.bilibili.com/x2/creative/web/season/section' \
    --url-query 'id=176088' \
    -b 'SESSDATA=xxx'

查看响应示例:

会返回全部的，由于很长，这里只保留三个作为例子

    {
        "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
                }
            ]
        }
    }

## 编辑投稿视频合集

> 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 | 必要
section_id | num | null | 小节 ID | 必要
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) |

示例:

    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"

查看响应示例:

    {
      "season_id": null,
      "section_id": null,
      "title": "标题",
      "aid": 123,
      "csrf": "eqweeqw"
    }

## aid反查合集id

> https://member.bilibili.com/x2/creative/web/season/aid 请求方式: GET

认证方式：Cookie(SESSDATA)

URL参数:

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
id | num | 视频 aid | 必要 |

JSON回复:

根对象:

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0: 成功 其他: 失败
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: 未完结 1: 已完结
mid | num | 合集作者 ID |
isAct | num | 是否为活动合集 | 0: 否 1: 是
is_pay | num | 是否付费 | 0: 否 1: 是
state | num | 合集状态 | 0: 正常显示 -6: 正在审核
partState | num | 合集分段状态 | 0: 正常
signState | num | 合集签名状态 | 0: 正常
rejectReason | str | 合集拒绝原因 |
ctime | num | 创建时间 | UNIX 时间戳
mtime | num | 修改时间 | UNIX 时间戳
no_section | num | 是否设小节 | 1: 不设小节
forbid | num | 合集是否禁止 | 0: 否 1: 是
protocol_id | str | 协议 ID |
ep_num | num | 视频数量 |
season_price | num | 合集价格 | 0: 免费
is_opened | num | 是否公开 | 1: 公开 0: 不公开
has_charging_pay | num | 是否充电付费 | 0: 否 1: 是
has_pugv_pay | num | 是否 PUGV 付费 | 0: 否 1: 是

示例:

    curl -G "https://member.bilibili.com/x2/creative/web/season/aid" \
    --data-urlencode "id=123456" \
    -b "SESSDATA=xxxxxxxxxxx"

查看响应示例:

    {
      "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
      }
    }