From 2465990ccc5aea35ad6d0b17dc7c2f36bc5e45c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Session=E5=B0=8F=E8=83=A1?=
<102411014+SessionHu@users.noreply.github.com>
Date: Sat, 27 Jul 2024 13:49:12 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0web=E7=AB=AF=E8=A7=86?=
=?UTF-8?q?=E9=A2=91=E6=93=8D=E4=BD=9C=E6=92=AD=E6=94=BE=E5=90=88=E9=9B=86?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=20(#1064)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- [d1a4f6d](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/d1a4f6dd2b4e5d57188d56671b1dfacc299ea3fd) close #1062 ~by myself~
- [ff450a6](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/ff450a65693dbdc3c9a78a05c67ddbc1a783a532) add Wbi API
- [b3c3fce](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/b3c3fce1646e72985e46492224554ba8b505849a) close #707
- [fa6c9c8](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/fa6c9c8f575a617f6603935b5a77c9624dd5b9fb) new method of `buvid3` & `b_nut` from #790
- [45755b0](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/45755b01d8d9593d50658de83322dd79e7b45e21#diff-1a8d1ba142e61d01fd3b24620847ca2f2ff93f880973ea1e1d71de79d0123096R133) close #380
- [45755b0](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/45755b01d8d9593d50658de83322dd79e7b45e21#diff-1a8d1ba142e61d01fd3b24620847ca2f2ff93f880973ea1e1d71de79d0123096R542) add details in #244
- [1c5b778](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/1c5b7788f717f92a0e3f655e947db49e842f80e0) - [85e8fc5](https://github.com/SocialSisterYi/bilibili-API-collect/pull/1064/commits/85e8fc5304d94ccb7480545e38201219b71370ad) close #945
---
README.md | 2 +-
docs/live/follow_up_live.md | 2 +-
docs/misc/buvid3_4.md | 39 +-
docs/user/info.md | 2 +-
docs/video/action.md | 86 +-
docs/video/collection.md | 1491 ++++++++++++++++++++++++++++++++++-
docs/video/info.md | 1 +
docs/video/report.md | 66 +-
8 files changed, 1651 insertions(+), 38 deletions(-)
diff --git a/README.md b/README.md
index 3ffdecf4f2..2364b21d6c 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接
- [x] [图片格式化](docs/misc/picture.md)
- [x] [bvid 说明](docs/misc/bvid_desc.md)
- [ ] [设备唯一标识BUVID](docs/misc/device_identity.md)
-- [ ] [获取 buvid3 / buvid4](docs/misc/buvid3_4.md)
+- [ ] [获取 buvid3 / buvid4 / b_nut](docs/misc/buvid3_4.md)
- [ ] [gRPC API 接口定义](grpc_api)
- [ ] [登录](docs/login)
- [x] [登录操作 (人机认证)](docs/login/login_action)
diff --git a/docs/live/follow_up_live.md b/docs/live/follow_up_live.md
index ed91573799..5e88da5952 100644
--- a/docs/live/follow_up_live.md
+++ b/docs/live/follow_up_live.md
@@ -2,7 +2,7 @@
## 用户关注的所有UP的直播情况
-> https://api.bilibili.com/x/space/wbi/acc/info
+> https://api.live.bilibili.com/xlive/web-ucenter/user/following
*请求方式:GET*
diff --git a/docs/misc/buvid3_4.md b/docs/misc/buvid3_4.md
index 13d386e710..91441d0f32 100644
--- a/docs/misc/buvid3_4.md
+++ b/docs/misc/buvid3_4.md
@@ -1,4 +1,4 @@
-# 获取 buvid3 / buvid4
+# 获取 buvid3 / buvid4 / b_nut
## 游客获取 buvid3 / buvid4
@@ -46,3 +46,40 @@ curl -G 'https://api.bilibili.com/x/frontend/finger/spi'
```
+
+## 从响应头获取 buvid3 / b_nut
+
+使用 `GET` 或 `HEAD` 方法请求 `https://www.bilibili.com/`, 且请求头中 `User-Agent` 字段不包含 `curl` `python` `awa` 等敏感子字符串, 且相同 `User-Agent` 字段不得短时多次请求. 在响应头中的 `Set-Cookie` 字段中, 即可找到 `buvid3` 和 `b_nut`.
+
+若不带任何 Cookie 请求, 则 `b_nut` 为响应生成时刻的 UNIX 秒级时间戳.
+若请求 Cookie 仅带有 `buvid3`, 则 `b_nut` 为 `100`.
+若请求 Cookie 仅带有 `b_nut`, 则与不带任何 Cookie 的响应相同.
+若请求 Cookie 仅带有 `buvid3` 和 `b_nut`, 则响应无 `Set-Cookie` 字段.
+若请求 Cookie 带有其他字段, 无影响.
+
+**示例:**
+
+```shell
+curl -I "https://www.bilibili.com/" -A "awa"
+```
+
+
+查看响应示例:
+
+```http
+HTTP/2 200
+date: Fri, 26 Jul 2024 06:38:43 GMT
+content-type: text/html; charset=utf-8
+support: nantianmen
+set-cookie: buvid3=805E4894-96A2-0684-6F00-C6EA1FFB911023315infoc; path=/; expires=Sat, 26 Jul 2025 06:38:43 GMT; domain=.bilibili.com
+set-cookie: b_nut=1721975923; path=/; expires=Sat, 26 Jul 2025 06:38:43 GMT; domain=.bilibili.com
+vary: Origin,Accept-Encoding
+idc: shjd
+expires: Fri, 26 Jul 2024 06:38:42 GMT
+cache-control: no-cache
+x-cache-webcdn: MISS from blzone01
+x-cache-time: 0
+x-save-date: Fri, 26 Jul 2024 06:38:43 GMT
+```
+
+
diff --git a/docs/user/info.md b/docs/user/info.md
index 7f3f35881d..18f12b43d7 100644
--- a/docs/user/info.md
+++ b/docs/user/info.md
@@ -250,7 +250,7 @@
| title | str | 直播间标题 | |
| cover | str | 直播间封面 url | |
| watched_show | obj | | |
-| roomid | num | 直播间 id(短号) | |
+| roomid | num | 直播间 id | |
| roundStatus | num | 轮播状态 | 0:未轮播
1:轮播 |
| broadcast_type | num | 0 | |
diff --git a/docs/video/action.md b/docs/video/action.md
index 56a3f3c19e..8d22b7ad65 100644
--- a/docs/video/action.md
+++ b/docs/video/action.md
@@ -130,7 +130,7 @@ curl 'https://app.bilibili.com/x/v2/view/like' \
-### 判断视频是否被点赞(双端)
+### 判断视频近期是否被点赞(双端)
> https://api.bilibili.com/x/web-interface/archive/has/like
@@ -138,6 +138,9 @@ curl 'https://app.bilibili.com/x/v2/view/like' \
认证方式:APP或Cookie(SESSDATA)
+注: 这一 API 实际上只能判断出视频**在近期内**是否被点赞, 并不能判断出视频是否被点赞.
+「近期」的定义不明, 但至少半年前点赞过的视频, 用这一接口获取到的结果就已经是 `0` 了. 参见 [#380](https://github.com/SocialSisterYi/bilibili-API-collect/issues/380).
+
**url参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
@@ -459,8 +462,6 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/coins' \
### 收藏视频(双端)
> https://api.bilibili.com/medialist/gateway/coll/resource/deal
->
-> https://api.bilibili.com/x/v3/fav/resource/deal
*请求方式:POST*
@@ -475,8 +476,8 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/coins' \
| access_key | str | APP 登录 Token | APP 方式必要 | |
| rid | num | 稿件 avid | 必要 | |
| type | num | 必须为2 | 必要 | |
-| add_media_ids | nums | 需要加入的收藏夹 mlid | 非必要 | 同时添加多个,用`,`(%2C)分隔 |
-| del_media_ids | nums | 需要取消的收藏夹 mlid | 非必要 | 同时取消多个,用`,`(%2C)分隔 |
+| add_media_ids | nums | 需要加入的收藏夹 mlid | 非必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
+| del_media_ids | nums | 需要取消的收藏夹 mlid | 非必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
| csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 | |
**json回复:**
@@ -538,6 +539,81 @@ curl 'https://api.bilibili.com/medialist/gateway/coll/resource/deal' \
+### 收藏视频(Web端)
+
+> https://api.bilibili.com/x/v3/fav/resource/deal
+
+*请求方式: POST*
+
+认证方式: Cookie(SESSDATA)
+
+**正文参数(application/x-www-form-urlencoded):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------------- | ---- | ---------------------------------- | ------------ | ------------------------------ |
+| rid | num | 稿件 avid | 必要 | |
+| type | num | 必须为2 | 必要 | |
+| add_media_ids | nums | 需要加入的收藏夹 mlid | 非必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
+| del_media_ids | nums | 需要取消的收藏夹 mlid | 非必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
+| csrf | str | CSRF Token (即 Cookie 中 bili_jct) | 必要 | |
+| platform | str | 平台标识? | 非必要 | web端: web |
+| eab_x | num | 1 | 非必要 | 作用尚不明确 |
+| ramval | num | 正整数 | 非必要 | 可能与在该页面的停留时间相关? |
+| ga | num | 1 | 非必要 | 作用尚不明确 |
+| gaia_source | str | ??? | 非必要 | web端: web_normal |
+
+**JSON回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------- |
+| code | num | 返回值 | 0: 成功
-101: 账号未登录
-111: csrf 校验失败
2001000: 参数错误 |
+| message | str | 错误信息 | 默认为0 |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | 错误时为 null 或不存在 |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ----------- | ---- | --------------------- | ----------------------- |
+| prompt | bool | 是否为未关注用户收藏? | false:否
true:是 |
+| ga_data | null | | 作用尚不明确 |
+| toast_msg | str | 空 | 作用尚不明确 |
+| success_num | num | 0 | 作用尚不明确 |
+
+**示例:**
+
+将视频 `av1906473802` 添加到收藏夹 `1164192068` 中
+
+```shell
+curl -sX POST "https://api.bilibili.com/x/v3/fav/resource/deal" \
+--data-urlencode "rid=1906473802" \
+--data-urlencode "type=2" \
+--data-urlencode "csrf=xxx" \
+--data-urlencode "add_media_ids=1164192068" \
+-b "SESSDATA=xxx; bili_jct=xxx"
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "prompt": false,
+ "ga_data": null,
+ "toast_msg": "",
+ "success_num": 0
+ }
+}
+```
+
+
+
### 判断视频是否被收藏(双端)
> https://api.bilibili.com/x/v2/fav/video/favoured
diff --git a/docs/video/collection.md b/docs/video/collection.md
index 410d75375a..44e03f0080 100644
--- a/docs/video/collection.md
+++ b/docs/video/collection.md
@@ -1,8 +1,18 @@
-# 视频合集信息
+# 合集和视频列表信息
+
+请注意区分 **合集(seasons_archives)** 和 **视频列表(seasons_series)**
+
+合集是后加入的功能, 图标为立体叠放的正方形(.icon-heji), 可以在创作中心管理
+
+列表即系列(series)或频道(channel), 图标为平面叠放的矩形且中央有播放按钮标识(.icon-ic_channel1), 在个人空间直接操作
+
+此处保留原 Issue 的表述, 参见 [#945](https://github.com/SocialSisterYi/bilibili-API-collect/issues/945)
## 获取视频合集信息
-> https://api.bilibili.com/x/polymer/web-space/seasons_archives_list
+> https://api.bilibili.com/x/polymer/web-space/seasons_archives_list (需验证referer)
+>
+> https://api.bilibili.com/x/polymer/space/seasons_archives_list (旧接口, 不推荐使用, 无鉴权验证)
*请求方式:GET*
@@ -10,11 +20,15 @@
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|--------|-----|------|--------|-----|
-| mid | num | 用户 mid | 必要 | 似乎不一定需要创建者的 mid,随意的用户 mid 就能成功请求。 |
+| mid | num | 用户 mid | 必要 | 创建者的 mid,但也可以是任意的非负整数 |
| season_id | num | 视频合集 ID | 必要 | |
-| sort_reverse | bool | 未知 | 可选 | |
-| page_num | num | 页码索引 | 可选 | |
-| page_size | num | 单页内容数量 | 可选 | |
+| sort_reverse | bool | 排序方式 | 可选 | true: 升序排序
false: 默认排序 |
+| page_num | num | 页码索引 | 可选 | 默认为 1 |
+| page_size | num | 单页内容数量 | 可选 | 默认为 30 |
+| gaia_vtoken | str | 风控验证? | 可选 | 若被风控则必要(如User-Agent不正常) |
+| web_location | str | 页面位置? | 可选 | 333.999 |
+| w_rid | str | WBI 签名 | 可选 | 参见 [WBI 签名](../misc/sign/wbi.md) |
+| wts | num | UNIX 秒级时间戳 | 可选 | 参见 [WBI 签名](../misc/sign/wbi.md) |
**json回复:**
@@ -52,16 +66,16 @@
| bvid | str | 稿件 bvid ||
| ctime | num | 创建时间 | Unix 时间戳 |
| duration | num | 视频时长 | 单位为秒 |
-| enable_vt | bool | false ||
-| interactive_video | bool | false ||
+| enable_vt | bool | false | 旧接口无 |
+| interactive_video | bool | 是否是互动视频 | |
| pic | str | 封面 URL ||
-| playback_position | num || 会随着播放时间增长,播放完成后为 -1 。单位未知 |
+| playback_position | num || 会随着播放时间增长,播放完成后为 -1 。单位为 % |
| pubdate | num | 发布日期 | Unix 时间戳 |
| stat | obj | 稿件信息 ||
| state | num | 0 ||
| title | str | 稿件标题||
-| ugc_pay | num | 0 ||
-| vt_display | str |||
+| ugc_pay | num | UGC 付费? | 0: 否 |
+| vt_display | str | 空 | 旧接口无 |
`archives`中的`stat`对象:
@@ -90,3 +104,1458 @@
| page_num | num | 分页页码 | |
| page_size | num | 单页个数 | |
| total | num | 合集内视频数量 | |
+
+**示例:**
+
+获取 `mid=37737161` 的 `season_id=1227671` 视频合集信息,默认排序,第 1 页,每页 30 个视频
+
+```shell
+curl -G "https://api.bilibili.com/x/polymer/space/seasons_archives_list" \
+--data-urlencode "mid=37737161" \
+--data-urlencode "sort_reverse=false" \
+--data-urlencode "season_id=1227671" \
+--data-urlencode "page_num=1" \
+--data-urlencode "page_size=30"
+```
+
+
+查看响应示例:
+
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "aids": [
+ 311606079,
+ 400546145
+ ],
+ "archives": [
+ {
+ "aid": 311606079,
+ "bvid": "BV1XN411K7g9",
+ "ctime": 1679651747,
+ "duration": 261,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/234e6bd061176dba9e148f4373c52fa7cd2d801f.jpg",
+ "pubdate": 1679651747,
+ "stat": {
+ "view": 12145
+ },
+ "state": 0,
+ "title": "某些IT社区平台乱象,文章千篇一律,毫不注重版权,文章互相抄袭成潮流,希望能够好好管管!",
+ "ugc_pay": 0
+ },
+ {
+ "aid": 400546145,
+ "bvid": "BV1qo4y1L73P",
+ "ctime": 1682777426,
+ "duration": 335,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/a6b6fb0330bbf6c500720a024e5a9ade24d888c3.jpg",
+ "pubdate": 1682777425,
+ "stat": {
+ "view": 52743
+ },
+ "state": 0,
+ "title": "某些搜索引擎得到的结果,官方网站反而排在一些诈骗广告后面,诱导用户下载大量捆绑垃圾软件",
+ "ugc_pay": 0
+ }
+ ],
+ "meta": {
+ "category": 0,
+ "cover": "https://archive.biliimg.com/bfs/archive/5e1c1f77c3065ec31eec43d7e35f7a061602e4d6.jpg",
+ "description": "白马首席讲师吐槽系列视频",
+ "mid": 37737161,
+ "name": "水浅王八多,真假白马说",
+ "ptime": 1682777425,
+ "season_id": 1227671,
+ "total": 2
+ },
+ "page": {
+ "page_num": 1,
+ "page_size": 30,
+ "total": 2
+ }
+ }
+}
+```
+
+
+
+## 只获取系列视频
+
+> https://api.bilibili.com/x/polymer/web-space/home/seasons_series
+
+*请求方式: GET*
+
+**URL参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| --------- | ---- | ------------ | ------ | ---- |
+| mid | num | 用户 mid | 必要 | |
+| page_num | num | 页码索引 | 必要 | |
+| page_size | num | 单页内容数量 | 必要 | |
+| gaia_vtoken | str | 风控验证? | 可选 | 若被风控则必要(如User-Agent不正常) |
+| w_rid | str | WBI 签名 | 不必要 | 参见 [WBI 签名](../misc/sign/wbi.md) |
+| wts | num | UNIX 秒级时间戳 | 不必要 | 参见 [WBI 签名](../misc/sign/wbi.md) |
+
+**JSON回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------- |
+| code | num | 返回值 | 0:成功
-352: 请求被风控
-400: 请求错误 |
+| message | str | 错误信息 | 默认为0 |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ----------- | ---- | -------- | -------- |
+| items_lists | obj | 内容列表 | 套了个娃 |
+
+`data`中的`items_lists`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------ | ----- | -------- | ---- |
+| page | obj | 分页信息 | |
+| seasons_list | array | 空 | |
+| series_list | array | 系列列表 | |
+
+`items_lists`中的`page`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------- | ---- | -------- | ---- |
+| page_num | num | 分页页码 | |
+| page_size | num | 单页个数 | |
+| total | num | 总页数 | |
+
+`items_lists`中的`series_list`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| -- | ---- | ----------------- | ---- |
+| 0 | obj | 第1个系列内容 | |
+| 1 | obj | 第2个系列内容 | |
+| …… | obj | …… | …… |
+| n | obj | 第(n+1)个系列内容 | |
+
+`series_list`数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ----------- | ----- | ----------------- | ------------- |
+| archives | array | 系列视频列表 | |
+| meta | obj | 系列元数据 | |
+| recent_aids | array | 系列视频 aid 列表 | 内容类型为num |
+
+`series_list`中的`archives`数组:
+
+同[获取视频合集信息](#获取视频合集信息)中的`archives`数组
+
+`series_list`中的`meta`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------------- | ----- | -------------- | ------------- |
+| category | num | 1 | |
+| cover | str | 系列封面 URL | |
+| creator | str | auto | |
+| ctime | num | 创建时间 | Unix 时间戳 |
+| description | str | 系列描述 | |
+| keywords | array | 系列关键词列表 | 内容类型为str |
+| last_update_ts | num | 最近更新时间 | Unix 时间戳 |
+| mid | num | UP 主 ID | |
+| mtime | num | 修改时间 | Unix 时间戳 |
+| name | str | 系列标题 | |
+| raw_keywords | str | 原始系列关键词 | |
+| series_id | num | 系列 ID | |
+| state | num | 2 | |
+| total | num | 系列视频数量 | |
+
+**示例:**
+
+```shell
+curl -G "https://api.bilibili.com/x/polymer/web-space/home/seasons_series" \
+--data-urlencode "mid=37737161" \
+--data-urlencode "page_num=1" \
+--data-urlencode "page_size=10"
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "items_lists": {
+ "page": {
+ "page_num": 1,
+ "page_size": 10,
+ "total": 1
+ },
+ "seasons_list": [],
+ "series_list": [
+ {
+ "archives": [
+ {
+ "aid": 284063097,
+ "bvid": "BV1Fc411x7xF",
+ "ctime": 1705925782,
+ "duration": 8885,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/5aa1bb0a121d89969e9bd2634bc7ae23272bf850.jpg",
+ "playback_position": 0,
+ "pubdate": 1705925781,
+ "stat": {
+ "view": 14683,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Gradle 教程 已完结 (基于Kotlin DSL讲解) 4K蓝光画质 超强的脚本式项目依赖和构建工具",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 367948632,
+ "bvid": "BV1P94y1c7tV",
+ "ctime": 1703844221,
+ "duration": 52036,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/499aeb41a0428e05523b766e367540b04f7c3ae2.jpg",
+ "playback_position": 0,
+ "pubdate": 1703844220,
+ "stat": {
+ "view": 82997,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Kotlin 教程 已完结 (IDEA 2024 最新版) 4K蓝光画质+杜比音效 零基础入门一套搞定 入门到入土经典版",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 836303388,
+ "bvid": "BV1Hg4y1m7Ca",
+ "ctime": 1705401362,
+ "duration": 5873,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/a20b09d1cc1a81f6a9c5ed8ea322656e406be725.jpg",
+ "playback_position": 0,
+ "pubdate": 1705401362,
+ "stat": {
+ "view": 8417,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Kotlin 扩展篇 已完结 (IDEA 2024 最新版) 4K蓝光画质 与Java语言混合编程",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 1,
+ "cover": "http://i0.hdslb.com/bfs/archive/5aa1bb0a121d89969e9bd2634bc7ae23272bf850.jpg",
+ "creator": "auto",
+ "ctime": 1705401630,
+ "description": "包含Kotlin语言学习的完整流程,正在不断完善中哦~",
+ "keywords": [
+ "Kotlin"
+ ],
+ "last_update_ts": 1705925782,
+ "mid": 37737161,
+ "mtime": 1705925782,
+ "name": "Kotlin开心路线",
+ "raw_keywords": "Kotlin",
+ "series_id": 3908327,
+ "state": 2,
+ "total": 3
+ },
+ "recent_aids": [
+ 284063097,
+ 367948632,
+ 836303388
+ ]
+ },
+ {
+ "archives": [
+ {
+ "aid": 848832470,
+ "bvid": "BV1CL4y1i7qR",
+ "ctime": 1635258883,
+ "duration": 106474,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/45dddea811257f78ddd6f1e70197d95d7d6b5187.jpg",
+ "playback_position": 0,
+ "pubdate": 1635258883,
+ "stat": {
+ "view": 438645,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "JavaWeb 教程 已完结(IDEA 2021版本)4K蓝光画质 入土到起立",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 566880413,
+ "bvid": "BV1Kv4y1x7is",
+ "ctime": 1676544280,
+ "duration": 25149,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/cc59de5afebc66447ba93ad9ea0ba73a9b09c117.jpg",
+ "playback_position": 0,
+ "pubdate": 1676544280,
+ "stat": {
+ "view": 87171,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Spring 核心教程 已完结(IDEA 2023最新版)4K蓝光画质 基于Spring6的全新重制版本 起立到起飞",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 615286308,
+ "bvid": "BV1Lh4y1M7kx",
+ "ctime": 1688117457,
+ "duration": 10373,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/5f860de4bc0fab30651ae93396f9c572be8380b2.jpg",
+ "playback_position": 0,
+ "pubdate": 1688117457,
+ "stat": {
+ "view": 41428,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Spring MVC 教程 已完结(IDEA 2023最新版)4K蓝光画质 基于Spring6的全新重制版本 起立到起飞",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 403104913,
+ "bvid": "BV1fV411M7aS",
+ "ctime": 1688560394,
+ "duration": 17611,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/c4557a16aa3519183d6ae0114e1c64107bb23703.jpg",
+ "playback_position": 0,
+ "pubdate": 1688560394,
+ "stat": {
+ "view": 59298,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Spring Security 教程 已完结(IDEA 2023最新版)4K蓝光画质 基于Spring6的全新重制版本 起立到起飞",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 828666773,
+ "bvid": "BV1xu4y1m7UP",
+ "ctime": 1689767299,
+ "duration": 29696,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/06cf686d4d3f7ce6731975ef59938d759283318e.jpg",
+ "playback_position": 0,
+ "pubdate": 1689767299,
+ "stat": {
+ "view": 108078,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Spring Boot 教程 已完结(IDEA 2023最新版)4K蓝光画质 基于SpringBoot 3 的全新重制版本 起飞到删库跑路",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 852857221,
+ "bvid": "BV1AL4y1j7RY",
+ "ctime": 1648811079,
+ "duration": 55544,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/629755f79c13c96c9b6d91da80257a352b29dd86.jpg",
+ "playback_position": 0,
+ "pubdate": 1648811079,
+ "stat": {
+ "view": 168251,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "SpringCloud 教程 已完结(IDEA 2022.1最新版)4K蓝光画质 微服务开发",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 1,
+ "cover": "http://i0.hdslb.com/bfs/archive/45dddea811257f78ddd6f1e70197d95d7d6b5187.jpg",
+ "creator": "auto",
+ "ctime": 1669273103,
+ "description": "已排序完成,共4个系列,请至少完成Java SE篇视频之后再开始JavaEE路线哦~ 整个路线大致为:JavaWeb基础篇、SSM成长篇、SpringBoot成熟篇、SpringCloud进阶篇",
+ "keywords": [
+ ""
+ ],
+ "last_update_ts": 1696249622,
+ "mid": 37737161,
+ "mtime": 1696249622,
+ "name": "JavaEE通关路线",
+ "raw_keywords": "",
+ "series_id": 2800548,
+ "state": 2,
+ "total": 9
+ },
+ "recent_aids": [
+ 848832470,
+ 566880413,
+ 615286308,
+ 403104913,
+ 828666773,
+ 852857221
+ ]
+ },
+ {
+ "archives": [
+ {
+ "aid": 445283537,
+ "bvid": "BV14j411S76G",
+ "ctime": 1687946670,
+ "duration": 7008,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/208bb09ecf97fbbd73e45b3839715276ffbbe8f4.jpg",
+ "playback_position": 0,
+ "pubdate": 1687946670,
+ "stat": {
+ "view": 9483,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Apache Maven 依赖管理 极速上手 已完结(2021 版本)4K蓝光画质+杜比音效 从导入到冲突",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 813084463,
+ "bvid": "BV1r34y1p7j9",
+ "ctime": 1656909478,
+ "duration": 17457,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/798135f31dc9e03121458f32825dc81d8e403887.jpg",
+ "playback_position": 0,
+ "pubdate": 1656909478,
+ "stat": {
+ "view": 46179,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Docker 容器技术 已完结(2022 最新版)4K蓝光画质+杜比音效 从内卷到开摆",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 432905025,
+ "bvid": "BV1a3411f7nh",
+ "ctime": 1669296029,
+ "duration": 10393,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/d14c0fad064a224de7afb7edd147f8b335324c53.jpg",
+ "playback_position": 0,
+ "pubdate": 1669296029,
+ "stat": {
+ "view": 37040,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Linux 操作系统 光速入门 已完结(2021 版本)4K蓝光画质+杜比音效 从讨厌到喜欢",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 390385576,
+ "bvid": "BV19d4y147Df",
+ "ctime": 1669272992,
+ "duration": 23389,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/8ba763e1a1e14c47c1c178ecf21240896d3fbb5e.jpg",
+ "playback_position": 0,
+ "pubdate": 1669272992,
+ "stat": {
+ "view": 32189,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "MySQL 数据库技术 已完结(2021版本)4K蓝光画质+杜比音效 从内卷到开摆",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 647924810,
+ "bvid": "BV1ce4y1W7YB",
+ "ctime": 1669275447,
+ "duration": 8492,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/f5bcc92a4e181cb12a8b80499cea255f43f2d97b.jpg",
+ "playback_position": 0,
+ "pubdate": 1669275447,
+ "stat": {
+ "view": 20004,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Git 版本控制 快速上手 已完结(2021版本)4K蓝光画质+杜比音效 从开摆到放弃",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 347934006,
+ "bvid": "BV1vR4y1o7Z2",
+ "ctime": 1669295228,
+ "duration": 10631,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/f95d39b0bc1a2bdad07461a8f4b1ea48c174902c.jpg",
+ "playback_position": 0,
+ "pubdate": 1669295228,
+ "stat": {
+ "view": 25860,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Redis 缓存技术 已完结(2021版本)4K蓝光画质+杜比音效 从内卷到开摆",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 1,
+ "cover": "http://i1.hdslb.com/bfs/archive/208bb09ecf97fbbd73e45b3839715276ffbbe8f4.jpg",
+ "creator": "auto",
+ "ctime": 1669273164,
+ "description": "包含主线中讲解的中间件归档视频与当下必学的火热技术。",
+ "keywords": [
+ ""
+ ],
+ "last_update_ts": 1688123428,
+ "mid": 37737161,
+ "mtime": 1688123428,
+ "name": "必学技术与中间件",
+ "raw_keywords": "",
+ "series_id": 2800550,
+ "state": 2,
+ "total": 7
+ },
+ "recent_aids": [
+ 445283537,
+ 813084463,
+ 432905025,
+ 390385576,
+ 647924810,
+ 347934006
+ ]
+ },
+ {
+ "archives": [
+ {
+ "aid": 900707014,
+ "bvid": "BV1YP4y1o75f",
+ "ctime": 1663494406,
+ "duration": 103542,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/291dd3b60b67a8f74567a81999612bd50b4e8017.jpg",
+ "playback_position": 0,
+ "pubdate": 1663494406,
+ "stat": {
+ "view": 312144,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "JavaSE 教程 已完结 (IDEA 2022 最新版) 4K蓝光画质+杜比音效 零基础入门一套搞定 入门到入土",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 604837097,
+ "bvid": "BV1G84y1v7Vj",
+ "ctime": 1667815711,
+ "duration": 19395,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/4a4522194a1d0c8ae684976b26fb2fe43ce28f39.jpg",
+ "playback_position": 0,
+ "pubdate": 1667815711,
+ "stat": {
+ "view": 74496,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "JavaSE AWT/Swing 图形化编程 (IDEA 2022 最新版) 4K蓝光画质+杜比音效 快速上手桌面程序 用IDEA写IDEA",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 766688029,
+ "bvid": "BV1Er4y1r7as",
+ "ctime": 1645157763,
+ "duration": 21585,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/ced6a8c8548f0f921f306ea3589f9d470adc0446.jpg",
+ "playback_position": 0,
+ "pubdate": 1645157763,
+ "stat": {
+ "view": 133409,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Java JVM 虚拟机 已完结(IDEA 2021版本)4K蓝光画质 全程劝退",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 936955310,
+ "bvid": "BV1JT4y1S7K8",
+ "ctime": 1646391131,
+ "duration": 31736,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/9347ef3cdb6cf0e5bca29ce32e211b488e90ab7b.jpg",
+ "playback_position": 0,
+ "pubdate": 1646391131,
+ "stat": {
+ "view": 74731,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Java JUC 并发编程 已完结(IDEA 2021版本)4K蓝光画质 玩转多线程",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 768437265,
+ "bvid": "BV1ar4y1J7mC",
+ "ctime": 1650881312,
+ "duration": 26314,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/7f97549147c09a386d9402b121cc6206c36e4079.jpg",
+ "playback_position": 0,
+ "pubdate": 1650881312,
+ "stat": {
+ "view": 67900,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Java NIO Netty网络编程 已完结(IDEA 2022.1最新版)4K蓝光画质 网络I/O进阶编程",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 684547077,
+ "bvid": "BV1tU4y1y7Fg",
+ "ctime": 1653900327,
+ "duration": 10243,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/dc0cc9464c6fc274c1f23f682a01dab5a358217b.jpg",
+ "playback_position": 0,
+ "pubdate": 1653900327,
+ "stat": {
+ "view": 47693,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "JavaSE 9-17 新特性 已完结(IDEA 2022.1最新版)4K蓝光画质 Java9/10/11/12/13/14/15/16/17讲解",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 1,
+ "cover": "http://i0.hdslb.com/bfs/archive/291dd3b60b67a8f74567a81999612bd50b4e8017.jpg",
+ "creator": "auto",
+ "ctime": 1648810702,
+ "description": "已排序完成,共3个系列,完成JavaSE篇之后,就可以开启JavaEE路线了",
+ "keywords": [
+ ""
+ ],
+ "last_update_ts": 1667816253,
+ "mid": 37737161,
+ "mtime": 1667816253,
+ "name": "JavaSE基础路线",
+ "raw_keywords": "",
+ "series_id": 2158988,
+ "state": 2,
+ "total": 6
+ },
+ "recent_aids": [
+ 900707014,
+ 604837097,
+ 766688029,
+ 936955310,
+ 768437265,
+ 684547077
+ ]
+ },
+ {
+ "archives": [
+ {
+ "aid": 770027221,
+ "bvid": "BV1Cr4y137os",
+ "ctime": 1655371329,
+ "duration": 48185,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/5d9bd135f068e623e50c7341244635f6cc96c3ea.jpg",
+ "playback_position": 0,
+ "pubdate": 1655371329,
+ "stat": {
+ "view": 275378,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "C语言程序设计 已完结(CLion 2022 最新版)4K蓝光画质+杜比音效 梦开始的地方",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 941207928,
+ "bvid": "BV13W4y127Ey",
+ "ctime": 1658474799,
+ "duration": 69081,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/0bf055a0961c0f9bbb7f869b47c3e3d7df21f55c.jpg",
+ "playback_position": 0,
+ "pubdate": 1658474798,
+ "stat": {
+ "view": 220072,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "数据结构与算法 已完结(CLion 2022 最新版)4K蓝光画质+杜比音效 全程高能",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 426681358,
+ "bvid": "BV1u3411P7Na",
+ "ctime": 1653033628,
+ "duration": 12346,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i0.hdslb.com/bfs/archive/4174e2976f750d5410d6cef374c3035190717cac.jpg",
+ "playback_position": 0,
+ "pubdate": 1653033628,
+ "stat": {
+ "view": 71911,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Java 设计模式 已完结(IDEA 2022.1最新版)4K蓝光画质+杜比音效",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 1,
+ "cover": "http://i0.hdslb.com/bfs/archive/5d9bd135f068e623e50c7341244635f6cc96c3ea.jpg",
+ "creator": "auto",
+ "ctime": 1653296733,
+ "description": "Java设计模式系列视频,提升你的代码编写规范。",
+ "keywords": [
+ ""
+ ],
+ "last_update_ts": 1658735292,
+ "mid": 37737161,
+ "mtime": 1658735292,
+ "name": "高等院校计算机必修课",
+ "raw_keywords": "",
+ "series_id": 2318088,
+ "state": 2,
+ "total": 3
+ },
+ "recent_aids": [
+ 770027221,
+ 941207928,
+ 426681358
+ ]
+ }
+ ]
+ }
+ }
+}
+```
+
+## 获取系列和合集视频
+
+> https://api.bilibili.com/x/polymer/web-space/seasons_series_list
+
+*请求方式: GET*
+
+鉴权方式: 请求头 User-Agent 为正常浏览器, 若仍被风控则请求头再带上 Referer 为 `.bilibili.com` 下任意页
+
+**URL参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | -------- | ------ | ---- |
+| mid | num | 用户 mid | 必要 | |
+| page_num | num | 页码 | 必要 | 默认为 1 |
+| page_size | num | 每页数量 | 必要 | 默认为 20 |
+| w_rid | str | WBI 签名 | 可选 | 参见 [WBI 签名](../misc/sign/wbi.md) |
+| wts | num | UNIX 秒级时间戳 | 可选 | 参见 [WBI 签名](../misc/sign/wbi.md) |
+| web_location | str | 页面位置? | 可选 | 333.999 |
+
+**JSON回复:**
+
+与 [只获取系列视频](#只获取系列视频) 基本一致, 但 `.data.items_lists.seasons_list` 数组不为空,
+且该数组中的元素结构与 `.data.items_lists.series_list` 相同, 略
+
+**示例:**
+
+获取 `mid=37737161` 的系列视频列表,每页 5 条,页码为 1
+
+```shell
+curl -G "https://api.bilibili.com/x/polymer/web-space/seasons_series_list" \
+--data-urlencode "mid=37737161" \
+--data-urlencode "page_num=1" \
+--data-urlencode "page_size=5" \
+--data-urlencode "w_rid=xxx" \
+--data-urlencode "wts=xxx"
+```
+
+
+查看响应示例:
+
+```jsonc
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "items_lists": {
+ "page": {
+ "page_num": 1,
+ "page_size": 5,
+ "total": 9
+ },
+ "seasons_list": [
+ {
+ "archives": [
+ {
+ "aid": 343807541,
+ "bvid": "BV1t94y1D79E",
+ "ctime": 1658907465,
+ "duration": 2164,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i1.hdslb.com/bfs/archive/0af0faa77a1921db4cf86c115db70aa2594983f0.jpg",
+ "playback_position": 0,
+ "pubdate": 1658907465,
+ "stat": {
+ "view": 43096,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "Java学习路线两条龙版,让你不再迷茫!包含各个知识点梳理,常用技术栈介绍等。",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 429032764,
+ "bvid": "BV11G411h7NB",
+ "ctime": 1659499261,
+ "duration": 197,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/5235a0ab2738e288b08654aa8e0cd3a509a7ef96.jpg",
+ "playback_position": 0,
+ "pubdate": 1659499200,
+ "stat": {
+ "view": 22700,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "好书推荐《On Java》都什么年代了,还在看传统Java书籍?",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ // ...
+ ],
+ "meta": {
+ "category": 0,
+ "cover": "https://archive.biliimg.com/bfs/archive/27733cf13514d990c880154b937cd8633f583aa4.jpg",
+ "description": "除教程视频外其他的视频,均在此。",
+ "mid": 37737161,
+ "name": "合集·拾枝杂谈",
+ "ptime": 1694682652,
+ "season_id": 587216,
+ "total": 10
+ },
+ "recent_aids": [
+ 343807541,
+ 429032764,
+ 857089796,
+ 560181990,
+ 774119786,
+ 859397126
+ ]
+ },
+ {
+ "archives": [
+ {
+ "aid": 311606079,
+ "bvid": "BV1XN411K7g9",
+ "ctime": 1679651747,
+ "duration": 261,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/234e6bd061176dba9e148f4373c52fa7cd2d801f.jpg",
+ "playback_position": 0,
+ "pubdate": 1679651747,
+ "stat": {
+ "view": 12150,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "某些IT社区平台乱象,文章千篇一律,毫不注重版权,文章互相抄袭成潮流,希望能够好好管管!",
+ "ugc_pay": 0,
+ "vt_display": ""
+ },
+ {
+ "aid": 400546145,
+ "bvid": "BV1qo4y1L73P",
+ "ctime": 1682777426,
+ "duration": 335,
+ "enable_vt": false,
+ "interactive_video": false,
+ "pic": "http://i2.hdslb.com/bfs/archive/a6b6fb0330bbf6c500720a024e5a9ade24d888c3.jpg",
+ "playback_position": 0,
+ "pubdate": 1682777425,
+ "stat": {
+ "view": 52744,
+ "vt": 0
+ },
+ "state": 0,
+ "title": "某些搜索引擎得到的结果,官方网站反而排在一些诈骗广告后面,诱导用户下载大量捆绑垃圾软件",
+ "ugc_pay": 0,
+ "vt_display": ""
+ }
+ ],
+ "meta": {
+ "category": 0,
+ "cover": "https://archive.biliimg.com/bfs/archive/5e1c1f77c3065ec31eec43d7e35f7a061602e4d6.jpg",
+ "description": "白马首席讲师吐槽系列视频",
+ "mid": 37737161,
+ "name": "合集·水浅王八多,真假白马说",
+ "ptime": 1682777425,
+ "season_id": 1227671,
+ "total": 2
+ },
+ "recent_aids": [
+ 311606079,
+ 400546145
+ ]
+ },
+ // ...
+ ],
+ "series_list": [
+ // 与前接口基本相同
+ ]
+ }
+ }
+}
+```
+
+
+
+## 查询指定系列
+
+> https://api.bilibili.com/x/series/series
+
+*请求方式: GET*
+
+**URL参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | -------- | ------ | ---- |
+| series_id | num | 系列ID | 必要 | |
+
+**JSON回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------- |
+| code | num | 返回值 | 0:成功 |
+| message | str | 错误信息 | 默认为0 |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------ | ---- | ------------ | ---- |
+| meta | obj | 系列信息 | |
+| recent_aids | array | 系列 aid 列表 | 内容类型为 num |
+
+`data`中的`meta`对象:
+
+同[只获取系列视频](#只获取系列视频)中的`meta`对象
+
+**示例:**
+
+```shell
+curl -G 'https://api.bilibili.com/x/series/series' \
+--data-urlencode 'series_id=2158988'
+```
+
+
+查看响应示例
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "meta": {
+ "series_id": 2158988,
+ "mid": 37737161,
+ "name": "JavaSE基础路线",
+ "description": "已排序完成,共3个系列,完成JavaSE篇之后,就可以开启JavaEE路线了",
+ "keywords": [
+ ""
+ ],
+ "creator": "auto",
+ "state": 2,
+ "last_update_ts": 1667816253,
+ "total": 6,
+ "ctime": 1648810702,
+ "mtime": 1667816253,
+ "raw_keywords": "",
+ "category": 1
+ },
+ "recent_aids": [
+ 900707014,
+ 604837097,
+ 766688029,
+ 936955310,
+ 768437265,
+ 684547077
+ ]
+ }
+}
+```
+
+
+
+## 获取指定系列视频
+
+> https://api.bilibili.com/x/series/archives
+
+*请求方式: GET*
+
+**URL参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | -------- | ------ | ---- |
+| mid | num | 用户 mid | 必要 | |
+| series_id | num | 系列ID | 必要 | |
+| only_normal | bool | 作用尚不明确 | 可选 | 默认为 true |
+| sort | str | 排序方式 | 可选 | desc: 默认排序
asc: 升序排序 |
+| pn | num | 页码 | 可选 | 默认为 1 |
+| ps | num | 每页数量 | 可选 | 默认为 20 |
+| current_mid | num | 当前用户 mid | 可选 | 用于 `playback_position` 播放进度 |
+
+**JSON回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------- |
+| code | num | 返回值 | 0:成功 |
+| message | str | 错误信息 | 默认为0 |
+| ttl | num | 1 | |
+| data | obj | 信息本体 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------ | ---- | ------------ | ---- |
+| aids | array | 视频 aid 列表 | 内容类型为 num |
+| page | obj | 页码信息 | |
+| archives | array | 视频信息列表 | |
+
+`data`中的`page`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | -------- | ---- |
+| num | num | 当前页码 | |
+| size | num | 每页数量 | |
+| total | num | 视频总数 | |
+
+`data`中的`archives`数组:
+
+基本同[获取视频合集信息](#获取视频合集信息)中的`archives`数组
+
+**示例:**
+
+获取 `mid=39665558` 的 `series_id=534501` 系列视频列表,每页 16 条,页码为 1,默认排序, 当前用户 mid 为 `1070915568`
+
+```shell
+curl -G "https://api.bilibili.com/x/series/archives" \
+--data-urlencode "mid=39665558" \
+--data-urlencode "series_id=534501" \
+--data-urlencode "only_normal=true" \
+--data-urlencode "sort=desc" \
+--data-urlencode "pn=1" \
+--data-urlencode "ps=16" \
+--data-urlencode "current_mid=1070915568"
+```
+
+
+查看响应示例:
+
+```jsonc
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "aids": [
+ 695029098,
+ 724599872,
+ 594794875,
+ 41565264,
+ 541053051,
+ 499696652,
+ 673071936,
+ 462891077,
+ 973903762,
+ 61692380,
+ 336713491,
+ 372661682,
+ 550840795,
+ 51839931,
+ 718592873,
+ 87838863
+ ],
+ "page": {
+ "num": 1,
+ "size": 16,
+ "total": 25
+ },
+ "archives": [
+ {
+ "aid": 695029098,
+ "title": "Python控制Minecraft教程(下):自动建造",
+ "pubdate": 1677321251,
+ "ctime": 1677321251,
+ "state": 0,
+ "pic": "http://i1.hdslb.com/bfs/archive/187c0ba21b9ceba908a8760e83d49f466316824b.jpg",
+ "duration": 275,
+ "stat": {
+ "view": 26555
+ },
+ "bvid": "BV1k24y1J78X",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 724599872,
+ "title": "『教程』一看就懂!Github基础教程",
+ "pubdate": 1646740815,
+ "ctime": 1646740824,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/1401ebe64e88deddf2b44ad6a740ff8872c2fda6.jpg",
+ "duration": 296,
+ "stat": {
+ "view": 2412054
+ },
+ "bvid": "BV1hS4y1S7wL",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 594794875,
+ "title": "『教程』手把手教你流畅访问Github",
+ "pubdate": 1647345613,
+ "ctime": 1647336725,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/71cc640a84087cc99399449c00b93212fe78ee6f.jpg",
+ "duration": 236,
+ "stat": {
+ "view": 910491
+ },
+ "bvid": "BV1Aq4y1q7hr",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 41565264,
+ "title": "《Python负基础到入门教程》专为\"非计算机专业和编程困难户\"制作(全13集 配音字幕重制版)",
+ "pubdate": 1548316071,
+ "ctime": 1548316072,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/5f4f6acfc00723c84f726d35add94b1d4b4ee482.jpg",
+ "duration": 6395,
+ "stat": {
+ "view": 261286
+ },
+ "bvid": "BV1et411b76c",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 541053051,
+ "title": "『教程』文字频频乱码 这背后是显卡的扭曲还是规则的沦丧?",
+ "pubdate": 1592996906,
+ "ctime": 1592996907,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/8a3c3e3d01a91776763d34bba79add698869c82d.jpg",
+ "duration": 381,
+ "stat": {
+ "view": 1184937
+ },
+ "bvid": "BV1ai4y1x7Uz",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 499696652,
+ "title": "『教程』VsCode五分钟上手教程 无一句废话",
+ "pubdate": 1601207369,
+ "ctime": 1601207369,
+ "state": 0,
+ "pic": "http://i1.hdslb.com/bfs/archive/cb78c07a090ed456bdcc217b0417670867772a29.jpg",
+ "duration": 329,
+ "stat": {
+ "view": 417610
+ },
+ "bvid": "BV1bK411P767",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 673071936,
+ "title": "『教程』补码怎么来的?",
+ "pubdate": 1620994814,
+ "ctime": 1620986531,
+ "state": 0,
+ "pic": "http://i1.hdslb.com/bfs/archive/12c02599321a0b1386b29ddc4653ff7df9bd54b4.jpg",
+ "duration": 445,
+ "stat": {
+ "view": 247578
+ },
+ "bvid": "BV16U4y1t7LD",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 462891077,
+ "title": "『教程』回调函数是个啥?",
+ "pubdate": 1631274885,
+ "ctime": 1631274885,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/df294350462558601f65b743ca25e2fdc01de628.jpg",
+ "duration": 452,
+ "stat": {
+ "view": 213895
+ },
+ "bvid": "BV1vL411t78b",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 98
+ },
+ {
+ "aid": 973903762,
+ "title": "『教程』堆栈是个啥?",
+ "pubdate": 1625227205,
+ "ctime": 1625227209,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/bf7956b6311ec0787fd52d1293bb4287d16b7e65.jpg",
+ "duration": 370,
+ "stat": {
+ "view": 535174
+ },
+ "bvid": "BV1P44y1q7uL",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 99
+ },
+ {
+ "aid": 61692380,
+ "title": "『教程』什么是递归?",
+ "pubdate": 1564660818,
+ "ctime": 1564637347,
+ "state": 0,
+ "pic": "http://i1.hdslb.com/bfs/archive/4af853671204b9bc631fada1934a3e86145a7d19.jpg",
+ "duration": 658,
+ "stat": {
+ "view": 487397
+ },
+ "bvid": "BV194411f71o",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 79
+ },
+ {
+ "aid": 336713491,
+ "title": "『教程』几分钟听懂迭代器",
+ "pubdate": 1636713476,
+ "ctime": 1636713476,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/6e255cce7c0303ab0211acd0f9d1ec5980ff03f7.jpg",
+ "duration": 453,
+ "stat": {
+ "view": 110688
+ },
+ "bvid": "BV18R4y1t7Hg",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 97
+ },
+ {
+ "aid": 372661682,
+ "title": "『教程』桌面精灵是怎样实现的?",
+ "pubdate": 1604916264,
+ "ctime": 1604916264,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/aaa8bb7b6fced63dd4792e28c1f78ba903fcc4cc.jpg",
+ "duration": 326,
+ "stat": {
+ "view": 168775
+ },
+ "bvid": "BV1aZ4y1V7aa",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 550840795,
+ "title": "『教程』什么是钩子技术?",
+ "pubdate": 1642744335,
+ "ctime": 1642744335,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/380b1ff9726c673411cf916b03268c7fb16aff68.jpg",
+ "duration": 240,
+ "stat": {
+ "view": 237568
+ },
+ "bvid": "BV1Cq4y1c7kK",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 51839931,
+ "title": "『教程』学编程前必知的8个电脑操作",
+ "pubdate": 1557313623,
+ "ctime": 1557313623,
+ "state": 0,
+ "pic": "http://i2.hdslb.com/bfs/archive/b54535ee3ff27006912d8013f2ea1667b2a50f80.jpg",
+ "duration": 641,
+ "stat": {
+ "view": 139385
+ },
+ "bvid": "BV1t4411v78E",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ },
+ {
+ "aid": 718592873,
+ "title": "『教程』这些常见编程单词到底该怎么读?看你能否读对?对✔❌✅☑",
+ "pubdate": 1634300675,
+ "ctime": 1634265090,
+ "state": 0,
+ "pic": "http://i1.hdslb.com/bfs/archive/de43275f44aea9f6d79c13ee68c6dcdfc9e5fc5e.jpg",
+ "duration": 783,
+ "stat": {
+ "view": 81193
+ },
+ "bvid": "BV1JQ4y1D79p",
+ "ugc_pay": 0,
+ "interactive_video": true,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 100
+ },
+ {
+ "aid": 87838863,
+ "title": "『教程』什么是环境变量",
+ "pubdate": 1581258353,
+ "ctime": 1581258353,
+ "state": 0,
+ "pic": "http://i0.hdslb.com/bfs/archive/331b2304d8262c4252f338599846761d6a5a8e0c.jpg",
+ "duration": 353,
+ "stat": {
+ "view": 99797
+ },
+ "bvid": "BV1w741147G9",
+ "ugc_pay": 0,
+ "interactive_video": false,
+ "enable_vt": 0,
+ "vt_display": "",
+ "playback_position": 0
+ }
+ ]
+ }
+}
+```
diff --git a/docs/video/info.md b/docs/video/info.md
index 8fc410187f..868fe1f7a2 100644
--- a/docs/video/info.md
+++ b/docs/video/info.md
@@ -4,6 +4,7 @@
## 获取视频详细信息(web端)
+> https://api.bilibili.com/x/web-interface/wbi/view
> https://api.bilibili.com/x/web-interface/view
*请求方式:GET*
diff --git a/docs/video/report.md b/docs/video/report.md
index 395a007bab..3f3d75c46d 100644
--- a/docs/video/report.md
+++ b/docs/video/report.md
@@ -78,28 +78,58 @@ curl 'https://api.bilibili.com/x/v2/history/report' \
认证方式:仅可Cookie(SESSDATA)
-默认间隔15秒一次
+默认间隔15秒一次, 亦可记录播放历史
-亦可记录播放历史
+尽管以下除正文 `aid` 以外的参数均为非必要, 但缺少可能会导致播放不被记录, 同一 IP/登陆用户 每五分钟最多记录一次播放
+
+该接口较为复杂, 且参数计算方法均为推测, 实际过程不明, 可能含有错误, 若要正式使用可以把已播放的持续时间全都设为相同值
+
+**URL参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------------------------- | ---- | ------------------------------ | ------ | ------- |
+| w_start_ts | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | UNIX 秒级时间戳 |
+| w_mid | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | |
+| w_aid | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | |
+| w_dt | num | 2 | 非必要 | |
+| w_realtime | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
+| w_playedtime | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
+| w_real_played_time | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
+| w_video_duration | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
+| w_last_play_progress_time | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
+| web_location | num | 网页位置 | 非必要 | 视频详情页播放器: 1315873 |
+| w_rid | num | WBI 签名 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) |
+| wts | num | UNIX 秒级时间戳 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) |
**正文参数( application/x-www-form-urlencoded ):**
-| 参数名 | 类型 | 内容 | 必要性 | 备注 |
-| ----------- | ---- | ------------------------ | ------------ | ------------------------------------------------------------ |
-| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 |
-| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 |
-| cid | num | 视频cid | 非必要 | 用于识别分P |
-| epid | num | 番剧epid | 非必要 | |
-| sid | num | 番剧ssid | 非必要 | |
-| mid | num | 当前用户mid | 非必要 | |
-| played_time | num | 视频播放进度 | 非必要 | 单位为秒
默认为0 |
-| realtime | num | 总计播放时间 | 非必要 | 单位为秒 |
-| start_ts | num | 开始播放时刻 | 非必要 | 时间戳 |
-| type | num | 视频类型 | 非必要 | 3:投稿视频
4:剧集
10:课程 |
-| sub_type | num | 剧集副类型 | 非必要 | 当`type=4`时本参数有效
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 |
-| dt | num | 2 | 非必要 | |
-| play_type | num | 播放动作 | 非必要 | 0:播放中
1:开始播放
2:暂停
3:继续播放 |
-| csrf | str | CSRF Token(位于cookie) | 非必要 | |
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----------------------- | ---- | ---------------------------------- | ------------ | ----------------------------------------------------------- |
+| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个(网页端请求默认仅使用aid) |
+| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 |
+| cid | num | 视频cid | 非必要 | 用于识别分P |
+| epid | num | 番剧epid | 非必要 | |
+| sid | num | 番剧ssid | 非必要 | |
+| mid | num | 当前用户mid | 非必要 | |
+| played_time | num | 视频播放进度 | 非必要 | 单位 秒
播放完成为 -1 |
+| realtime | num | 本轮页面会话真实播放时间 | 非必要 | 单位 秒 |
+| real_played_time | num | 本轮页面会话真实视频播放持续时间 | 非必要 | 单位 秒 |
+| refer_url | str | 与请求头 Referer 字段相同 | 非必要 | |
+| quality | num | 视频清晰度 | 非必要 | 参见[qn视频清晰度标识](videostream_url.md#qn视频清晰度标识) |
+| video_duration | num | 视频时长 | 非必要 | 单位 秒 |
+| last_play_progress_time | num | play_time 与 本轮页面会话开始时 played_time 之和 | 非必要 | 单位 秒 |
+| max_play_progress_time | num | 本轮页面会话所有最大 last_play_progress_time 与 本轮页面会话开始时 played_time 之和 | 非必要 | 单位 秒 |
+| start_ts | num | 开始播放时刻 | 非必要 | 时间戳 |
+| type | num | 视频类型 | 非必要 | 3:投稿视频
4:剧集
10:课程 |
+| sub_type | num | 剧集副类型 | 非必要 | 0: 普通投稿视频
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 |
+| dt | num | 2 | 非必要 | |
+| outer | num | 0 | 非必要 | |
+| spmid | str | 333.788.0.0 | 非必要 | 作用尚不明确 |
+| from_spmid | str | 播放来源? | 非必要 | 也可为空, 如: 444.41.list.card_archive.click |
+| session | str | 会话信息? | 非必要 | 每次刷新均不同, 生成原理尚不明确 |
+| extra | obj | 额外信息, 如播放器版本 | 非必要 | 如: `{"player_version":"4.8.36"}` |
+| play_type | num | 播放动作 | 非必要 | 0:播放中
1:开始播放
2:暂停
3:继续播放
4: 结束播放 |
+| csrf | str | CSRF Token(即 Cookie 中 bili_jct) | 非必要 | |
**json回复:**