mirror of
https://github.com/SocialSisterYi/bilibili-API-collect.git
synced 2024-12-25 20:10:06 +08:00
feat: 更新web端视频操作播放合集相关接口 (#1064)
- [d1a4f6d
](d1a4f6dd2b
) close #1062 ~by myself~ - [ff450a6
](ff450a6569
) add Wbi API - [b3c3fce
](b3c3fce164
) close #707 - [fa6c9c8
](fa6c9c8f57
) new method of `buvid3` & `b_nut` from #790 - [45755b0
](45755b01d8 (diff-1a8d1ba142e61d01fd3b24620847ca2f2ff93f880973ea1e1d71de79d0123096R133)
) close #380 - [45755b0
](45755b01d8 (diff-1a8d1ba142e61d01fd3b24620847ca2f2ff93f880973ea1e1d71de79d0123096R542)
) add details in #244 - [1c5b778
](1c5b7788f7
) - [85e8fc5
](85e8fc5304
) close #945
This commit is contained in:
parent
64f8643d07
commit
2465990ccc
@ -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)
|
||||
|
@ -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*
|
||||
|
||||
|
@ -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'
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 从响应头获取 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"
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
</details>
|
||||
|
@ -250,7 +250,7 @@
|
||||
| title | str | 直播间标题 | |
|
||||
| cover | str | 直播间封面 url | |
|
||||
| watched_show | obj | | |
|
||||
| roomid | num | 直播间 id(短号) | |
|
||||
| roomid | num | 直播间 id | |
|
||||
| roundStatus | num | 轮播状态 | 0:未轮播<br />1:轮播 |
|
||||
| broadcast_type | num | 0 | |
|
||||
|
||||
|
@ -130,7 +130,7 @@ curl 'https://app.bilibili.com/x/v2/view/like' \
|
||||
|
||||
</details>
|
||||
|
||||
### 判断视频是否被点赞(双端)
|
||||
### 判断视频近期是否被点赞(双端)
|
||||
|
||||
> 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' \
|
||||
|
||||
</details>
|
||||
|
||||
### 收藏视频(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: 成功<br />-101: 账号未登录<br />-111: csrf 校验失败<br />2001000: 参数错误 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | 错误时为 null 或不存在 |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ----------- | ---- | --------------------- | ----------------------- |
|
||||
| prompt | bool | 是否为未关注用户收藏? | false:否<br />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"
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"prompt": false,
|
||||
"ga_data": null,
|
||||
"toast_msg": "",
|
||||
"success_num": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### 判断视频是否被收藏(双端)
|
||||
|
||||
> https://api.bilibili.com/x/v2/fav/video/favoured
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@
|
||||
|
||||
## 获取视频详细信息(web端)
|
||||
|
||||
> https://api.bilibili.com/x/web-interface/wbi/view
|
||||
> https://api.bilibili.com/x/web-interface/view
|
||||
|
||||
*请求方式:GET*
|
||||
|
@ -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 | 视频播放进度 | 非必要 | 单位为秒<br />默认为0 |
|
||||
| realtime | num | 总计播放时间 | 非必要 | 单位为秒 |
|
||||
| start_ts | num | 开始播放时刻 | 非必要 | 时间戳 |
|
||||
| type | num | 视频类型 | 非必要 | 3:投稿视频<br />4:剧集<br />10:课程 |
|
||||
| sub_type | num | 剧集副类型 | 非必要 | 当`type=4`时本参数有效<br />1:番剧<br />2:电影<br />3:纪录片<br />4:国创<br />5:电视剧<br />7:综艺 |
|
||||
| dt | num | 2 | 非必要 | |
|
||||
| play_type | num | 播放动作 | 非必要 | 0:播放中<br />1:开始播放<br />2:暂停<br />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 | 视频播放进度 | 非必要 | 单位 秒<br />播放完成为 -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:投稿视频<br />4:剧集<br />10:课程 |
|
||||
| sub_type | num | 剧集副类型 | 非必要 | 0: 普通投稿视频<br />1:番剧<br />2:电影<br />3:纪录片<br />4:国创<br />5:电视剧<br />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:播放中<br />1:开始播放<br />2:暂停<br />3:继续播放<br />4: 结束播放 |
|
||||
| csrf | str | CSRF Token(即 Cookie 中 bili_jct) | 非必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user