调整部分接口描述与错误修复 (#1088)

* fix(search/search_request.md): cookie buvid3

* feat(login/login_action/password.md): more sms desc

* fix: typo

* feat(live/info.md): add ps for getRoomBaseInfo

* fix(danmaku/action.md): broken form

* chore: Browserslist: caniuse-lite is outdated

* feat(comment/list.md): reply/wbi/main param next

* feat(misc/buvid3_4.md): get buvid3 only

* fix: broken links & wrong code type

* feat: close all img & br tags

* feat(login/cookie_refresh.md): missing demo links

* feat(dynamic/detail.md): /lottery_svr/v1/lottery_svr/lottery_notice

* fix(video/action.md): share cookie buvid3

* feat: deprecated stat & attribute

* feat(dynamic/detail.md): reaction

* feat(misc/sign/v_voucher.md): header

* feat(dynamic/detail.md): update detail params & example

* feat(APP_widget/ver.md): /x/v2/version

* feat(video/info.md): update view

* feat(docs/user.md): remove channel

* feat(search/search_request.md): search/type -1200

* feat(user/space.md): audio

* feat(video/player.md): /x/player/wbi/v2

* feat(audio/musicstream_url.md): update web/url

* feat(comment/readme.md): state

* fix(user/medal.md): wrong guard_level desc

* feat(live/message_stream.md): DANMU_MSG

* fix(user/medals): wrong guard_level & guard_icon desc

* feat(live/message_stream.md): format & add more 'cmd'

* feat(live/message_stream.md): add more 'cmd'

* feat(live/message_stream.md): add tips for non-login users

* feat(video/player.md): need_login_subtitle

---------

Co-authored-by: 社会易姐QwQ <45892418+SocialSisterYi@users.noreply.github.com>
This commit is contained in:
Session小胡 2024-09-19 23:17:33 +08:00 committed by GitHub
parent 2dbdcd884d
commit 1e24c6b188
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 4207 additions and 2654 deletions

View File

@ -1,5 +1,5 @@
<p align="center"> <p align="center">
<img src="./assets/img/logo.png" width="250" height="200"> <img src="./assets/img/logo.png" width="250" height="200" />
</p> </p>
<h1 align="center">哔哩哔哩-API收集整理</h1> <h1 align="center">哔哩哔哩-API收集整理</h1>
<p align="center" class="shields"> <p align="center" class="shields">
@ -13,7 +13,7 @@
<img src="https://img.shields.io/github/forks/SocialSisterYi/bilibili-API-collect.svg" alt="GitHub forks"/> <img src="https://img.shields.io/github/forks/SocialSisterYi/bilibili-API-collect.svg" alt="GitHub forks"/>
</a> </a>
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/actions"> <a href="https://github.com/SocialSisterYi/bilibili-API-collect/actions">
<img src="https://img.shields.io/github/actions/workflow/status/SocialSisterYi/bilibili-API-collect/vuepress-deploy.yml"> <img src="https://img.shields.io/github/actions/workflow/status/SocialSisterYi/bilibili-API-collect/vuepress-deploy.yml" />
</a> </a>
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE" style="text-decoration:none" > <a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE" style="text-decoration:none" >
<img src="https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg" alt="GitHub license"/> <img src="https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg" alt="GitHub license"/>
@ -111,7 +111,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC少部分接
- [ ] [视频](docs/video) - [ ] [视频](docs/video)
- [x] [视频分区一览 (分区代码)](docs/video/video_zone.md) - [x] [视频分区一览 (分区代码)](docs/video/video_zone.md)
- [x] [基本信息](docs/video/info.md) - [x] [基本信息](docs/video/info.md)
- [x] [状态数](docs/video/status_number.md) - [x] [状态数](docs/video/status_number.md) (已失效)
- [x] [快照](docs/video/snapshot.md) - [x] [快照](docs/video/snapshot.md)
- [x] [点赞 & 投币 & 收藏 & 分享](docs/video/action.md) - [x] [点赞 & 投币 & 收藏 & 分享](docs/video/action.md)
- [ ] [TAG](docs/video/tags.md) - [ ] [TAG](docs/video/tags.md)
@ -312,7 +312,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a )
## 💦交流 ## 💦交流
<img src="https://avatars.githubusercontent.com/u/45892418" width="100" height="100"> <img src="https://avatars.githubusercontent.com/u/45892418" width="100" height="100" />
⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC ⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC
@ -327,7 +327,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a )
WeChat & Alipay WeChat & Alipay
<img src="./assets/img/sponsorQR.jpg" width="300" height="300"> <img src="./assets/img/sponsorQR.jpg" width="300" height="300" />
OR Aifadian[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE) OR Aifadian[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE)

View File

@ -1,5 +1,78 @@
# 获取最新 APP 版本 # 获取最新 APP 版本
## 获取版本信息
> https://app.bilibili.com/x/v2/version
*请求方法: GET*
<!--{
"from": {
"url": "https://app.bilibili.com/"
}
}-->
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| mobi_app | str | 目标客户端类型 | 不必要 | 留空为最新有更新的平台<br />android: Android 版<br />iphone: iPhone 版<br />ipad: iPad HD 版<br />win: UWP 版<br />android_tv_yst: TV 版<br />android_car: 车机版<br />pc_client: PC 客户端 |
**JSON回复:**
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | int | 返回值 | 0: 成功 |
| message | str | 错误信息 | 默认为 `0` |
| ttl | int | 1 | |
| data | array | 版本信息列表 | |
`data` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| plat | int | 平台 | 0: Android<br />1: iPhone<br />2: iPad HD<br />3: UWP<br />12: TV 版<br />35: 车机版<br />40: PC 客户端 |
| desc | str | 版本描述 | |
| version | str | 版本号 | |
| build | int | 内部版本号 | |
**示例:**
```shell
curl -G 'https://app.bilibili.com/x/v2/version' \
--url-query'mobi_app=android'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
{
"plat": 0,
"desc": "-修复了一些bug切了个大西瓜~",
"version": "8.9.0",
"build": 8090300,
"ptime": 1723612377
},
// ...
{
"plat": 0,
"desc": "[修正]横屏状态下,视频列表加载失败的问题\n[修正]超过48kHz采样率的音频无法播放的问题\n[修正]部分系统黑屏的问题\nPS:帮下面的同学祈祷早日上架",
"version": "2.0.4",
"build": 0,
"ptime": 1382630400
}
]
}
```
</details>
## 版本升级 ## 版本升级
> https://app.bilibili.com/x/v2/version/fawkes/upgrade > https://app.bilibili.com/x/v2/version/fawkes/upgrade
@ -67,18 +140,16 @@
**示例:** **示例:**
```sh ```shell
curl 'https://app.bilibili.com/x/v2/version/fawkes/upgrade' \ curl -G 'https://app.bilibili.com/x/v2/version/fawkes/upgrade' \
--url-query 'build=8000200' \ --url-query 'build=1145141' \
--url-query 'channel=master' \ --url-query 'channel=apt' \
--url-query 'mobi_app=android' \ --url-query 'mobi_app=android' \
--url-query 'ov=30' \ --url-query 'nt=awa' \
--url-query 'nt=1' \ --url-query 'ov=qwq' \
--url-query 'sn=15088473' \ --url-query 'platform=archlinux' \
--url-query 'vn=8.0.0' \ --url-query 'sn=919810' \
--header 'app-key: android64' \ --url-query 'vn=!!!'
--header 'buvid: XU607DF6A8098F57B0BAF7FC107714C3035F0' \
--header 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
``` ```
<details> <details>

View File

@ -9,7 +9,7 @@
**URL参数:** **URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 | | 参数名 | 类型 | 内容 | 必要性 | 备注 |
| - | - | - | - | - | - | - | | - | - | - | - | - |
| sid | num | 活动 id | 必要 | | | sid | num | 活动 id | 必要 | |
| bvid | str | 来源视频 bvid | 非必要 | | | bvid | str | 来源视频 bvid | 非必要 | |

View File

@ -28,6 +28,8 @@
| 参数名 | 类型 | 内容 | 必要性 | 备注 | | 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- | | ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | | | sid | num | 音频auid | 必要 | |
| quality | num | 2 | 不必要 | |
| privilege | num | 2 | 不必要 | |
**json回复** **json回复**
@ -35,8 +37,9 @@
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------------------------------------- | | ---- | ---- | -------- | ----------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />7201006未找到或已下架<br />72000000请求错误 | | code | num | 返回值 | 0: 成功<br />4511006: 已跳过无法播放的歌曲<br />7201006未找到或已下架<br />72000000请求错误 |
| msg | str | 错误信息 | 默认为success | | message | str | 返回值 | 字符串形式的 code |
| msg | str | 返回信息 | 成功为 success |
| data | obj | 数据本体 | | | data | obj | 数据本体 | |
`data`对象: `data`对象:
@ -45,27 +48,26 @@
| --------- | ----- | --------- | --------------------------------------- | | --------- | ----- | --------- | --------------------------------------- |
| sid | num | 音频auid | | | sid | num | 音频auid | |
| type | num | 音质标识 | -1试听片段192K<br />1192K | | type | num | 音质标识 | -1试听片段192K<br />1192K |
| info | str | 空 | **作用尚不明确** | | info | str | 空 | |
| timeout | num | 有效时长 | 单位为秒<br />一般为3h | | timeout | num | 有效时长 | 单位为秒<br />一般为3h |
| size | num | 文件大小 | 单位为字节<br />当`type`为-1时`size`为0 | | size | num | 文件大小 | 单位为字节<br />当`type`为-1时`size`为0 |
| cdns | array | 音频流url | | | cdns | array | 音频流url | |
| qualities | null | - | | | qualities | null | | |
| title | null | - | | | title | str | 空 | |
| cover | null | - | | | cover | str | 空 | |
`data`对象的`cdns`数组: `data`对象的`cdns`数组:
| 项 | 类型 | 内容 | 备注 | | 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- | | ---- | ---- | ------------- | ---- |
| 0 | str | 音频流url | | | 0 | str | 音频流url | |
| 1 | str | 备用音频流url | | | 1 | str | 备用音频流url | 可能不存在 |
**示例:** **示例:**
```shell ```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \ curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \
--data-urlencode 'sid=sid=15664' --data-urlencode 'sid=777180'
``` ```
<details> <details>
@ -74,21 +76,21 @@ curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \
```json ```json
{ {
"code": 0, "code": 0,
"msg": "success",
"data": { "data": {
"sid": 15664, "sid": 777180,
"title": "",
"cover": "",
"type": 1, "type": 1,
"info": "", "info": "",
"timeout": 10800, "timeout": 10800,
"size": 4853263, "size": 5579903,
"cdns": [ "cdns": [
"https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=0ecd3c7a8d9539f260239d8fa4c093db", "https://upos-sz-mirrorcos.bilivideo.com/ugaxcode/m190314ws1dikiap1oivtapctuj1agjc-192k.m4a?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1725013547&gen=playurlv2&os=cosbv&oi=1746706124&trid=493923009cef4225ab8e1b9bda42c635B&mid=0&platform=pc&og=cos&upsig=043779511e2770cf6c3da04ed8a89f25&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&bvc=vod&nettype=0&orderid=0,1&logo=00000000"
"https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=f3fe53aff56655b1b7264ae4ab65872e"
], ],
"qualities": null, "qualities": null
"title": null, },
"cover": null "message": "0",
} "msg": "success"
} }
``` ```
@ -176,7 +178,7 @@ curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \
Cookie方式 Cookie方式
```shell ```shell
curl -G 'https://api.bilibili.com/audio/music-service-c/url curl -G 'https://api.bilibili.com/audio/music-service-c/url' \
--data-urlencode 'songid=682118' \ --data-urlencode 'songid=682118' \
--data-urlencode 'quality=3' \ --data-urlencode 'quality=3' \
--data-urlencode 'privilege=2' \ --data-urlencode 'privilege=2' \
@ -188,7 +190,7 @@ curl -G 'https://api.bilibili.com/audio/music-service-c/url
APP方式 APP方式
```shell ```shell
curl -G 'https://api.bilibili.com/audio/music-service-c/url curl -G 'https://api.bilibili.com/audio/music-service-c/url' \
--data-urlencode 'access_key=xxx' \ --data-urlencode 'access_key=xxx' \
--data-urlencode 'songid=682118' \ --data-urlencode 'songid=682118' \
--data-urlencode 'quality=3' \ --data-urlencode 'quality=3' \
@ -262,17 +264,16 @@ curl -G 'https://api.bilibili.com/audio/music-service-c/url
## 音频流的获取 ## 音频流的获取
`data`.`cdns`.`[0]`或`data`.`cdns`.`[1]`中的内容作为url进行GET操作 `data.cdns[n]` 作为 URL 进行 GET 操作
需要验证请求`user-agent` 不为空 需要验证请求`User-Agent` 不为空且不含敏感字串, 且 `Referer` 必须在 `.bilibili.com`
**user-agent错误并且referer不在`*.bilibili.com`域名下的情况下会导致403 Forbidden故无法获取** **示例:**
**以上述音频url为例** 使用 cURL + FFPlay 直接从音频流播放
```shell ```shell
wget 'https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d' \ curl -G "https://upos-sz-mirrorcos.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1725013121&gen=playurlv2&os=cosbv&oi=1823807031&trid=1a4703f1e7344bb891691c5857e8cfb9B&mid=0&platform=pc&og=cos&upsig=e3a9fba59b46ab2720c8b1807844e9f3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&bvc=vod&nettype=0&orderid=0,1&logo=00000000" \
-O 'Download_music.flac' --referer 'https://www.bilibili.com/' -A 'Mozilla/5.0' \
--output - | ffplay -
``` ```
响应正文将返回一个flac文件

View File

@ -712,7 +712,7 @@ curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------- | | ------- | ------ | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br>-400`ps`参数大于可允许的最大值`20` | | code | num | 返回值 | 0成功<br />-400`ps`参数大于可允许的最大值`20` |
| message | str | 信息 | 默认为0 | | message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 | | ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | | | data | object | 数据本体 | |

View File

