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回复:**