@ -862,8 +862,6 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \
*请求方式GET* *请求方式GET*
认证方式CookieSESSDATA或APP
鉴权方式:[Wbi 签名](../misc/sign/wbi.md) 鉴权方式:[Wbi 签名](../misc/sign/wbi.md)
注: Wbi 签名错误时返回 -403 而非 -352 注: Wbi 签名错误时返回 -403 而非 -352
@ -876,6 +874,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \
| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | | type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) |
| oid | num | 目标评论区 id | 必要 | | | oid | num | 目标评论区 id | 必要 | |
| mode | num | 排序方式 | 非必要 | 默认为 3<br />0 3仅按热度<br />1按热度+按时间<br />2仅按时间 | | mode | num | 排序方式 | 非必要 | 默认为 3<br />0 3仅按热度<br />1按热度+按时间<br />2仅按时间 |
| next | num | 翻页 | 非必要 | 不推荐, 已弃用, 优先级比 `pagination_str` 高 |
| pagination_str | obj | 分页信息 | 非必要 | 见下 | | pagination_str | obj | 分页信息 | 非必要 | 见下 |
| plat | num | 平台类型 | 非必要 | 如 `1` | | plat | num | 平台类型 | 非必要 | 如 `1` |
| seek_rpid | str | 空 | 非必要 | 当获取第一页评论时存在 | | seek_rpid | str | 空 | 非必要 | 当获取第一页评论时存在 |
@ -892,7 +891,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \
| 参数名 | 类型 | 内容 | 备注 | | 参数名 | 类型 | 内容 | 备注 |
| ----- | ---- | -- | - | | ----- | ---- | -- | - |
| type | num | 类型 | 当 URL 参数 mode 为 2 时, 此项为 3<br />当 URL 参数 mode 为 3 时, 此项为 1 | | type | num | 类型 | 当 URL 参数 mode 为 2 时, 此项为 3<br />当 URL 参数 mode 为 3 时, 此项为 1 |
| direction | num | 1 | | | direction | num | 方向 | 1: 正序(默认)<br />2: 倒序 |
| data | obj | 分页数据 | 当 type 为 1 时存在 | | data | obj | 分页数据 | 当 type 为 1 时存在 |
| Data | obj | 分页数据 | 当 type 为 3 时存在 | | Data | obj | 分页数据 | 当 type 为 3 时存在 |
<!--not typo here--> <!--not typo here-->
@ -1054,8 +1053,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply/wbi/main' \
--data-urlencode 'type=1' \ --data-urlencode 'type=1' \
--data-urlencode 'mode=2' \ --data-urlencode 'mode=2' \
--data-urlencode 'w_rid=xxx' \ --data-urlencode 'w_rid=xxx' \
--data-urlencode 'wts=xxx' \ --data-urlencode 'wts=xxx'
-b 'SESSDATA='
``` ```
<details> <details>

View File

@ -54,7 +54,7 @@
| count | num | 二级评论条数 | | | count | num | 二级评论条数 | |
| rcount | num | 回复评论条数 | | | rcount | num | 回复评论条数 | |
| floor | num | 评论楼层号 | **注:若不支持楼层则无此项** | | floor | num | 评论楼层号 | **注:若不支持楼层则无此项** |
| state | num | (?) | | | state | num | 评论状态 | 0: 正常<br />17: 被阿瓦隆系统隐藏 (无法被别人看到, 只能自己看到) |
| fansgrade | num | 是否具有粉丝标签 | 0<br />1有 | | fansgrade | num | 是否具有粉丝标签 | 0<br />1有 |
| attr | num | 某属性位? | | | attr | num | 某属性位? | |
| ctime | num | 评论发送时间 | 时间戳 | | ctime | num | 评论发送时间 | 时间戳 |

View File

@ -143,7 +143,7 @@ JavaScript (Node.js) 请求[示例](https://gist.github.com/SessionHu/5e47a3a1a3
curl -X POST --url 'https://member.bilibili.com/x/vupre/web/archive/types/predict' \ curl -X POST --url 'https://member.bilibili.com/x/vupre/web/archive/types/predict' \
--url-query 'csrf=d51eadf05ba3bc6c5f76def7fbcc0185' \ --url-query 'csrf=d51eadf05ba3bc6c5f76def7fbcc0185' \
--data-urlencode 'filename=' \ --data-urlencode 'filename=' \
-b ' -b 'SESSDATA=xxx; bili_jct=xxx'
``` ```
<details> <details>

View File

@ -370,7 +370,7 @@ curl 'https://api.bilibili.com/x/v2/dm/command/post' \
`data`对象: `data`对象:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | | ---- | ---- | ---- | ---- |
| dmid | num | 弹幕dmid | | | dmid | num | 弹幕dmid | |
| dmid_str | str | 弹幕dmid | 字串形式 | | dmid_str | str | 弹幕dmid | 字串形式 |
| visible | bool | 是否可见 | | | visible | bool | 是否可见 | |

View File

@ -1,49 +1,64 @@
# 获取动态详情 # 获取动态详情
## 动态详情
> https://api.bilibili.com/x/polymer/web-dynamic/v1/detail > https://api.bilibili.com/x/polymer/web-dynamic/v1/detail
请求方式:`GET` *请求方式: GET*
是否需要登录:`否` 认证方式: Cookie (SESSDATA) (非必要)
## URL参数 鉴权方式: Cookie (User-Agent) (必要), [Wbi 签名](../misc/sign/wbi.md) (非必要)
| 参数名 | 类型 | 必填 | 内容 | 备注 | **URL参数:**
|-----------------|-----|-----|--------|-----|
| timezone_offset | num | | `-480` | |
| id | num | √ | 动态id | |
## Json回复 | 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| id | num | 动态 ID | 必要 | |
| timezone_offset | num | -480 | 非必要 | |
| platform | str | 平台 | 非必要 | `web` |
| gaia_source | str | 来源 | 非必要 | `main_web` |
| features | str | 功能 | 非必要 | `itemOpusStyle,opusBigCover,onlyfansVote,endFooterHidden,decorationCard,onlyfansAssetsV2,ugcDelete,onlyfansQaCard,commentsNewVersion` |
| web_location | str | `333.1368` | 非必要 | |
| x-bili-device-req-json | obj | 设备信息? | 非必要 | `{"platform":"web","device":"pc"}` |
| x-bili-web-req-json | obj | 请求信息? | 非必要 | `{"spm_id":"333.1368"}` |
| w_rid | str | Wbi 签名 | 不必要 | 参见 [Wbi 签名](../misc/sign/wbi.md) |
| wts | num | UNIX 秒级时间戳 | 不必要 | 参见 [Wbi 签名](../misc/sign/wbi.md) |
### 根对象 **JSON回复:**
根对象:
| 字段名 | 类型 | 内容 | 备注 | | 字段名 | 类型 | 内容 | 备注 |
|---------|-----|------|--------------------------| |---------|-----|------|--------------------------|
| code | num | 响应码 | 0成功<br/>41011394101139 | | code | num | 响应码 | 0: 成功<br/>-352: 风控校验失败<br />4101139: 4101139 |
| message | str | | | | message | str | | |
| ttl | num | 1 | | | ttl | num | 1 | |
| data | obj | 信息本体 | | | data | obj | 信息本体 | |
### `data`对象 `data`对象:
| 字段名 | 类型 | 内容 | 备注 | | 字段名 | 类型 | 内容 | 备注 |
|------|-----|-----|-----| |------|-----|-----|-----|
| item | obj | | | | item | obj | | |
### `data`对象 -> `item`对象 `data.item`对象:
参照 [获取动态列表](./all.md#获取动态列表) 参照 [获取动态列表](./all.md#获取动态列表)
## 请求示例 **示例:**
```shell ```shell
curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=724328028268658744' curl -G 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail' \
-A 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0' \
-b 'SESSDATA=xxxxxx' \
--url-query 'id=967717348014293017' \
--url-query 'w_rid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--url-query 'wts=1724986186'
``` ```
## 响应示例
<details> <details>
<summary>点击查看</summary> <summary>查看响应示例:</summary>
```json ```json
{ {
@ -53,65 +68,137 @@ curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=7243
"data": { "data": {
"item": { "item": {
"basic": { "basic": {
"comment_id_str": "724328028268658744", "comment_id_str": "326122895",
"comment_type": 17, "comment_type": 11,
"like_icon": { "like_icon": {
"action_url": "", "action_url": "",
"end_url": "", "end_url": "",
"id": 0, "id": 0,
"start_url": "" "start_url": ""
}, },
"rid_str": "724328032624443401" "rid_str": "326122895"
}, },
"id_str": "724328028268658744", "id_str": "967717348014293017",
"modules": { "modules": {
"module_author": { "module_author": {
"face": "https://i2.hdslb.com/bfs/face/876bf5dfa8c583acb5f8689fc923077f6a2aba23.jpg", "avatar": {
"container_size": {
"height": 1.35,
"width": 1.35
},
"fallback_layers": {
"is_critical_group": true,
"layers": [
{
"general_spec": {
"pos_spec": {
"axis_x": 0.675,
"axis_y": 0.675,
"coordinate_pos": 2
},
"render_spec": {
"opacity": 1
},
"size_spec": {
"height": 1,
"width": 1
}
},
"layer_config": {
"is_critical": true,
"tags": {
"AVATAR_LAYER": {},
"GENERAL_CFG": {
"config_type": 1,
"general_config": {
"web_css_style": {
"borderRadius": "50%"
}
}
}
}
},
"resource": {
"res_image": {
"image_src": {
"placeholder": 6,
"remote": {
"bfs_style": "widget-layer-avatar",
"url": "https://i2.hdslb.com/bfs/face/77906db03b1eefac02613de184afad03f7bc58d7.jpg"
},
"src_type": 1
}
},
"res_type": 3
},
"visible": true
}
]
},
"mid": "645769214"
},
"decorate": {
"card_url": "https://i0.hdslb.com/bfs/vip/a9e3d993c7a15e88ce0bf714a142f7d2b44121e2.png",
"fan": {
"color": "",
"color_format": null,
"is_fan": false,
"num_prefix": "",
"num_str": "",
"number": 0
},
"id": 28,
"jump_url": "https://www.bilibili.com/h5/mall/equity-link/collect-home?item_id=28&isdiy=0&part=card&from=post&f_source=garb&vmid=645769214&native.theme=1&navhide=1",
"name": "2233娘",
"type": 1
},
"face": "https://i2.hdslb.com/bfs/face/77906db03b1eefac02613de184afad03f7bc58d7.jpg",
"face_nft": false, "face_nft": false,
"following": null, "following": null,
"jump_url": "//space.bilibili.com/11357018/dynamic", "jump_url": "//space.bilibili.com/645769214/dynamic",
"label": "", "label": "",
"mid": 11357018, "mid": 645769214,
"name": "动画魂-Anitama", "name": "Session小胡",
"official_verify": { "official_verify": {
"desc": "", "desc": "",
"type": 0 "type": -1
}, },
"pendant": { "pendant": {
"expire": 0, "expire": 0,
"image": "", "image": "",
"image_enhance": "", "image_enhance": "",
"image_enhance_frame": "", "image_enhance_frame": "",
"n_pid": 0,
"name": "", "name": "",
"pid": 0 "pid": 0
}, },
"pub_action": "", "pub_action": "",
"pub_location_text": "", "pub_location_text": "",
"pub_time": "2022-11-03 22:02", "pub_time": "2024年08月20日 19:17",
"pub_ts": 1667484162, "pub_ts": 1724152653,
"type": "AUTHOR_TYPE_NORMAL", "type": "AUTHOR_TYPE_NORMAL",
"vip": { "vip": {
"avatar_subscript": 1, "avatar_subscript": 0,
"avatar_subscript_url": "", "avatar_subscript_url": "",
"due_date": 1685808000000, "due_date": 1665158400000,
"label": { "label": {
"bg_color": "#FB7299", "bg_color": "",
"bg_style": 1, "bg_style": 0,
"border_color": "", "border_color": "",
"img_label_uri_hans": "", "img_label_uri_hans": "",
"img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/8d4f8bfc713826a5412a0a27eaaac4d6b9ede1d9.png", "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/d7b702ef65a976b20ed854cbd04cb9e27341bb79.png",
"img_label_uri_hant": "", "img_label_uri_hant": "",
"img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png", "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png",
"label_theme": "annual_vip", "label_theme": "",
"path": "", "path": "",
"text": "年度大会员", "text": "",
"text_color": "#FFFFFF", "text_color": "",
"use_img_label": true "use_img_label": true
}, },
"nickname_color": "#FB7299", "nickname_color": "",
"status": 1, "status": 0,
"theme_type": 0, "theme_type": 0,
"type": 2 "type": 1
} }
}, },
"module_dynamic": { "module_dynamic": {
@ -119,151 +206,538 @@ curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=7243
"desc": { "desc": {
"rich_text_nodes": [ "rich_text_nodes": [
{ {
"orig_text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖有打扰请多保函。\n", "orig_text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知.",
"text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖有打扰请多保函。\n", "text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知.",
"type": "RICH_TEXT_NODE_TYPE_TEXT" "type": "RICH_TEXT_NODE_TYPE_TEXT"
} }
], ],
"text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖有打扰请多保函。\n" "text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知."
},
"major": null,
"topic": null
},
"module_more": {
"three_point_items": [
{
"label": "举报",
"type": "THREE_POINT_REPORT"
}
]
},
"module_stat": {
"comment": {
"count": 5,
"forbidden": false
},
"forward": {
"count": 1,
"forbidden": false
},
"like": {
"count": 170,
"forbidden": false,
"status": false
}
}
},
"orig": {
"basic": {
"comment_id_str": "",
"comment_type": 0,
"like_icon": {
"action_url": "",
"end_url": "",
"id": 0,
"start_url": ""
},
"rid_str": ""
},
"id_str": "720590749615259664",
"modules": {
"module_author": {
"face": "https://i2.hdslb.com/bfs/face/876bf5dfa8c583acb5f8689fc923077f6a2aba23.jpg",
"face_nft": false,
"following": null,
"jump_url": "//space.bilibili.com/11357018/dynamic",
"label": "",
"mid": 11357018,
"name": "动画魂-Anitama",
"official_verify": {
"desc": "",
"type": 0
},
"pendant": {
"expire": 0,
"image": "",
"image_enhance": "",
"image_enhance_frame": "",
"name": "",
"pid": 0
},
"pub_action": "",
"pub_time": "",
"pub_ts": 1666614008,
"type": "AUTHOR_TYPE_NORMAL",
"vip": {
"avatar_subscript": 1,
"avatar_subscript_url": "",
"due_date": 1685808000000,
"label": {
"bg_color": "#FB7299",
"bg_style": 1,
"border_color": "",
"img_label_uri_hans": "",
"img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/8d4f8bfc713826a5412a0a27eaaac4d6b9ede1d9.png",
"img_label_uri_hant": "",
"img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png",
"label_theme": "annual_vip",
"path": "",
"text": "年度大会员",
"text_color": "#FFFFFF",
"use_img_label": true
},
"nickname_color": "#FB7299",
"status": 1,
"theme_type": 0,
"type": 2
}
},
"module_dynamic": {
"additional": null,
"desc": {
"rich_text_nodes": [
{
"orig_text": "双11天猫红包超大力度提前发放\n活动很猛红包很大加额加量\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n最高可领取28888元\n\n一天可领3次今天红包额度最大\n越早领取得现金概率越大\n抽奖=转发+关注",
"text": "双11天猫红包超大力度提前发放\n活动很猛红包很大加额加量\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n最高可领取28888元\n\n一天可领3次今天红包额度最大\n越早领取得现金概率越大\n抽奖=转发+关注",
"type": "RICH_TEXT_NODE_TYPE_TEXT"
},
{
"jump_url": "//search.bilibili.com/all?keyword=%23%E4%BA%92%E5%8A%A8%E6%8A%BD%E5%A5%96%23",
"orig_text": "#互动抽奖#",
"text": "#互动抽奖#",
"type": "RICH_TEXT_NODE_TYPE_TOPIC"
},
{
"orig_text": "\n转+评,留言你领到多少红包\n评论区随机抽取2位每人补贴50零花钱 ",
"text": "\n转+评,留言你领到多少红包\n评论区随机抽取2位每人补贴50零花钱 ",
"type": "RICH_TEXT_NODE_TYPE_TEXT"
}
],
"text": "双11天猫红包超大力度提前发放\n活动很猛红包很大加额加量\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n打开手淘搜“我爱你红包”\n最高可领取28888元\n\n一天可领3次今天红包额度最大\n越早领取得现金概率越大\n抽奖=转发+关注#互动抽奖#\n转+评,留言你领到多少红包\n评论区随机抽取2位每人补贴50零花钱 "
}, },
"major": { "major": {
"draw": { "draw": {
"id": 210334026, "id": 326122895,
"items": [ "items": [
{ {
"height": 672, "height": 1080,
"size": 134.85938, "size": 1005.29,
"src": "https://i0.hdslb.com/bfs/new_dyn/37c21f8864e47cbeeb7c3e3a66bb250b11357018.jpg", "src": "http://i0.hdslb.com/bfs/new_dyn/0f6f939334104ddc347566514fa4bfa7645769214.jpg",
"tags": [], "tags": [],
"width": 576 "width": 1440
} }
] ]
}, },
"type": "MAJOR_TYPE_DRAW" "type": "MAJOR_TYPE_DRAW"
}, },
"topic": null "topic": null
},
"module_more": {
"three_point_items": [
{
"label": "删除",
"modal": {
"cancel": "取消",
"confirm": "确认删除",
"content": "动态删除后将无法恢复,请谨慎操作",
"title": "要删除动态吗?"
},
"params": {
"dyn_id_str": "967717348014293017",
"dyn_type": 2,
"rid_str": "326122895"
},
"type": "THREE_POINT_DELETE"
}
]
},
"module_stat": {
"comment": {
"count": 34,
"forbidden": false
},
"forward": {
"count": 2,
"forbidden": false
},
"like": {
"count": 65,
"forbidden": false,
"status": true
}
} }
}, },
"type": "DYNAMIC_TYPE_DRAW", "type": "DYNAMIC_TYPE_DRAW",
"visible": true "visible": true
},
"type": "DYNAMIC_TYPE_FORWARD",
"visible": true
} }
} }
} }
``` ```
</details> </details>
## 动态赞与转发列表
> https://api.bilibili.com/x/polymer/web-dynamic/v1/detail/reaction
*请求方式: GET*
认证方式: Cookie (SESSDATA)
注: 登录任意账号即可, 若不登录则返回数为 0
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| id | num | 动态 id | 必要 | |
| offset | obj | 偏移量 | 非必要 | 用于翻页, 即响应的 `data.offset` |
| web_location | str | 333.1369 | 非必要 | |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | num | 返回值 | 0: 成功 |
| message | str | 错误信息 | 默认为 0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| has_more | bool | 是否有更多 | |
| items | array | 赞与转发列表 | |
| offset | str | 偏移量 | 套了一层字符串的 JSON 对象, 用于下次请求 |
| total | num | 总数 | |
`data` 对象中的 `items` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| action | str | 操作类型 | 赞了/转发了 |
| attend | num | 参与数 | 1: 对方仅关注了发送者<br />2: 发送者关注了对方 |
| desc | str | 描述 | |
| face | str | 头像 URL | |
| mid | num | 用户 mid | |
| name | str | 用户名 | |
**示例:**
获取动态 `967717348014293017` 的赞与转发列表
```shell
curl -G 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail/reaction' \
--url-query 'id=967717348014293017' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"has_more": true,
"items": [
{
"action": "赞了",
"attend": 2,
"desc": "",
"face": "https://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"mid": "293793435",
"name": "社会易姐QwQ"
},
{
"action": "转发了",
"attend": 2,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/a8c0d532c19085ff14385abb51450d9c32afe93f.jpg",
"mid": "662407339",
"name": "XhuOffice"
},
{
"action": "赞了",
"attend": 2,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/a8c0d532c19085ff14385abb51450d9c32afe93f.jpg",
"mid": "662407339",
"name": "XhuOffice"
},
{
"action": "转发了",
"attend": 2,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/2c506dcf0b6507041b0bfafea7505cb1badf6ccd.jpg",
"mid": "616368979",
"name": "淡紫玲儿"
},
{
"action": "赞了",
"attend": 2,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/2c506dcf0b6507041b0bfafea7505cb1badf6ccd.jpg",
"mid": "616368979",
"name": "淡紫玲儿"
},
{
"action": "赞了",
"attend": 2,
"desc": "",
"face": "https://i2.hdslb.com/bfs/face/77906db03b1eefac02613de184afad03f7bc58d7.jpg",
"mid": "645769214",
"name": "Session小胡"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了3个Up主",
"face": "https://i0.hdslb.com/bfs/face/2ac46bacfdedebf9aecf6415b95dd58636b1e22a.jpg",
"mid": "340463550",
"name": "折耳喵之心"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/ec855a27a42e174521399d7508cece6c0c02c6ff.jpg",
"mid": "628114249",
"name": "at白日梦想家"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了3个Up主",
"face": "https://i1.hdslb.com/bfs/face/81362ba3f99b2702b9746ca7fe67ffc76d3a97c4.jpg",
"mid": "198175",
"name": "傲娇金发黑丝双马尾"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i2.hdslb.com/bfs/face/df1c9bc7d79c84b7227486a944d7a748093fbb31.jpg",
"mid": "1007349302",
"name": "用户9420594"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i0.hdslb.com/bfs/face/f17befd18cab5e157844ab986bd6c60d58d74738.jpg",
"mid": "1180456113",
"name": "人工智能小冰_yoyo"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了2个Up主",
"face": "https://i0.hdslb.com/bfs/face/f1b0ebdf19c2f4b768c5a3e57cbd50e404ad9549.jpg",
"mid": "273008643",
"name": "LV1渡劫失败降到"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i0.hdslb.com/bfs/face/a7732df2624c6a0b6e5856ceb27f3c96598a2fd4.jpg",
"mid": "452290620",
"name": "评论永远比视频精彩"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i0.hdslb.com/bfs/face/cc2ea9088f066b33f24d39434d23aa68cb8ab761.png",
"mid": "91671246",
"name": "樱樱之雪"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了3个Up主",
"face": "http://i1.hdslb.com/bfs/face/d20eae4d6339cef2267b36c1c262ae6466395b64.jpg",
"mid": "340632388",
"name": "天神永恒hb"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了21个Up主",
"face": "https://i0.hdslb.com/bfs/face/368b2a33eed5dc146bd9ab8bf62bc9667653a350.jpg",
"mid": "38120922",
"name": "vgwik"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了2个Up主",
"face": "https://i2.hdslb.com/bfs/face/efbd8bb841ea6340f39854b82d9741f47cb3351e.jpg",
"mid": "691494413",
"name": "熬夜肝不好"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/c46fe783ac7a5291dac4773744b3d35d7cebd77f.jpg",
"mid": "1486540726",
"name": "o_90"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/fece6f971d14fddbddcede65a42edc63d01884d4.jpg",
"mid": "34474963",
"name": "Neko_vecter"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了8个Up主",
"face": "https://i0.hdslb.com/bfs/face/e1d66345bdb6f8c75b782ed5c4b93440860c894d.jpg",
"mid": "88466370",
"name": "没有钱的首富"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了15个Up主",
"face": "https://i0.hdslb.com/bfs/face/f8a6e77e5839e64a7448ddeb7112af86eb47aa48.jpg",
"mid": "14625981",
"name": "龙凌洛"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i2.hdslb.com/bfs/face/18c0bb87fbc8f9fde0d7f92ab88917e517e53df1.jpg",
"mid": "36708269",
"name": "alcoholmole"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i0.hdslb.com/bfs/face/39f0e0ec39e6828b01afc28ad001471d1efa8c66.jpg",
"mid": "52874964",
"name": "黑暗战师"
},
{
"action": "赞了",
"attend": 1,
"desc": "对方关注了你",
"face": "https://i0.hdslb.com/bfs/face/07d73f7d01c8e8cfb9173d8fe6e40a0c8cb5713d.jpg",
"mid": "702368712",
"name": "-御帝哥哥-"
},
{
"action": "赞了",
"attend": 0,
"desc": "共同关注了22个Up主",
"face": "http://i0.hdslb.com/bfs/face/member/noface.jpg",
"mid": "398095475",
"name": "meipeter"
},
{
"action": "赞了",
"attend": 0,
"desc": "",
"face": "https://i1.hdslb.com/bfs/face/a4a1566d7218307839345a079651bf58a69a028f.jpg",
"mid": "101358808",
"name": "香香软软的小阿芙"
}
],
"offset": "{\"page\":2,\"like\":101358808,\"repost\":-1}",
"total": 65
}
}
```
</details>
## 动态抽奖详情
> https://api.vc.bilibili.com/lottery_svr/v1/lottery_svr/lottery_notice
*请求方法: GET*
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----- | ---- | -------- | ------ | ---- |
| business_id | num | 动态 id | 必要 | |
| bussiness_type | num | 业务类型? | 必要 | 1: 动态抽奖 |
| csrf | str | CSRF Token (即 Cookie 中 bili_jct 字段) | 不必要 | |
| web_location | str | 333.1330 | 不必要 | |
<details>
<summary>旧版参数:</summary>
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----- | ---- | -------- | ------ | ---- |
| dynamic_id | num | 动态 id | 必要 | |
</details>
**JSON回复:**
根对象:
| 字段名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| code | num | 返回值 | 0: 成功<br />-9999: 服务系统错误 |
| message | str | 错误信息 | 无则为空串 |
| msg | str | 错误信息 | 无则为空串 |
| data | obj | 信息本体 | 错误时为空对象 |
`data`对象:
| 字段名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| lottery_id | num | 抽奖 id | |
| sender_uid | num | 发送者 mid | |
| business_type | num | 业务类型 | 1: 动态抽奖 |
| business_id | num | 业务 id | 可能与请求参数不同 |
| status | num | 抽奖状态 | 0: 未开奖<br />2: 已开奖 |
| lottery_time | num | 开奖时间 | UNIX 秒级时间戳 |
| lottery_at_num | num | at 人数? | |
| lottery_feed_limit | num | 转发限制? | |
| need_post | num | 是否需要发布? | |
| pay_status | num | 支付状态? | |
| first_prize | num | 一等奖数量 | |
| second_prize | num | 二等奖数量 | |
| third_prize | num | 三等奖数量 | |
| ts | num | 发布时间 | UNIX 秒级时间戳 |
| participants | num | 参与人数 | |
| has_charge_right | bool | 是否有充值权? | |
| participated | bool | 是否参与过? | |
| followed | bool | 是否关注过 | |
| reposted | bool | 是否转发过 | |
| lottery_detail_url | str | 抽奖详情页 URL? | |
| first_prize_cmt | str | 一等奖奖品名称 | |
| third_prize_cmt | str | 三等奖奖品名称 | |
| first_prize_pic | str | 一等奖奖品图片 URL | |
| second_prize_pic | str | 二等奖奖品图片 URL | |
| third_prize_pic | str | 三等奖奖品图片 URL | |
| vip_batch_sign | str | | |
| prize_type_first | obj | 一等奖奖品类型 | |
| prize_type_second | obj | 二等奖奖品类型 | 无则不存在 |
| prize_type_third | obj | 三等奖奖品类型 | 无则不存在 |
| lottery_result | obj | 抽奖结果 | 无则不存在 |
`data`对象中的`prize_type_first`对象:
| 字段名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| type | num | 奖品类型? | 0 |
| value | obj | 奖品价值? | |
`prize_type_first`对象中的`value`对象:
| 字段名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| stype | num | 子奖品类型? | 0 |
`data`对象中的`prize_type_second`对象:
`prize_type_first` 格式相同
`data`对象中的`prize_type_third`对象:
`prize_type_first` 格式相同
`data`对象中的`lottery_result`对象:
| 字段名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| first_prize_result | array | 一等奖结果 | |
| second_prize_result | array | 二等奖结果 | 无则不存在 |
| third_prize_result | array | 三等奖结果 | 无则不存在 |
`lottery_result`对象中的`first_prize_result`数组:
| 项名 | 类型 | 内容 | 备注 |
| - | - | - | - |
| uid | num | 中奖者 mid | |
| name | str | 中奖者名称 | |
| face | str | 中奖者头像 URL | |
| hongbao_money | num | 奖品金额? | |
`lottery_result`对象中的`second_prize_result`数组:
`first_prize_result` 格式相同
`lottery_result`对象中的`third_prize_result`数组:
`first_prize_result` 格式相同
**示例:**
```shell
curl -G 'https://api.vc.bilibili.com/lottery_svr/v1/lottery_svr/lottery_notice' \
--url-query 'business_id=969916293954142214' \
--url-query 'business_type=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"data": {
"lottery_id": 314834,
"sender_uid": 36081646,
"business_type": 1,
"business_id": 969916293954142214,
"status": 2,
"lottery_time": 1724860800,
"lottery_at_num": 0,
"lottery_feed_limit": 1,
"need_post": 0,
"pay_status": 0,
"first_prize": 1,
"second_prize": 0,
"third_prize": 0,
"ts": 1724922650,
"participants": 9230,
"has_charge_right": false,
"participated": false,
"followed": false,
"reposted": false,
"lottery_detail_url": "",
"first_prize_cmt": "S档门票",
"third_prize_cmt": "",
"first_prize_pic": "",
"second_prize_pic": "",
"third_prize_pic": "",
"vip_batch_sign": "",
"prize_type_first": {
"type": 0,
"value": {
"stype": 0
}
},
"lottery_result": {
"first_prize_result": [
{
"uid": 1014634854,
"name": "lty世界第一吃货殿下",
"face": "https://i0.hdslb.com/bfs/face/c746083b15f6761ea75c602661123e68784c6b1c.jpg",
"hongbao_money": 0
}
]
}
},
"message": "",
"msg": ""
}
```
</details>

View File

@ -92,7 +92,7 @@
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
|----------|-----|-----|-------------------------------------------| |----------|-----|-----|-------------------------------------------|
| name | str | 类型 | v_person: 个人认证(黄) <br> v_company: 企业认证(蓝) | | name | str | 类型 | v_person: 个人认证(黄) <br /> v_company: 企业认证(蓝) |
| position | num | 位置 | | | position | num | 位置 | |
| value | str | 值 | | | value | str | 值 | |
| desc | str | 描述 | | | desc | str | 描述 | |
@ -529,6 +529,8 @@ curl -G 'https://api.live.bilibili.com/live_user/v1/Master/info' \
*请求方式: GET* *请求方式: GET*
注: 亦可用于批量获取
<!--{ <!--{
"gh": [745] "gh": [745]
}--> }-->

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- | | ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br>-1002002参数异常<br>-500服务器异常 | | code | num | 返回值 | 0成功<br />-1002002参数异常<br />-500服务器异常 |
| message | str | 错误信息 | 默认为 "0" | | message | str | 错误信息 | 默认为 "0" |
| ttl | num | 1 | | | ttl | num | 1 | |
| data | obj | 信息本体 | | | data | obj | 信息本体 | |
@ -44,7 +44,7 @@
| guard_level | num | | | | guard_level | num | | |
| guard_medal_title | str | 加成状态 | | | guard_medal_title | str | 加成状态 | |
| intimacy | num | 当前已得亲密度 | | | intimacy | num | 当前已得亲密度 | |
| is_lighted | num | 是否点亮 | 0未点亮<br>1点亮 | | is_lighted | num | 是否点亮 | 0未点亮<br />1点亮 |
| level | num | 勋章等级 | | | level | num | 勋章等级 | |
| medal_name | str | 勋章名 | | | medal_name | str | 勋章名 | |
| medal_color_border | num | 勋章边框颜色信息 | 颜色数值为 10 进制的 16 进制值(下同) | | medal_color_border | num | 勋章边框颜色信息 | 颜色数值为 10 进制的 16 进制值(下同) |
@ -195,7 +195,7 @@ _请求方式GET_
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---------------------- | | ------- | ---- | -------- | ---------------------- |
| code | num | 返回值 | 0成功<br>1参数错误 | | code | num | 返回值 | 0成功<br />1参数错误 |
| ttl | num | 1 | | | ttl | num | 1 | |
| message | str | 错误信息 | 默认为当日签到奖励内容 | | message | str | 错误信息 | 默认为当日签到奖励内容 |
| data | obj | 信息本体 | 默认为空 | | data | obj | 信息本体 | 默认为空 |
@ -225,7 +225,7 @@ _请求方式GET_
| ----------------- | ----- | ---------------------------- | ---------------------- | | ----------------- | ----- | ---------------------------- | ---------------------- |
| text | str | 今日签到奖励信息 | 默认为空 | | text | str | 今日签到奖励信息 | 默认为空 |
| specialText | str | 连续签到奖励信息 | 默认为空 | | specialText | str | 连续签到奖励信息 | 默认为空 |
| status | num | 签到状态 | 0未签到<br>1已签到 | | status | num | 签到状态 | 0未签到<br />1已签到 |
| allDays | num | 当月天数 | | | allDays | num | 当月天数 | |
| curMonth | num | 当前月 | | | curMonth | num | 当前月 | |
| curYear | num | 当前年 | | | curYear | num | 当前年 | |

View File

@ -111,7 +111,7 @@ PEM 格式:
### 相关Demo ### 相关Demo
该 Demo 提供 [JavaScript](#JavaScript)、[Python](#Python) 以及 [Vercel 云函数](#vercel云函数),感谢 [#524](https://github.com/SocialSisterYi/bilibili-API-collect/issues/524) 提供 该 Demo 提供 [JavaScript](#javascript) [Python](#python) [Kotlin](#kotlin) [Java](#java) [Go](#go) 以及 [Vercel 云函数](#vercel云函数),感谢 [#524](https://github.com/SocialSisterYi/bilibili-API-collect/issues/524) 提供
#### JavaScript #### JavaScript
@ -138,7 +138,7 @@ const ts = Date.now()
console.log(await getCorrespondPath(ts)) console.log(await getCorrespondPath(ts))
``` ```
``` ```text
b77f21ab5b7ce7879c410b2311dd6e7ea1a2cd1cd941073db067f4c3279fdabca3a06dfa744168ee14ad050b9f4889bd4edb8e76eb597fdd18c16804d82566b55c6dba8e225d838aa93d8e5b31cf7c56720db8244d92373f4944e0561f6ca5bf721a36ac079786060fc853605ccd1ddcb33f54617de6aedd44e3b9850d13b45f b77f21ab5b7ce7879c410b2311dd6e7ea1a2cd1cd941073db067f4c3279fdabca3a06dfa744168ee14ad050b9f4889bd4edb8e76eb597fdd18c16804d82566b55c6dba8e225d838aa93d8e5b31cf7c56720db8244d92373f4944e0561f6ca5bf721a36ac079786060fc853605ccd1ddcb33f54617de6aedd44e3b9850d13b45f
``` ```
@ -170,7 +170,7 @@ ts = round(time.time() * 1000)
print(getCorrespondPath(ts)) print(getCorrespondPath(ts))
``` ```
``` ```text
47bbd615f333d6a2c597bbb46ad47a6e59752a305a2f545d3ba5d49ca055309347796f80d257613696d36170c57443a0e9dea2b47f83b0b4224d431e46124fadd9a24c8fa468147e8bf2d2501eaacae43310e19bf58fc4a728d80c90b9401afcfc1536ba9a2f6438ea53c0b2652f8b8d01c87355dd5a5da51de998b1a35d519a 47bbd615f333d6a2c597bbb46ad47a6e59752a305a2f545d3ba5d49ca055309347796f80d257613696d36170c57443a0e9dea2b47f83b0b4224d431e46124fadd9a24c8fa468147e8bf2d2501eaacae43310e19bf58fc4a728d80c90b9401afcfc1536ba9a2f6438ea53c0b2652f8b8d01c87355dd5a5da51de998b1a35d519a
``` ```
@ -219,7 +219,7 @@ fun getCorrespondPath(timestamp: Long): String {
} }
``` ```
``` ```text
1428cbd14605ae42a0b42e22662cfe51d8e5034eeaffb36a46db46bd2f93216cbfd4d150cca2de44395add7c664b40acf44424ee8d634fc821b909423665a34d18bd7f4e77ea5388a2b612daf875e2fe8df62990e14b64a465898b0707bc1288586b68f9f4f2f20bea5cb1cada296beb8009e91bc8fb57a4b81b8923299b6eb7 1428cbd14605ae42a0b42e22662cfe51d8e5034eeaffb36a46db46bd2f93216cbfd4d150cca2de44395add7c664b40acf44424ee8d634fc821b909423665a34d18bd7f4e77ea5388a2b612daf875e2fe8df62990e14b64a465898b0707bc1288586b68f9f4f2f20bea5cb1cada296beb8009e91bc8fb57a4b81b8923299b6eb7
``` ```
@ -274,11 +274,12 @@ JNrRuoEUXpabUzGB8QIDAQAB
} }
``` ```
``` ```text
97759947aa357ed5d88cf9bf1172737570b7bba2d6788d39006f082b2b25ddf53b581f1f0c61ed8573317485ef525d2789faa25a277b4602a4b9cbf837681093a03e96cb9773a11df4bb1e20f1587180b3e958194de922d7dd94d0a2f0b9b0ef74e426e8041f99b99e7c02407ef4ab38040e61be81e4fdfbdb73461e3a2ad810 97759947aa357ed5d88cf9bf1172737570b7bba2d6788d39006f082b2b25ddf53b581f1f0c61ed8573317485ef525d2789faa25a277b4602a4b9cbf837681093a03e96cb9773a11df4bb1e20f1587180b3e958194de922d7dd94d0a2f0b9b0ef74e426e8041f99b99e7c02407ef4ab38040e61be81e4fdfbdb73461e3a2ad810
``` ```
### Java ### Java
```Java ```Java
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.spec.OAEPParameterSpec; import javax.crypto.spec.OAEPParameterSpec;
@ -336,7 +337,7 @@ public class CookieRefresh {
} }
``` ```
``` ```text
f87666152da692735123f4e49053e5a98c16854673b2e632f31a3ff0c029640772873661a9a8412db6be447a0bfa03a295d15548cbfd2bb35634e98ba5f25b1205519d6e6119b483f4c516c1e106d45b04ff98c73560949d379d3edaf3c0ecd10a1d46134fb9ca443122ab33c16d1dd48280496f949ed960a2fbcd65f10935e f87666152da692735123f4e49053e5a98c16854673b2e632f31a3ff0c029640772873661a9a8412db6be447a0bfa03a295d15548cbfd2bb35634e98ba5f25b1205519d6e6119b483f4c516c1e106d45b04ff98c73560949d379d3edaf3c0ecd10a1d46134fb9ca443122ab33c16d1dd48280496f949ed960a2fbcd65f10935e
``` ```

View File

@ -486,7 +486,7 @@ public class Test3 {
### 简述 ### 简述
有时 [登录操作(web端)](#登录操作web端) (APP 端可能也有类似操作) 会返回如下内容, 此时需要进行手机号验证或绑定 有时使用密码登录时, 无论使用网页端还是手机端接口, 由于 请求头缺失/请求频率高/请求IP 等原因, 会返回如下内容, 此时需要进行手机号验证或绑定
```json ```json
{ {

View File

@ -156,7 +156,7 @@ curl 'https://api.bilibili.com/x/member/web/exp/reward' \
| ------- | ---- | -------------------- | ----------- | | ------- | ---- | -------------------- | ----------- |
| code | num | 返回值 | 0成功 | | code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 | | message | str | 错误信息 | 默认为0 |
| number | num | 每日投币所奖励的经验 | 上限为50<br | | number | num | 每日投币所奖励的经验 | 上限为50 |
**示例:** **示例:**

View File

@ -89,7 +89,7 @@ curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \
| msg[sender_uid] | num | 发送者mid | 必要 | | | msg[sender_uid] | num | 发送者mid | 必要 | |
| msg[receiver_id] | num | 接收者mid | 必要 | | | msg[receiver_id] | num | 接收者mid | 必要 | |
| msg[receiver_type] | num | 1 | 必要 | 固定为1 | | msg[receiver_type] | num | 1 | 必要 | 固定为1 |
| msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字<br>2:发送图片<br>5:撤回消息 | | msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字<br />2:发送图片<br />5:撤回消息 |
| msg[msg_status] | num | 0 | 非必要 | | | msg[msg_status] | num | 0 | 非必要 | |
| msg[dev_id] | string | 372778FD-E359-461D-86A3-EA2BCC6FF52A | 必要 | **获取方式在下面** | | msg[dev_id] | string | 372778FD-E359-461D-86A3-EA2BCC6FF52A | 必要 | **获取方式在下面** |
| msg[timestamp] | num | 时间戳(秒) | 必要 | | | msg[timestamp] | num | 时间戳(秒) | 必要 | |
@ -161,7 +161,7 @@ public class Util{
| height | num | 图片的高 | 单位:像素(非必要) | | height | num | 图片的高 | 单位:像素(非必要) |
| type | str | 图片格式 | (非必要) | | type | str | 图片格式 | (非必要) |
| original | num | 1 | **作用未知**(非必要) | | original | num | 1 | **作用未知**(非必要) |
| size | num | 文件大小 | 单位:千字节(非必要)<br>__向上取整__ | | size | num | 文件大小 | 单位:千字节(非必要)<br />__向上取整__ |
当撤回消息时(`msg[msg_type]=5` 当撤回消息时(`msg[msg_type]=5`
@ -172,7 +172,7 @@ public class Util{
根对象: 根对象:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------- | | ------- | ---- | -------- | ----------- |
| code | num | 返回值 | 0成功<br> | | code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为ok | | message | str | 错误信息 | 默认为ok |
| ttl | num | | 默认为1 | | ttl | num | | 默认为1 |
| data | obj | 主体 | 出错时为空 | | data | obj | 主体 | 出错时为空 |
@ -222,7 +222,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
给目标用户`mid=1`发一条图片私信: 给目标用户`mid=1`发一条图片私信:
> <img src="https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" style="zoom:50%;" > > <img src="https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" style="zoom:50%;" />
```shell ```shell
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
@ -304,7 +304,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
| sender_uid | num | 发送者uid | 注意名称是sender_uid | | sender_uid | num | 发送者uid | 注意名称是sender_uid |
| receiver_type | num | 与session_type对应 | 1为用户2为粉丝团 | | receiver_type | num | 与session_type对应 | 1为用户2为粉丝团 |
| receiver_id | num | 接收者uid | 注意名称是receiver_id | | receiver_id | num | 接收者uid | 注意名称是receiver_id |
| msg_type | num | 消息类型 | 1:文字消息<br>2:图片消息<br>5:撤回的消息<br>12、13:通知 | | msg_type | num | 消息类型 | 1:文字消息<br />2:图片消息<br />5:撤回的消息<br />12、13:通知 |
| content | str | 消息内容 | 此处存在设计缺陷 | | content | str | 消息内容 | 此处存在设计缺陷 |
| msg_seqno | num | 消息序列号,保证按照时间顺序从小到大 | | | msg_seqno | num | 消息序列号,保证按照时间顺序从小到大 | |
| timestamp | num | 消息发送时间戳 | | | timestamp | num | 消息发送时间戳 | |

View File

@ -1,5 +1,52 @@
# 获取 buvid3 / buvid4 / b_nut # 获取 buvid3 / buvid4 / b_nut
## 仅获取 buvid3
> https://api.bilibili.com/x/web-frontend/getbuvid
*请求方式: GET*
<!--{
"gh": [338]
}-->
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | -------- |
| code | num | 返回值 | 0成功 |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------ | ---- |
| buvid | str | buvid3 | 需手动存放至 cookie 中 |
**示例:**
注: 不要复制
```shell
curl -G 'https://api.bilibili.com/x/web-frontend/getbuvid'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"data": {
"buvid": "54E5EFC1-3C8F-F690-2261-439E4F6A20A979439infoc"
}
}
```
</details>
## 接口获取 buvid3 / buvid4 ## 接口获取 buvid3 / buvid4
> https://api.bilibili.com/x/frontend/finger/spi > https://api.bilibili.com/x/frontend/finger/spi

View File

@ -2,7 +2,7 @@
## 简述 ## 简述
当同一接口在短时间内被同一用户/IP/UA多次请求或异常时, 会触发风控, 如接口返回 `code``-352``风控校验失败`, 同时 `data` 中出现 `v_voucher` 字段 当同一接口在短时间内被同一用户/IP/UA多次请求或异常时, 会触发风控, 如接口返回 `code``-352``风控校验失败`, 同时 `data` 中出现 `v_voucher` 字段, 响应头出现 `x-bili-gaia-vvoucher`
`v_voucher` 结构为字符串 `voucher_` 尾随一串以 `-` 为分隔符的小写 UUID `v_voucher` 结构为字符串 `voucher_` 尾随一串以 `-` 为分隔符的小写 UUID
@ -14,7 +14,7 @@
## 操作流程 ## 操作流程
1. 快速以不正确的姿势请求接口, 直到返回 `v_voucher` 字段如下 1. 快速以不正确的姿势请求接口, 直到返回 `v_voucher` 字段如下. 若 `data` 中没有 `v_voucher` 字段, 则检查响应头 `x-bili-gaia-vvoucher`
```json ```json
{ {
@ -31,9 +31,9 @@
3. 按照 [验证captcha验证码](../../login/login_action/readme.md#验证captcha验证码) 进行验证, 记下验证结果的 `validate``seccode` 3. 按照 [验证captcha验证码](../../login/login_action/readme.md#验证captcha验证码) 进行验证, 记下验证结果的 `validate``seccode`
4. [请求 `validate` 接口](#从验证结果获取-grisk_id), 请求体传入 `challenge` `token` `validate` `seccode` `csrf`, 该接口返回 `grisk_id``gaia_vtoken` 4. [请求 `validate` 接口](#从验证结果获取-grisk_id), 请求体传入 `challenge` `token` `validate` `seccode` `csrf`, 该接口返回 `grisk_id``gaia_vtoken``x-bili-gaia-vtoken`
5. 重新请求原接口, 原 URL 参数加入 `gaia_vtoken`, 即恢复正常 5. 重新请求原接口, 原 URL 参数加入 `gaia_vtoken`, Cookie 加入 `x-bili-gaia-vtoken`, 即恢复正常
## 接口列表 ## 接口列表

View File

@ -382,7 +382,7 @@ bar=514&baz=1919810&foo=114&wts=1684805578&w_rid=bb97e15f28edf445a0e4420d36f0157
需要 `github.com/tidwall/gjson` 作为依赖 需要 `github.com/tidwall/gjson` 作为依赖
```golang ```go
package main package main
import ( import (

View File

@ -10,9 +10,7 @@
*方式GET* *方式GET*
认证方式CookieSESSDATA 鉴权方式:[Wbi 签名](../misc/sign/wbi.md), Cookie 中含有 [`buvid3`](../misc/buvid3_4.md) 字段
鉴权方式:[Wbi 签名](../misc/sign/wbi.md)
返回和关键字相关的20条信息 返回和关键字相关的20条信息
@ -611,7 +609,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/search/all/v2' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- | | ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0:成功<br />-400请求错误<br/>-412请求被拦截 | | code | num | 返回值 | 0: 成功<br />-400: 请求错误<br/>-412: 请求被拦截<br />-1200: 被降级过滤的请求(搜索目标类型不存在) |
| message | str | 错误信息 | 默认为0 | | message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | | | ttl | num | 1 | |
| data | obj | 信息本体 | | | data | obj | 信息本体 | |

View File

@ -51,7 +51,7 @@
| target_icon | str | 主播头像 URL | | | target_icon | str | 主播头像 URL | |
| link | str | 主播主页 URL | | | link | str | 主播主页 URL | |
| live_status | num | 直播状态 | 0: 未直播<br />1: 正在直播<br />2: 轮播中 | | live_status | num | 直播状态 | 0: 未直播<br />1: 正在直播<br />2: 轮播中 |
| offical | num | 主播认证类型 | 参见 [用户认证类型一览](offical_role.md) | | offical | num | 主播认证类型 | 参见 [用户认证类型一览](official_role.md) |
| uinfo_medal | str | 用户勋章信息 | | | uinfo_medal | str | 用户勋章信息 | |
`list` 数组中的对象中的 `medal_info` 对象: `list` 数组中的对象中的 `medal_info` 对象:
@ -64,7 +64,7 @@
| medal_color_start | num | 勋章开始颜色 | 十进制(自行转换为16进制) | | medal_color_start | num | 勋章开始颜色 | 十进制(自行转换为16进制) |
| medal_color_end | num | 勋章结束颜色 | 同上 | | medal_color_end | num | 勋章结束颜色 | 同上 |
| medal_color_border | num | 勋章边框颜色 | 同上 | | medal_color_border | num | 勋章边框颜色 | 同上 |
| guard_level | num | 守护等级? | | | guard_level | num | 守护等级? | 1: 总督<br />2: 提督<br />3: 舰长 |
| wearing_status | num | 佩戴状态 | 0: 未佩戴<br />1: 佩戴中 | | wearing_status | num | 佩戴状态 | 0: 未佩戴<br />1: 佩戴中 |
| medal_id | num | 勋章 ID | | | medal_id | num | 勋章 ID | |
| intimacy | num | 当前亲密度 | | | intimacy | num | 当前亲密度 | |
@ -80,17 +80,17 @@
| ---- | ---- | ---- | ---- | | ---- | ---- | ---- | ---- |
| name | str | 勋章名称 | | | name | str | 勋章名称 | |
| level | num | 勋章等级 | | | level | num | 勋章等级 | |
| color_start | num | 勋章开始颜色 | 十进制(自行转换为16进制) | | color_start | num | 勋章渐变开始颜色 | 十进制(自行转换为16进制) |
| color_end | num | 勋章结束颜色 | 同上 | | color_end | num | 勋章渐变结束颜色 | 同上 |
| color_border | num | 勋章边框颜色 | 同上 | | color_border | num | 勋章边框颜色 | 同上 |
| color | num | 勋章文本色? | 同上 | | color | num | 勋章颜色 | 同上 |
| id | num | 勋章 ID | | | id | num | 勋章 ID | |
| typ | num | 勋章类型? | | | typ | num | 勋章类型? | |
| is_light | num | 勋章亮色? | | | is_light | num | 是否点亮? | |
| ruid | num | 主播 mid | | | ruid | num | 主播 mid | |
| guard_level | num | 守护等级? | | | guard_level | num | 大航海等级 | 1: 总督<br />2: 提督<br />3: 舰长 |
| score | num | 勋章分数? | | | score | num | 勋章分数? | |
| guard_icon | str | 守护徽章图标 URL? | | | guard_icon | str | 大航海图标 URL? | 粉丝牌左边的图标 |
| honor_icon | str | 荣誉徽章图标 URL? | | | honor_icon | str | 荣誉徽章图标 URL? | |
| v2_medal_color_start | str | 勋章开始颜色 | 16进制 | | v2_medal_color_start | str | 勋章开始颜色 | 16进制 |
| v2_medal_color_end | str | 勋章结束颜色 | 同上 | | v2_medal_color_end | str | 勋章结束颜色 | 同上 |

View File

@ -60,7 +60,7 @@ curl 'https://passport.bilibili.com/web/sms/general/v2/send' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- | | ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br>1005验证码错误<br>1007验证码过期 | | code | num | 返回值 | 0成功<br />1005验证码错误<br />1007验证码过期 |
| message | str | 错误信息 | 成功时无此字段 | | message | str | 错误信息 | 成功时无此字段 |
| data | obj | 信息本体 | 只在成功时存在 | | data | obj | 信息本体 | 只在成功时存在 |

View File

@ -842,8 +842,8 @@ curl 'https://api.bilibili.com/x/space/notice/set' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------ | ------------------- | -------- | ---- | | ------ | ------------------- | -------- | ---- |
| status | bool | 用户是否存在 | true存在<br>false不存在 | | status | bool | 用户是否存在 | true存在<br />false不存在 |
| data | 用户存在时obj<br>用户不存在时str| 用户存在时:信息本体<br>用户不存在时:错误信息 | | | data | 用户存在时obj<br />用户不存在时str| 用户存在时:信息本体<br />用户不存在时:错误信息 | |
`data`对象: `data`对象:
@ -859,7 +859,7 @@ curl 'https://api.bilibili.com/x/space/notice/set' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------- | ------------------------------ | | ----------- | ---- | -------------- | ------------------------------ |
| bangumi | num | 追番及追剧 | 0隐藏<br>1公开<br>**下同** | | bangumi | num | 追番及追剧 | 0隐藏<br />1公开<br />**下同** |
| bbq | num | 轻视频 | | | bbq | num | 轻视频 | |
| channel | num | 频道 | | | channel | num | 频道 | |
| coins_video | num | 最近投币的视频 | | | coins_video | num | 最近投币的视频 | |
@ -876,7 +876,7 @@ curl 'https://api.bilibili.com/x/space/notice/set' \
| 项 | 类型 | 内容 | 备注 | | 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | -------------------------------------------- | | ---- | ---- | --------- | -------------------------------------------- |
| 0 | obj | 板块1 | 根据板块布局顺序排序<br>先左侧布局后右侧布局 | | 0 | obj | 板块1 | 根据板块布局顺序排序<br />先左侧布局后右侧布局 |
| n | obj | 板块(n+1) | | | n | obj | 板块(n+1) | |
| …… | obj | …… | …… | | …… | obj | …… | …… |
@ -3066,739 +3066,184 @@ curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/doc_list' \
</details> </details>
### 查询用户投稿音频明细
> https://api.bilibili.com/audio/music-service/web/song/upper
*请求方法: GET*
<!--{
"from": {
"url": "https://space.bilibili.com/8047632/audio",
"selector": ".be-tab-inner"
}
"gh": [442]
}-->
**URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| mid | num | 用户 mid | 必要 | |
| pn | num | 页码 | 必要 | 默认为 1 |
| ps | num | 每页项数 | 必要 | 默认为 30 |
| order | str | 排序方式 | 必要 | 1: 最新发布<br />2: 最多播放<br />3: 最多收藏 |
**JSON回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | num | 返回值 | 0: 成功<br />72000000: 缺少参数 |
| msg | str | 返回信息 | 成功为 `success` |
| data | str | 数据本体 | 失败时不存在 |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| curPage | num | 当前页码 | |
| pageCount | num | 总页数 | |
| totalSize | num | 总计数 | |
| pageSize | num | 每页项数 | |
| data | array | 音频列表 | |
`data` 对象中的 `data` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| id | num | 音频 AU 号 | |
| uid | num | 用户 mid | |
| uname | str | 用户名 | |
| author | null | | |
| title | str | 音频标题 | |
| cover | str | 音频封面图片 URL | |
| intro | null | | |
| lyric | str | 音频歌词 URL | |
| crtype | num | 1 | |
| duration | num | 音频时长 | 单位为 秒 |
| passtime | num | 发布时间 | UNIX 秒级时间戳 |
| curtime | num | 0 | |
| aid | null | | |
| cid | null | | |
| msid | null | | |
| attr | null | | |
| limit | null | | |
| activityId | null | | |
| limitdesc | null | | |
| ctime | num | 发布时间 | UNIX 毫秒时间戳 |
| statistic | obj | 统计数 | |
| coin_num | num | 硬币数量 | |
| is_cooper | null | | |
`data` 数组中的对象中的 `statistic` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| sid | num | 音频 AU 号 | |
| play | num | 播放数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
**示例:**
```shell
curl -G 'https://api.bilibili.com/audio/music-service/web/song/upper' \
--url-query 'uid=8047632' \
--url-query 'pn=1' \
--url-query 'ps=30' \
--url-query 'order=2'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 1,
"totalSize": 2,
"pageSize": 30,
"data": [
{
"id": 257709,
"uid": 8047632,
"uname": "哔哩哔哩弹幕网",
"author": null,
"title": "【2018拜年祭单品】与你同行~B With U~",
"cover": "http://i0.hdslb.com/bfs/music/0f890889c8e1101f37317def0c4c555068054c88.jpg",
"intro": null,
"lyric": "http://i0.hdslb.com/bfs/music/1519959250257709.lrc",
"crtype": 1,
"duration": 301,
"passtime": 1519878405,
"curtime": 0,
"aid": null,
"cid": null,
"msid": null,
"attr": null,
"limit": null,
"activityId": null,
"limitdesc": null,
"ctime": 1519875632000,
"statistic": {
"sid": 257709,
"play": 845264,
"collect": 21978,
"comment": 1983,
"share": 1685
},
"coin_num": 13368,
"is_cooper": null
},
{
"id": 378521,
"uid": 8047632,
"uname": "哔哩哔哩弹幕网",
"author": null,
"title": "《B TOGETHER》-bilibili九周年主题曲",
"cover": "http://i0.hdslb.com/bfs/music/109136c63e16d83fbad5ec9282a6fb96498d8144.jpg",
"intro": null,
"lyric": "http://i0.hdslb.com/bfs/music/1529979007378521.lrc",
"crtype": 1,
"duration": 261,
"passtime": 1529928347,
"curtime": 0,
"aid": null,
"cid": null,
"msid": null,
"attr": null,
"limit": null,
"activityId": null,
"limitdesc": null,
"ctime": 1529928235000,
"statistic": {
"sid": 378521,
"play": 123264,
"collect": 5501,
"comment": 1591,
"share": 535
},
"coin_num": 3640,
"is_cooper": null
}
]
}
}
```
</details>
## 频道 ## 频道
<img src="../../assets/img/channel.svg" width="100" height="100" /> <img src="../../assets/img/channel.svg" width="100" height="100" />
### 查询用户频道列表 [所有旧接口](https://github.com/SocialSisterYi/bilibili-API-collect/blob/7d89ece2ac46425810647c4ac92acf5f3721cb68/docs/user/space.md#%E9%A2%91%E9%81%93) 已弃用, 现可用接口参见 [合集和视频列表信息](../video/collection.md)
> https://api.bilibili.com/x/space/channel/list
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | ---- |
| mid | num | 目标用户mid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | -------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | 无则为空 所有频道内均无视频则为空此时code为0 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ------ | ---------- | ---- |
| count | num | 总计频道数 | |
| list | array | 频道列表 | |
`data`中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | --------------------- |
| 0 | obj | 频道1 | |
| n | obj | 频道n+1 | 项数取决于`count`的值 |
| …… | obj | …… | …… |
`data`中的`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------------- | -------- |
| cid | num | 频道id | |
| count | num | 频道内含视频数 | |
| cover | str | 封面图片url | |
| intro | str | 简介 | 无则为空 |
| mid | num | 创建用户mid | |
| mtime | num | 创建时间 | 时间戳 |
| name | str | 标题 | |
**示例:**
查询用户`mid=53456`的频道列表
```shell
curl -G 'https://api.bilibili.com/x/space/channel/list' \
--data-urlencode 'mid=53456'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"count": 6,
"list": [{
"cid": 100249,
"mid": 53456,
"name": "【实况】动物之森",
"intro": "",
"mtime": 1579898830,
"count": 2,
"cover": "http://i1.hdslb.com/bfs/archive/6a7ed9483c34e839dfca981b9e2b94cd4c4efa0a.jpg"
}, {
"cid": 79323,
"mid": 53456,
"name": "忆雨",
"intro": "忆雨出现过的视频",
"mtime": 1562535222,
"count": 7,
"cover": "http://i2.hdslb.com/bfs/archive/1783e4f03042b282495799adda1cb56270cea647.jpg"
}, {
"cid": 79322,
"mid": 53456,
"name": "大画家",
"intro": "",
"mtime": 1562535122,
"count": 6,
"cover": "http://i0.hdslb.com/bfs/archive/9c85a14e805c6c23cb7a42e1dbef97821bb68960.jpg"
}, {
"cid": 77758,
"mid": 53456,
"name": "灭火器",
"intro": "",
"mtime": 1561270856,
"count": 4,
"cover": "http://i2.hdslb.com/bfs/archive/0073208d086b4ebe9cdc540e7664aa74b483aeb6.jpg"
}, {
"cid": 75696,
"mid": 53456,
"name": "沃玛小剧场",
"intro": "",
"mtime": 1559129460,
"count": 5,
"cover": "http://i2.hdslb.com/bfs/archive/db2b20ecdb6ed013fc3780b0e741ea88d46b5b40.jpg"
}, {
"cid": 170,
"mid": 53456,
"name": "爆炸电台",
"intro": "闲聊的电台",
"mtime": 1503298893,
"count": 7,
"cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg"
}]
}
}
```
</details>
### 查询用户频道中的视频
> https://api.bilibili.com/x/space/channel/video
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | --------- |
| mid | num | 目标用户mid | 必要 | |
| cid | num | 目标频道id | 必要 | |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页项数 | 非必要 | 默认为100 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无用户对应的频道 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| list | obj | 频道信息 | |
| page | obj | 页面信息 | |
`data`中的`list`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ------ | -------------- | -------- |
| archives | array | 包含的视频列表 | |
| cid | num | 频道id | |
| count | num | 频道内含视频数 | |
| cover | str | 封面图片url | |
| intro | str | 简介 | 无则为空 |
| mid | num | 创建用户mid | |
| mtime | num | 创建时间 | 时间戳 |
| name | str | 标题 | |
`list`中的`archives`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | --------------------- |
| 0 | obj | 视频1 | |
| n | obj | 视频n+1 | 项数取决于`count`的值 |
| …… | obj | …… | …… |
`list`中的`archives`数组中的对象:
基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息avid/bvid互转)」中的data对象
`data`中的`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ---------- | ---- |
| count | num | 总计视频数 | |
| num | num | 当前页码 | |
| size | num | 每页项数 | |
**示例:**
查询用户`mid=53456`的频道`170`中的视频
```shell
curl -G 'https://api.bilibili.com/x/space/channel/video' \
--data-urlencode 'mid=53456' \
--data-urlencode 'cid=170' \
--data-urlencode 'ps=2' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"list": {
"cid": 170,
"mid": 53456,
"name": "爆炸电台",
"intro": "闲聊的电台",
"mtime": 1503298893,
"count": 7,
"cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg",
"archives": [{
"aid": 87673204,
"videos": 1,
"tid": 21,
"tname": "日常",
"copyright": 1,
"pic": "http://i0.hdslb.com/bfs/archive/5387bdcbbe4d5551adbf0ee2e607e4b7d3d8f2f0.jpg",
"title": "【warma爆炸电台】迟来的自我介绍【第八期】",
"pubdate": 1581244539,
"ctime": 1581244540,
"desc": "时隔半年的新的一期爆炸电台来啦,这是我的一系列杂谈聊天电台,这次因为多了很多新关注的朋友们,所以来做个自我介绍吧!\n画师Dr-H_喵_ 动画K_Lacid\n结尾提到的壁纸稍后在动态发原图动态壁纸在steam那个壁纸软件的创意工坊里搜warma能找到\n\n往期的电台\n第一期av6786024 \n第三期av13619263\n第四期av18862091\n第五期av25092410\n第六期av42492515\n第七期av62910468",
"state": 0,
"attribute": 16512,
"duration": 2388,
"rights": {
"bp": 0,
"elec": 0,
"download": 0,
"movie": 0,
"pay": 0,
"hd5": 0,
"no_reprint": 1,
"autoplay": 1,
"ugc_pay": 0,
"is_cooperation": 0,
"ugc_pay_preview": 0,
"no_background": 0
},
"owner": {
"mid": 53456,
"name": "Warma",
"face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg"
},
"stat": {
"aid": 87673204,
"view": 1383542,
"danmaku": 88908,
"reply": 9237,
"favorite": 32929,
"coin": 68849,
"share": 5140,
"now_rank": 0,
"his_rank": 52,
"like": 116164,
"dislike": 0
},
"dynamic": "来做个自我介绍吧! #warma##沃玛##爆炸电台#",
"cid": 149793525,
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
},
"bvid": "BV1D7411t7Be",
"inter_video": false
}, {
"aid": 62910468,
"videos": 1,
"tid": 21,
"tname": "日常",
"copyright": 1,
"pic": "http://i2.hdslb.com/bfs/archive/4bd598f71a144d4505e259b143c0de0bf27968b2.jpg",
"title": "【warma爆炸电台】居然收到了几千条问题【第七期】",
"pubdate": 1565345410,
"ctime": 1565338559,
"desc": "时隔半年的爆炸电台第七期终于来啦在这一期里回答了很多问题祝看得开心此外就在昨天50万订阅了…真的谢谢大家\n也欢迎来看往期的电台\n第一期av6786024 2016年10月\n第二期av103733522017年5月\n第三期av136192632017年8月\n第四期av188620912018年1月\n第五期av250924102018年6月\n第六期av424925152019年2月",
"state": 0,
"attribute": 16512,
"duration": 1987,
"mission_id": 11740,
"rights": {
"bp": 0,
"elec": 0,
"download": 0,
"movie": 0,
"pay": 0,
"hd5": 0,
"no_reprint": 1,
"autoplay": 1,
"ugc_pay": 0,
"is_cooperation": 0,
"ugc_pay_preview": 0,
"no_background": 0
},
"owner": {
"mid": 53456,
"name": "Warma",
"face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg"
},
"stat": {
"aid": 62910468,
"view": 455277,
"danmaku": 19383,
"reply": 2108,
"favorite": 10507,
"coin": 19422,
"share": 1208,
"now_rank": 0,
"his_rank": 0,
"like": 31515,
"dislike": 0
},
"dynamic": "爆炸电台 第七期 来啦!",
"cid": 109284065,
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
},
"bvid": "BV1gt411K7Ga",
"inter_video": false
}]
},
"page": {
"count": 7,
"num": 1,
"size": 2
}
}
}
```
</details>
### 创建频道
> https://api.bilibili.com/x/space/channel/add
*请求方式POST*
认证方式CookieSESSDATA
创建成功后会返回新建频道的id
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| name | str | 频道名 | 必要 | |
| intro | str | 频道简介 | 非必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />53001频道名字数超过限制<br />53002频道简介字数超过限制<br />53004创建的频道已经满额<br />53007频道名称已经存在<br />53024编辑内容命中敏感信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 数据本体 | 成功有此项 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------ | ---- |
| cid | num | 频道id | |
**示例:**
创建名为`test1`的频道,简介为空
```shell
curl 'https://api.bilibili.com/x/space/channel/add' \
--data-urlencode 'name=test1' \
--data-urlencode 'intro=' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"cid": 138996
}
}
```
</details>
### 修改频道
> https://api.bilibili.com/x/space/channel/edit
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| cid | num | 频道id | 必要 | |
| name | str | 频道名 | 必要 | |
| intro | str | 频道简介 | 非必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />53001频道名字数超过限制<br />53002频道简介字数超过限制<br />53007频道名称已经存在<br />53024编辑内容命中敏感信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
修改频道`138996`名称为`测试`,简介为`123456`
```shell
curl 'https://api.bilibili.com/x/space/channel/edit' \
--data-urlencode 'cid=138996' \
--data-urlencode 'name=测试' \
--data-urlencode 'intro=123456' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
### 删除频道
> https://api.bilibili.com/x/space/channel/del
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| cid | num | 需要删除的频道id | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
删除频道`138996`
```shell
curl 'https://api.bilibili.com/x/space/channel/del' \
--data-urlencode 'cid=138996' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
### 频道添加视频
> https://api.bilibili.com/x/space/channel/video/add
*请求方式POST*
认证方式CookieSESSDATA
仅能添加自己是UP主的视频
如添加多个视频,仅会添加正确的
**注:完成后需要使用接口「查询用户频道中的视频」刷新**
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---------------------- |
| cid | num | 频道id | 必要 | |
| aids | nums | 要添加的目标稿件avid | 必要 | 多个使用","%2C分隔 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | ---------------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />53003本频道里的视频已满<br />53006提交视频已失效或频道里有非该视频UP主 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 出错稿件avid列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---- |
| 0 | num | 出错稿件avid1 | |
| n | num | 出错稿件avidn+1 | |
| …… | num | …… | …… |
**示例:**
向频道`138995`中添加视频`av583785685`和`av243322853`
```shell
curl 'https://api.bilibili.com/x/space/channel/video/add' \
--data-urlencode 'cid=138995' \
--data-urlencode 'aids=583785685,243322853' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": []
}
```
</details>
### 频道删除视频
> https://api.bilibili.com/x/space/channel/video/del
*请求方式POST*
认证方式CookieSESSDATA
**注:完成后需要使用接口「查询用户频道中的视频」刷新**
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| cid | num | 频道id | 必要 | |
| aid | num | 要删除的目标稿件avid | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />53008频道内没有视频<br />53009频道内没有该视频 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
删除频道`138995`中的视频`av583785685`
```shell
curl 'https://api.bilibili.com/x/space/channel/video/del' \
--data-urlencode 'cid=138995' \
--data-urlencode 'aid=583785685' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
### 调整频道视频排序
> https://api.bilibili.com/x/space/channel/video/sort
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| cid | num | 频道id | 必要 | |
| aid | num | 要移动的目标稿件avid | 必要 | |
| to | num | 视频排序倒数位置 | 非必要 | 默认为1<br />1为列表底部视频总数为首端<br />与显示顺序恰好相反 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
调整`138995`中的视频`av583785685`位置为倒数第2
```shell
curl 'https://api.bilibili.com/x/space/channel/video/sort' \
--data-urlencode 'cid=138995' \
--data-urlencode 'aid=583785685' \
--data-urlencode 'to=2' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
### 检查频道中有无失效视频
> https://api.bilibili.com/x/space/channel/video/check
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---------- | ------ | ---- |
| cid | num | 目标频道id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误<br />-404无此项<br />53005频道内有失效视频 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
检查频道`138995`
```shell
curl -G 'https://api.bilibili.com/x/space/channel/video/check
--data-urlencode 'cid=138995' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 课程 ## 课程

View File

@ -843,13 +843,19 @@ curl 'https://app.bilibili.com/x/v2/view/like/triple' \
*请求方式POST* *请求方式POST*
鉴权方式: Cookie (buvid3)
**正文参数( application/x-www-form-urlencoded ** **正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 | | 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------- | ------------ | --------------------- | | ------ | ---- | ------------------------- | ------------ | --------------------- |
| aid | num | 稿件 avid | 必要(可选) | avid 与 bvid 任选一个 | | aid | num | 稿件 aid | 必要 (可选) | aid 与 bvid 任选一个 |
| bvid | str | 稿件 bvid | 必要(可选) | avid 与 bvid任 选一个 | | bvid | str | 稿件 bvid | 必要 (可选) | aid 与 bvid 任选一个 |
| csrf | str | CSRF Token位于 Cookie | 必要 | | | csrf | str | CSRF Token (即 Cookie 中 bili_jct) | 不必要 | |
| eab_x | num | 2 | 不必要 | 作用尚不明确 |
| ramval | num | 0 | 不必要 | 作用尚不明确 |
| source | str | web_normal | 不必要 | |
| ga | num | 1 | 不必要 | 可能与风控有关? |
**json回复** **json回复**
@ -857,12 +863,11 @@ curl 'https://app.bilibili.com/x/v2/view/like/triple' \
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ------------------------------------------------------------------------- | | ------- | ---- | ---------- | ------------------------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 | | code | num | 返回值 | 0: 成功<br />-101: 账号未登录<br />-111: csrf校验失败<br />-400: 请求错误<br />403: 账号异常,操作失败<br />71000: 重复分享 |
| message | str | 错误信息 | 默认为0 | | message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | | | ttl | num | 1 | |
| data | num | 当前分享数 | | | data | num | 当前分享数 | |
**示例:** **示例:**
分享视频`BV1oA411776z` 分享视频`BV1oA411776z`

View File

@ -40,7 +40,7 @@
| remark | str | 类型备注 | | | remark | str | 类型备注 | |
| ctime | str | | 意义不明 | | ctime | str | | 意义不明 |
| mtime | str | | 意义不明 | | mtime | str | | 意义不明 |
| controls | 拥有时array<br>没有时null | 详细信息填写提示 | | | controls | 拥有时array<br />没有时null | 详细信息填写提示 | |
`controls`数组中的对象: `controls`数组中的对象:

View File

@ -4,6 +4,8 @@
## attribute字段值(稿件属性位) ## attribute字段值(稿件属性位)
该字段前端已弃用, 相关接口返回恒为 `0`, 参见 [验证视频属性字段实锤B站视频限流](https://shakaianee.top/archives/9/)
该字段为二进制标志位,多个标志请用`OR`运算叠加 该字段为二进制标志位,多个标志请用`OR`运算叠加
| 位 | 内容 | 备注 | | 位 | 内容 | 备注 |

View File

@ -60,17 +60,24 @@
| cid | num | 视频1P cid | | | cid | num | 视频1P cid | |
| dimension | obj | 视频1P分辨率 | | | dimension | obj | 视频1P分辨率 | |
| premiere | | null | | | premiere | | null | |
| teenage_mode | num | | | | teenage_mode | num | | 用于青少年模式 |
| is_chargeable_season | bool | | | | is_chargeable_season | bool | | |
| is_story | bool | | | | is_story | bool | 是否可以在 Story Mode 展示? | |
| no_cache | bool | | 作用尚不明确 | | is_upower_exclusive | bool | 是否为充电专属 | |
| is_upower_pay | bool | | |
| is_upower_show | bool | | |
| no_cache | bool | 是否不允许缓存? | |
| pages | array | 视频分P列表 | | | pages | array | 视频分P列表 | |
| subtitle | obj | 视频CC字幕信息 | | | subtitle | obj | 视频CC字幕信息 | |
| staff | array | 合作成员列表 | 非合作视频无此项 | | staff | array | 合作成员列表 | 非合作视频无此项 |
| is_season_display | bool | | | | is_season_display | bool | | |
| user_garb | obj | 用户装扮信息 | | | user_garb | obj | 用户装扮信息 | |
| honor_reply | obj | | | | honor_reply | obj | | |
| like_icon | str | | | | like_icon | str | 空串 | |
| need_jump_bv | bool | 需要跳转到BV号? | |
| disable_show_up_info | bool | 禁止展示UP主信息? | |
| is_story_play | bool | 是否为 Story Mode 视频? | |
| is_view_self | bool | 是否为自己投稿的视频? | |
| argue_info | obj | 争议/警告信息 | | | argue_info | obj | 争议/警告信息 | |
`data`中的`desc_v2`数组: `data`中的`desc_v2`数组:
@ -83,7 +90,7 @@
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
|----------|-----|------|-----| |----------|-----|------|-----|
| raw_text | str | 简介内容 |type=1时显示原文<br>type=2时显示'@'+raw_text+' '并链接至biz_id的主页| | raw_text | str | 简介内容 |type=1时显示原文<br />type=2时显示'@'+raw_text+' '并链接至biz_id的主页|
| type | num | 类型 |1普通2@他人| | type | num | 类型 |1普通2@他人|
| biz_id | num |被@用户的mid|=0当type=1| | biz_id | num |被@用户的mid|=0当type=1|
@ -170,7 +177,7 @@
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
|--------------|-------|----------|-----| |--------------|-------|----------|-----|
| allow_submit | bool | 是否允许提交字幕 | | | allow_submit | bool | 是否允许提交字幕 | |
| list | array | 字幕列表 | | | list | array | 字幕列表 | 未登录为空 |
`subtitle`对象中的`list`数组: `subtitle`对象中的`list`数组:
@ -233,7 +240,10 @@
|------------|-----|--------|---------------------------| |------------|-----|--------|---------------------------|
| type | num | 成员会员类型 | 0<br />1月会员<br />2年会员 | | type | num | 成员会员类型 | 0<br />1月会员<br />2年会员 |
| status | num | 会员状态 | 0<br />1有 | | status | num | 会员状态 | 0<br />1有 |
| due_date | num | 到期时间 | UNIX 毫秒时间戳 |
| vip_pay_type | num | | |
| theme_type | num | 0 | | | theme_type | num | 0 | |
| label | obj | | |
`staff`数组中的对象中的`official`对象: `staff`数组中的对象中的`official`对象:
@ -343,20 +353,20 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
}, },
"owner": { "owner": {
"mid": 66606350, "mid": 66606350,
"name": "Crazy_Bucket_陈楒潼", "name": "陈楒潼桶桶桶",
"face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg" "face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg"
}, },
"stat": { "stat": {
"aid": 85440373, "aid": 85440373,
"view": 2353489, "view": 2387699,
"danmaku": 12026, "danmaku": 12146,
"reply": 2648, "reply": 2671,
"favorite": 58761, "favorite": 58591,
"coin": 72088, "coin": 72578,
"share": 9539, "share": 9598,
"now_rank": 0, "now_rank": 0,
"his_rank": 55, "his_rank": 55,
"like": 159350, "like": 160683,
"dislike": 0, "dislike": 0,
"evaluation": "", "evaluation": "",
"vt": 0 "vt": 0
@ -379,6 +389,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
"is_story": false, "is_story": false,
"is_upower_exclusive": false, "is_upower_exclusive": false,
"is_upower_play": false, "is_upower_play": false,
"is_upower_preview": false,
"enable_vt": 0, "enable_vt": 0,
"vt_display": "", "vt_display": "",
"no_cache": false, "no_cache": false,
@ -400,44 +411,19 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
], ],
"subtitle": { "subtitle": {
"allow_submit": false, "allow_submit": false,
"list": [ "list": []
{
"id": 1061981378473780000,
"lan": "ai-zh",
"lan_doc": "中文(自动生成)",
"is_lock": false,
"subtitle_url": "",
"type": 1,
"id_str": "1061981378473779968",
"ai_type": 0,
"ai_status": 2,
"author": {
"mid": 0,
"name": "",
"sex": "",
"face": "",
"sign": "",
"rank": 0,
"birthday": 0,
"is_fake_account": 0,
"is_deleted": 0,
"in_reg_audit": 0,
"is_senior_member": 0
}
}
]
}, },
"staff": [ "staff": [
{ {
"mid": 66606350, "mid": 66606350,
"title": "UP主", "title": "UP主",
"name": "Crazy_Bucket_陈楒潼", "name": "陈楒潼桶桶桶",
"face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg", "face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg",
"vip": { "vip": {
"type": 2, "type": 2,
"status": 1, "status": 1,
"due_date": 1706112000000, "due_date": 1737820800000,
"vip_pay_type": 0, "vip_pay_type": 1,
"theme_type": 0, "theme_type": 0,
"label": { "label": {
"path": "", "path": "",
@ -459,7 +445,11 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
"avatar_subscript_url": "", "avatar_subscript_url": "",
"tv_vip_status": 0, "tv_vip_status": 0,
"tv_vip_pay_type": 0, "tv_vip_pay_type": 0,
"tv_due_date": 0 "tv_due_date": 0,
"avatar_icon": {
"icon_type": 1,
"icon_resource": {}
}
}, },
"official": { "official": {
"role": 1, "role": 1,
@ -467,18 +457,18 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
"desc": "", "desc": "",
"type": 0 "type": 0
}, },
"follower": 650859, "follower": 629775,
"label_style": 0 "label_style": 0
}, },
{ {
"mid": 53456, "mid": 53456,
"title": "曲绘", "title": "曲绘",
"name": "Warma", "name": "Warma",
"face": "https://i2.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg", "face": "https://i2.hdslb.com/bfs/face/87c0b7e4d3eedf04c458a82b9271013beaa4bc59.jpg",
"vip": { "vip": {
"type": 2, "type": 2,
"status": 1, "status": 1,
"due_date": 1738339200000, "due_date": 1770480000000,
"vip_pay_type": 0, "vip_pay_type": 0,
"theme_type": 0, "theme_type": 0,
"label": { "label": {
@ -501,7 +491,11 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
"avatar_subscript_url": "", "avatar_subscript_url": "",
"tv_vip_status": 1, "tv_vip_status": 1,
"tv_vip_pay_type": 1, "tv_vip_pay_type": 1,
"tv_due_date": 1721145600 "tv_due_date": 1753286400,
"avatar_icon": {
"icon_type": 1,
"icon_resource": {}
}
}, },
"official": { "official": {
"role": 1, "role": 1,
@ -509,13 +503,13 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
"desc": "", "desc": "",
"type": 0 "type": 0
}, },
"follower": 4223581, "follower": 4600968,
"label_style": 0 "label_style": 0
} }
], ],
"is_season_display": false, "is_season_display": false,
"user_garb": { "user_garb": {
"url_image_ani_cut": "https://i0.hdslb.com/bfs/garb/item/311b29b795eb3f09ed0401a56eddf5c90b8fbfd6.bin" "url_image_ani_cut": ""
}, },
"honor_reply": { "honor_reply": {
"honor": [ "honor": [
@ -541,7 +535,9 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
}, },
"like_icon": "", "like_icon": "",
"need_jump_bv": false, "need_jump_bv": false,
"disable_show_up_info": false "disable_show_up_info": false,
"is_story_play": 1,
"is_view_self": false
} }
} }
``` ```

View File

@ -5,43 +5,93 @@
web 播放器的信息接口,提供正常播放需要的元数据,包括:智能防挡弹幕、字幕、章节看点等。 web 播放器的信息接口,提供正常播放需要的元数据,包括:智能防挡弹幕、字幕、章节看点等。
> https://api.bilibili.com/x/player/wbi/v2 > https://api.bilibili.com/x/player/wbi/v2
> https://api.bilibili.com/x/player/v2
*请求方式GET* *请求方式GET*
**url 参数:** **URL参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 | | 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | --------- | ----------- | ----------------- | | ------ | ---- | --------- | ----------- | ----------------- |
| aid | num | 稿件 avid | 必要 (可选) | aid 与 bvid 任选 | | aid | num | 稿件 avid | 必要 (可选) | aid 与 bvid 任选 |
| bvid | str | 稿件 bvid | 必要 (可选) | aid 与 bvid 任选 | | bvid | str | 稿件 bvid | 必要 (可选) | aid 与 bvid 任选 |
| cid | num | 稿件 cid | 必要 | | | cid | num | 稿件 cid | 必要 | |
| season_id | num | 番剧 season_id | 不必要 | |
| ep_id | num | 剧集 ep_id | 不必要 | |
| w_rid | str | WBI 签名 | 不必要 | | | w_rid | str | WBI 签名 | 不必要 | |
| wts | num | 当前 unix 时间戳 | 不必要 | | | wts | num | 当前 unix 时间戳 | 不必要 | |
**json 回复:** **JSON回复:**
根对象 根对象:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- | | ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0:成功<br />-400请求错误 | | code | num | 返回值 | 0: 成功<br />-400: 请求错误 |
| message | str | 错误信息 | 默认为 0 | | message | str | 错误信息 | 默认为 0 |
| ttl | num | 1 | | | ttl | num | 1 | |
| data | obj | 数据本体 | | | data | obj | 数据本体 | |
`data` 对象 `data` 对象:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- | | --------- | ----- | -------- | ---- |
| aid | num | 视频 aid | | | aid | num | 视频 aid | |
| bvid | str | 视频 bvid | | | bvid | str | 视频 bvid | |
| allow_bp | bool | | |
| no_share | bool | 禁止分享? | |
| cid | num | 视频 cid | | | cid | num | 视频 cid | |
|dm_mask | obj | | webmask 信息(如果没有这一项,说明这个视频没有防挡功能) | | dm_mask | obj | webmask 防挡字幕信息 | 若无则没有防挡功能 |
|subtitle | obj | | 字幕信息(需要登录,不登录此项内容为 `[]` | | subtitle | obj | 字幕信息 | 若无则没有字幕, 若不登陆则为空 |
| view_points | array | | 章节看点信息 | | view_points | array | | 章节看点信息 |
| 其他 | ... | | 主要是观看记录、使用者等级权限、背景音乐等信息 | | ip_info | obj | 请求 IP 信息 | |
| login_mid | num | 登录用户 mid | |
| login_mid_hash | str | | |
| is_owner | bool | 是否为该视频 UP 主 | |
| name | str | | |
| permission | num | | |
| level_info | obj | 登录用户等级信息 | |
| vip | obj | 登录用户 VIP 信息 | |
| answer_status | num | 答题状态 | |
| block_time | num | 封禁时间? | |
| role | str | | |
| last_play_time | num | 上次观看时间? | |
| last_play_cid | num | 上次观看 cid? | |
| now_time | num | 当前 UNIX 秒级时间戳 | |
| online_count | num | 在线人数 | |
| need_login_subtitle | bool | 是否必须登陆才能查看字幕 | 是的 |
| preview_toast | str | `为创作付费,购买观看完整视频|购买观看` | |
| options | obj | | |
| guide_attention | any | | |
| jump_card | any | | |
| operation_card | any | | |
| online_switch | obj | | |
| fawkes | obj | 播放器相关信息? | |
| show_switch | obj | | |
| bgm_info | obj | 背景音乐信息 | |
| toast_block | bool | | |
| is_upower_exclusive | bool | 充电专属? | |
| is_upower_play | bool | | |
| is_ugc_pay_preview | bool | | |
| elec_high_level | obj | | |
| disable_show_up_info | bool | | |
`dm_mask`对象(如果有): `data` 对象中的 `options` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | --- | --- |
| is_360 | bool | 是否 360 全景视频 | |
| without_vip | bool | | |
`data` 对象中的 `bgm_info` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| music_id | str | 音乐 id | |
| music_title | str | 音乐标题 | |
| jump_url | str | 跳转 URL | |
`data` 对象中的 `dm_mask` 对象 (如果有):
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- | | --------- | ----- | -------- | ---- |
@ -53,7 +103,8 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括:
解析 webmask 请看 [智能防挡弹幕](../danmaku/webmask.md) 解析 webmask 请看 [智能防挡弹幕](../danmaku/webmask.md)
`subtitle`对象: `data` 对象中的 `subtitle` 对象:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- | | --------- | ----- | -------- | ---- |
|allow_submit|bool | true | | |allow_submit|bool | true | |
@ -61,7 +112,7 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括:
|lan_doc | str | "" | | |lan_doc | str | "" | |
|subtitles| array | | 不登录为 `[]` | |subtitles| array | | 不登录为 `[]` |
`subtitles` 数组内的元素: `subtitle` 对象中的 `subtitles` 数组内的元素:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- | | --------- | ----- | -------- | ---- |
@ -75,8 +126,8 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括:
|subtitle_url|str| 资源 url 地址 | | |subtitle_url|str| 资源 url 地址 | |
|type| num | 0 | | |type| num | 0 | |
`view_point` 数组内的元素:
`view_point` 数组内的元素:
| 字段 | 类型 | 内容 | 备注 | | 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- | | --------- | ----- | -------- | ---- |
| content | num | 章节名 | | | content | num | 章节名 | |
@ -86,69 +137,299 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括:
| imgUrl | str | 图片资源地址 | | | imgUrl | str | 图片资源地址 | |
| logoUrl | str | "" | | | logoUrl | str | "" | |
示例: **示例:**
未登录, `aid=1906473802`
```shell ```shell
curl -G "https://api.bilibili.com/x/player/wbi/v2?aid=515345690&cid=825851971" curl -G 'https://api.bilibili.com/x/player/wbi/v2' \
--url-query 'bvid=BV1MU411S7iJ' \
--url-query 'aid=1906473802' \
--url-query 'cid=1625992822'
``` ```
```jsonc <details>
<summary>查看响应示例:</summary>
```json
{ {
"code": 0, "code": 0,
"message": "0", "message": "0",
"ttl": 1, "ttl": 1,
"data": { "data": {
"aid": 515345690, "aid": 1906473802,
"bvid": "BV1Fg411D7Jy", "bvid": "BV1MU411S7iJ",
... // 省略 "allow_bp": false,
"dm_mask": { "no_share": false,
"cid": 825851971, "cid": 1625992822,
"plat": 0, "max_limit": 1000,
"fps": 30, "page_no": 1,
"time": 0, "has_next": false,
"mask_url": "//upos-sz-staticcos-cmask.bilivideo.com/cmaskboss/825851971_30_0.webmask?trid=219266863a1442baa05086b4285ba923B&orderid=0,1&logo=00000000" "ip_info": {
"ip": "104.28.152.138",
"zone_ip": " 10.163.150.25",
"zone_id": 29409280,
"country": "美国",
"province": "加利福尼亚州",
"city": "东洛杉矶"
}, },
"view_points": [ "login_mid": 0,
{ "login_mid_hash": "",
"type": 2, "is_owner": false,
"from": 0, "name": "",
"to": 27, "permission": "0",
"content": "狗啃的", "level_info": {
"imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_0.jpg", "current_level": 0,
"logoUrl": "" "current_min": 0,
"current_exp": 0,
"next_exp": 0,
"level_up": 0
}, },
{ "vip": {
"type": 2, "type": 0,
"from": 27, "status": 0,
"to": 63, "due_date": 0,
"content": "椒牌泡菜", "vip_pay_type": 0,
"imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_27.jpg", "theme_type": 0,
"logoUrl": "" "label": {
}, ... // 省略 "path": "",
], "text": "",
"subtitle": { "label_theme": "",
"allow_submit": true, "text_color": "",
"lan": "", "bg_style": 0,
"lan_doc": "", "bg_color": "",
"subtitles": [], // 未登录,下面是登录的版本 "border_color": "",
"subtitles":[ "use_img_label": false,
{ "img_label_uri_hans": "",
"id": 1042985852759993300, "img_label_uri_hant": "",
"lan": "ai-zh", "img_label_uri_hans_static": "",
"lan_doc": "中文(自动生成)", "img_label_uri_hant_static": ""
"is_lock": false, },
"subtitle_url": "//aisubtitle.hdslb.com/bfs/ai_subtitle/prod/5153456908258519712094280c7c2884b77929bab82f64530f?auth_key=1714795727-a8eb254b60bc4a73bc8662da51005340-0-1c305894e48e959979b163636461fb8f", "avatar_subscript": 0,
"type": 1, "nickname_color": "",
"id_str": "1042985852759993344", "role": 0,
"ai_type": 0, "avatar_subscript_url": "",
"ai_status": 2 "tv_vip_status": 0,
} "tv_vip_pay_type": 0,
] "tv_due_date": 0,
"avatar_icon": {
"icon_resource": {}
} }
},
"answer_status": 0,
"block_time": 0,
"role": "",
"last_play_time": 0,
"last_play_cid": 0,
"now_time": 1725002188,
"online_count": 1,
"need_login_subtitle": false,
"view_points": [],
"preview_toast": "为创作付费,购买观看完整视频|购买观看",
"options": {
"is_360": false,
"without_vip": false
},
"guide_attention": [],
"jump_card": [],
"operation_card": [],
"online_switch": {
"enable_gray_dash_playback": "500",
"new_broadcast": "1",
"realtime_dm": "1",
"subtitle_submit_switch": "1"
},
"fawkes": {
"config_version": 30787,
"ff_version": 21289
},
"show_switch": {
"long_progress": false
},
"bgm_info": {
"music_id": "MA436038343856245020",
"music_title": "Unwelcome school",
"jump_url": "https://music.bilibili.com/h5/music-detail?music_id=MA436038343856245020&cid=1625992822&aid=1906473802"
},
"toast_block": false,
"is_upower_exclusive": false,
"is_upower_play": false,
"is_ugc_pay_preview": false,
"elec_high_level": {
"privilege_type": 0,
"title": "",
"sub_title": "",
"show_button": false,
"button_text": "",
"jump_url": "",
"intro": "",
"new": false
},
"disable_show_up_info": false
} }
} }
``` ```
</details>
已登陆, `aid=60977932`
```shell
curl -G 'https://api.bilibili.com/x/player/v2' \
--url-query 'aid=60977932' \
--url-query 'cid=106101299' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"aid": 60977932,
"bvid": "BV1Jt411P77c",
"allow_bp": false,
"no_share": false,
"cid": 106101299,
"max_limit": 1000,
"page_no": 1,
"has_next": true,
"ip_info": {
"ip": "108.181.22.55",
"zone_ip": " 172.27.132.5",
"zone_id": 29409296,
"country": "美国",
"province": "加利福尼亚州",
"city": "洛杉矶"
},
"login_mid": 616368979,
"login_mid_hash": "445e7035",
"is_owner": false,
"name": "淡紫玲儿",
"permission": "10000,1001",
"level_info": {
"current_level": 3,
"current_min": 1500,
"current_exp": 2962,
"next_exp": 4500,
"level_up": -62135596800
},
"vip": {
"type": 1,
"status": 0,
"due_date": 1665417600000,
"vip_pay_type": 0,
"theme_type": 0,
"label": {
"path": "",
"text": "",
"label_theme": "",
"text_color": "",
"bg_style": 0,
"bg_color": "",
"border_color": "",
"use_img_label": true,
"img_label_uri_hans": "",
"img_label_uri_hant": "",
"img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/d7b702ef65a976b20ed854cbd04cb9e27341bb79.png",
"img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png"
},
"avatar_subscript": 0,
"nickname_color": "",
"role": 0,
"avatar_subscript_url": "",
"tv_vip_status": 0,
"tv_vip_pay_type": 0,
"tv_due_date": 0,
"avatar_icon": {
"icon_resource": {}
}
},
"answer_status": 0,
"block_time": 0,
"role": "0",
"last_play_time": 0,
"last_play_cid": 0,
"now_time": 1725003260,
"online_count": 1,
"need_login_subtitle": false,
"subtitle": {
"allow_submit": true,
"lan": "zh-CN",
"lan_doc": "中文(中国)",
"subtitles": [
{
"id": 13643112644608002,
"lan": "zh-Hans",
"lan_doc": "中文(简体)",
"is_lock": true,
"subtitle_url": "//aisubtitle.hdslb.com/bfs/subtitle/c49b18a284739d99df1e3723cdf72c0c82db98e0.json?auth_key=1725003260-5d0391a07f4f47f6960f60cf5045dff3-0-fc16c1f67a6b41edcb2a89d5e0c9bfdd",
"type": 0,
"id_str": "13643112644608002",
"ai_type": 0,
"ai_status": 0
},
{
"id": 13643200114196484,
"lan": "en-US",
"lan_doc": "英语(美国)",
"is_lock": true,
"subtitle_url": "//aisubtitle.hdslb.com/bfs/subtitle/2b38bc0f5d7671176964d4c3de441ed37568500c.json?auth_key=1725003260-5f709a74aa884751b77f86b6f6a48078-0-9b2fc3c18b99b1bf0cc7c7e63d18f686",
"type": 0,
"id_str": "13643200114196484",
"ai_type": 0,
"ai_status": 0
}
]
},
"view_points": [],
"preview_toast": "为创作付费,购买观看完整视频|购买观看",
"options": {
"is_360": false,
"without_vip": false
},
"guide_attention": [],
"jump_card": [],
"operation_card": [],
"online_switch": {
"enable_gray_dash_playback": "500",
"new_broadcast": "1",
"realtime_dm": "1",
"subtitle_submit_switch": "1"
},
"fawkes": {
"config_version": 30787,
"ff_version": 21289
},
"show_switch": {
"long_progress": false
},
"bgm_info": null,
"toast_block": false,
"is_upower_exclusive": false,
"is_upower_play": false,
"is_ugc_pay_preview": false,
"elec_high_level": {
"privilege_type": 0,
"title": "",
"sub_title": "",
"show_button": false,
"button_text": "",
"jump_url": "",
"intro": "",
"new": false
},
"disable_show_up_info": false
}
}
```
</details>
## 播放反馈 ## 播放反馈
> https://app.bilibili.com/x/resource/laser2 > https://app.bilibili.com/x/resource/laser2

View File

@ -96,8 +96,8 @@ curl 'https://api.bilibili.com/x/v2/history/report' \
| w_video_duration | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 | | w_video_duration | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
| w_last_play_progress_time | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 | | w_last_play_progress_time | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 |
| web_location | num | 网页位置 | 非必要 | 视频详情页播放器: 1315873 | | web_location | num | 网页位置 | 非必要 | 视频详情页播放器: 1315873 |
| w_rid | num | WBI 签名 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | | w_rid | num | WBI 签名 | 非必要 | 参见[WBI 签名](../misc/sign/wbi.md) |
| wts | num | UNIX 秒级时间戳 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | | wts | num | UNIX 秒级时间戳 | 非必要 | 参见[WBI 签名](../misc/sign/wbi.md) |
**正文参数( application/x-www-form-urlencoded ** **正文参数( application/x-www-form-urlencoded **
@ -191,8 +191,8 @@ curl 'https://api.bilibili.com/x/click-interface/web/heartbeat' \
| w_stime | num | 开始播放时间戳? | 不必要 | UNIX 秒级时间戳 | | w_stime | num | 开始播放时间戳? | 不必要 | UNIX 秒级时间戳 |
| w_type | num | 视频类型 | 不必要 | 见[上报视频播放心跳web端](#上报视频播放心跳web端) | | w_type | num | 视频类型 | 不必要 | 见[上报视频播放心跳web端](#上报视频播放心跳web端) |
| web_location | num | 网页位置? | 不必要 | 1315873 | | web_location | num | 网页位置? | 不必要 | 1315873 |
| w_rid | num | WBI 签名 | 不必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | | w_rid | num | WBI 签名 | 不必要 | 参见[WBI 签名](../misc/sign/wbi.md) |
| wts | num | UNIX 秒级时间戳 | 不必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | | wts | num | UNIX 秒级时间戳 | 不必要 | 参见[WBI 签名](../misc/sign/wbi.md) |
**正文参数 (application/x-www-form-urlencoded):** **正文参数 (application/x-www-form-urlencoded):**

View File

@ -1,9 +1,11 @@
# 视频状态数 # 视频状态数
本页接口均已失效
## 视频状态数仅avid ## 视频状态数仅avid
<details> <details>
<summary>该接口已失效</summary> <summary>该接口已弃用 (HTTP 403)</summary>
> https://api.bilibili.com/archive_stat/stat > https://api.bilibili.com/archive_stat/stat
@ -87,6 +89,9 @@ curl -G 'https://api.bilibili.com/archive_stat/stat' \
## 视频状态数bvid/avid ## 视频状态数bvid/avid
<details>
<summary>该接口已失效 (HTTP 404)</summary>
> https://api.bilibili.com/x/web-interface/archive/stat > https://api.bilibili.com/x/web-interface/archive/stat
*请求方式GET* *请求方式GET*
@ -201,3 +206,5 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/stat' \
``` ```
</details> </details>
</details>

View File

@ -747,9 +747,9 @@ cac@^6.7.14:
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520:
version "1.0.30001527" version "1.0.30001653"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz#813826554828245ccee776c850566dce12bdeaba" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz"
integrity sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ== integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==
chalk@^5.0.0, chalk@^5.3.0: chalk@^5.0.0, chalk@^5.3.0:
version "5.3.0" version "5.3.0"