diff --git a/README.md b/README.md index bac4dc9..fe436d4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

哔哩哔哩-API收集整理

@@ -13,7 +13,7 @@ GitHub forks - + GitHub license @@ -111,7 +111,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接 - [ ] [视频](docs/video) - [x] [视频分区一览 (分区代码)](docs/video/video_zone.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/action.md) - [ ] [TAG](docs/video/tags.md) @@ -312,7 +312,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a ) ## 💦交流 - + ⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC @@ -327,7 +327,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a ) WeChat & Alipay: - + OR Aifadian:[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE) diff --git a/docs/APP_widget/ver.md b/docs/APP_widget/ver.md index 005b529..0fdfc47 100644 --- a/docs/APP_widget/ver.md +++ b/docs/APP_widget/ver.md @@ -1,5 +1,78 @@ # 获取最新 APP 版本 +## 获取版本信息 + +> https://app.bilibili.com/x/v2/version + +*请求方法: GET* + + + +**URL参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --- | --- | --- | --- | --- | +| mobi_app | str | 目标客户端类型 | 不必要 | 留空为最新有更新的平台
android: Android 版
iphone: iPhone 版
ipad: iPad HD 版
win: UWP 版
android_tv_yst: TV 版
android_car: 车机版
pc_client: PC 客户端 | + +**JSON回复:** + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| code | int | 返回值 | 0: 成功 | +| message | str | 错误信息 | 默认为 `0` | +| ttl | int | 1 | | +| data | array | 版本信息列表 | | + +`data` 数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| plat | int | 平台 | 0: Android
1: iPhone
2: iPad HD
3: UWP
12: TV 版
35: 车机版
40: PC 客户端 | +| desc | str | 版本描述 | | +| version | str | 版本号 | | +| build | int | 内部版本号 | | + +**示例:** + +```shell +curl -G 'https://app.bilibili.com/x/v2/version' \ +--url-query'mobi_app=android' +``` + +

+查看响应示例: + +```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 + } + ] +} +``` + +
+ ## 版本升级 > https://app.bilibili.com/x/v2/version/fawkes/upgrade @@ -67,18 +140,16 @@ **示例:** -```sh -curl 'https://app.bilibili.com/x/v2/version/fawkes/upgrade' \ - --url-query 'build=8000200' \ - --url-query 'channel=master' \ - --url-query 'mobi_app=android' \ - --url-query 'ov=30' \ - --url-query 'nt=1' \ - --url-query 'sn=15088473' \ - --url-query 'vn=8.0.0' \ - --header 'app-key: android64' \ - --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' +```shell +curl -G 'https://app.bilibili.com/x/v2/version/fawkes/upgrade' \ +--url-query 'build=1145141' \ +--url-query 'channel=apt' \ +--url-query 'mobi_app=android' \ +--url-query 'nt=awa' \ +--url-query 'ov=qwq' \ +--url-query 'platform=archlinux' \ +--url-query 'sn=919810' \ +--url-query 'vn=!!!' ```
diff --git a/docs/activity/info.md b/docs/activity/info.md index f9c8da8..ddf2f68 100644 --- a/docs/activity/info.md +++ b/docs/activity/info.md @@ -9,7 +9,7 @@ **URL参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | -| - | - | - | - | - | - | - | +| - | - | - | - | - | | sid | num | 活动 id | 必要 | | | bvid | str | 来源视频 bvid | 非必要 | | diff --git a/docs/audio/musicstream_url.md b/docs/audio/musicstream_url.md index 72dd16a..26f9c2c 100644 --- a/docs/audio/musicstream_url.md +++ b/docs/audio/musicstream_url.md @@ -28,6 +28,8 @@ | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ---- | | sid | num | 音频auid | 必要 | | +| quality | num | 2 | 不必要 | | +| privilege | num | 2 | 不必要 | | **json回复:** @@ -35,8 +37,9 @@ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | -------- | ----------------------------------------------------------- | -| code | num | 返回值 | 0:成功
7201006:未找到或已下架
72000000:请求错误 | -| msg | str | 错误信息 | 默认为success | +| code | num | 返回值 | 0: 成功
4511006: 已跳过无法播放的歌曲
7201006:未找到或已下架
72000000:请求错误 | +| message | str | 返回值 | 字符串形式的 code | +| msg | str | 返回信息 | 成功为 success | | data | obj | 数据本体 | | `data`对象: @@ -45,27 +48,26 @@ | --------- | ----- | --------- | --------------------------------------- | | sid | num | 音频auid | | | type | num | 音质标识 | -1:试听片段(192K)
1:192K | -| info | str | 空 | **作用尚不明确** | +| info | str | 空 | | | timeout | num | 有效时长 | 单位为秒
一般为3h | | size | num | 文件大小 | 单位为字节
当`type`为-1时`size`为0 | | cdns | array | 音频流url | | -| qualities | null | - | | -| title | null | - | | -| cover | null | - | | +| qualities | null | | | +| title | str | 空 | | +| cover | str | 空 | | `data`对象的`cdns`数组: - | 项 | 类型 | 内容 | 备注 | | ---- | ---- | ------------- | ---- | | 0 | str | 音频流url | | -| 1 | str | 备用音频流url | | +| 1 | str | 备用音频流url | 可能不存在 | **示例:** ```shell curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \ ---data-urlencode 'sid=sid=15664' +--data-urlencode 'sid=777180' ```
@@ -73,22 +75,22 @@ curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \ ```json { - "code": 0, - "msg": "success", - "data": { - "sid": 15664, - "type": 1, - "info": "", - "timeout": 10800, - "size": 4853263, - "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-mirrorks3.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=f3fe53aff56655b1b7264ae4ab65872e" - ], - "qualities": null, - "title": null, - "cover": null - } + "code": 0, + "data": { + "sid": 777180, + "title": "", + "cover": "", + "type": 1, + "info": "", + "timeout": 10800, + "size": 5579903, + "cdns": [ + "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" + ], + "qualities": null + }, + "message": "0", + "msg": "success" } ``` @@ -176,7 +178,7 @@ curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \ Cookie方式: ```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 'quality=3' \ --data-urlencode 'privilege=2' \ @@ -188,7 +190,7 @@ curl -G 'https://api.bilibili.com/audio/music-service-c/url APP方式: ```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 'songid=682118' \ --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 -wget 'https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d' \ --O 'Download_music.flac' +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" \ +--referer 'https://www.bilibili.com/' -A 'Mozilla/5.0' \ +--output - | ffplay - ``` - -响应正文将返回一个flac文件 diff --git a/docs/blackroom/jury/judgement_info.md b/docs/blackroom/jury/judgement_info.md index 018eea0..1197b65 100644 --- a/docs/blackroom/jury/judgement_info.md +++ b/docs/blackroom/jury/judgement_info.md @@ -712,7 +712,7 @@ curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \ | 字段 | 类型 | 内容 | 备注 | | ------- | ------ | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功;
-400:`ps`参数大于可允许的最大值`20` | +| code | num | 返回值 | 0:成功;
-400:`ps`参数大于可允许的最大值`20` | | message | str | 信息 | 默认为0 | | ttl | num | 1 | 作用尚不明确 | | data | object | 数据本体 | | diff --git a/docs/comment/list.md b/docs/comment/list.md index 8c8297d..e371a4e 100644 --- a/docs/comment/list.md +++ b/docs/comment/list.md @@ -862,8 +862,6 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \ *请求方式:GET* -认证方式:Cookie(SESSDATA)或APP - 鉴权方式:[Wbi 签名](../misc/sign/wbi.md) 注: Wbi 签名错误时返回 -403 而非 -352 @@ -876,6 +874,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \ | type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | | oid | num | 目标评论区 id | 必要 | | | mode | num | 排序方式 | 非必要 | 默认为 3
0 3:仅按热度
1:按热度+按时间
2:仅按时间 | +| next | num | 翻页 | 非必要 | 不推荐, 已弃用, 优先级比 `pagination_str` 高 | | pagination_str | obj | 分页信息 | 非必要 | 见下 | | plat | num | 平台类型 | 非必要 | 如 `1` | | seek_rpid | str | 空 | 非必要 | 当获取第一页评论时存在 | @@ -892,7 +891,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply' \ | 参数名 | 类型 | 内容 | 备注 | | ----- | ---- | -- | - | | type | num | 类型 | 当 URL 参数 mode 为 2 时, 此项为 3
当 URL 参数 mode 为 3 时, 此项为 1 | -| direction | num | 1 | | +| direction | num | 方向 | 1: 正序(默认)
2: 倒序 | | data | obj | 分页数据 | 当 type 为 1 时存在 | | Data | obj | 分页数据 | 当 type 为 3 时存在 | @@ -1054,8 +1053,7 @@ curl -G 'https://api.bilibili.com/x/v2/reply/wbi/main' \ --data-urlencode 'type=1' \ --data-urlencode 'mode=2' \ --data-urlencode 'w_rid=xxx' \ ---data-urlencode 'wts=xxx' \ --b 'SESSDATA=' +--data-urlencode 'wts=xxx' ```
diff --git a/docs/comment/readme.md b/docs/comment/readme.md index c74c42b..4670158 100644 --- a/docs/comment/readme.md +++ b/docs/comment/readme.md @@ -54,7 +54,7 @@ | count | num | 二级评论条数 | | | rcount | num | 回复评论条数 | | | floor | num | 评论楼层号 | **注:若不支持楼层则无此项** | -| state | num | (?) | | +| state | num | 评论状态 | 0: 正常
17: 被阿瓦隆系统隐藏 (无法被别人看到, 只能自己看到) | | fansgrade | num | 是否具有粉丝标签 | 0:无
1:有 | | attr | num | 某属性位? | | | ctime | num | 评论发送时间 | 时间戳 | diff --git a/docs/creativecenter/upload.md b/docs/creativecenter/upload.md index 987f87b..42abd30 100644 --- a/docs/creativecenter/upload.md +++ b/docs/creativecenter/upload.md @@ -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' \ --url-query 'csrf=d51eadf05ba3bc6c5f76def7fbcc0185' \ --data-urlencode 'filename=' \ --b ' +-b 'SESSDATA=xxx; bili_jct=xxx' ```
diff --git a/docs/danmaku/action.md b/docs/danmaku/action.md index 84ea862..95e34c4 100644 --- a/docs/danmaku/action.md +++ b/docs/danmaku/action.md @@ -370,7 +370,7 @@ curl 'https://api.bilibili.com/x/v2/dm/command/post' \ `data`对象: | 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | +| ---- | ---- | ---- | ---- | | dmid | num | 弹幕dmid | | | dmid_str | str | 弹幕dmid | 字串形式 | | visible | bool | 是否可见 | | diff --git a/docs/dynamic/detail.md b/docs/dynamic/detail.md index 6f7da04..8692e8b 100644 --- a/docs/dynamic/detail.md +++ b/docs/dynamic/detail.md @@ -1,49 +1,64 @@ # 获取动态详情 +## 动态详情 + > https://api.bilibili.com/x/polymer/web-dynamic/v1/detail -请求方式:`GET` +*请求方式: GET* -是否需要登录:`否` +认证方式: Cookie (SESSDATA) (非必要) -## URL参数 +鉴权方式: Cookie (User-Agent) (必要), [Wbi 签名](../misc/sign/wbi.md) (非必要) -| 参数名 | 类型 | 必填 | 内容 | 备注 | -|-----------------|-----|-----|--------|-----| -| timezone_offset | num | | `-480` | | -| id | num | √ | 动态id | | +**URL参数:** -## 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:成功
4101139:4101139 | +| code | num | 响应码 | 0: 成功
-352: 风控校验失败
4101139: 4101139 | | message | str | | | | ttl | num | 1 | | | data | obj | 信息本体 | | -### `data`对象 +`data`对象: | 字段名 | 类型 | 内容 | 备注 | |------|-----|-----|-----| | item | obj | | | -### `data`对象 -> `item`对象 +`data.item`对象: 参照 [获取动态列表](./all.md#获取动态列表) -## 请求示例 +**示例:** ```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' ``` -## 响应示例 -
-点击查看 +查看响应示例: ```json { @@ -53,65 +68,137 @@ curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=7243 "data": { "item": { "basic": { - "comment_id_str": "724328028268658744", - "comment_type": 17, + "comment_id_str": "326122895", + "comment_type": 11, "like_icon": { "action_url": "", "end_url": "", "id": 0, "start_url": "" }, - "rid_str": "724328032624443401" + "rid_str": "326122895" }, - "id_str": "724328028268658744", + "id_str": "967717348014293017", "modules": { "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, "following": null, - "jump_url": "//space.bilibili.com/11357018/dynamic", + "jump_url": "//space.bilibili.com/645769214/dynamic", "label": "", - "mid": 11357018, - "name": "动画魂-Anitama", + "mid": 645769214, + "name": "Session小胡", "official_verify": { "desc": "", - "type": 0 + "type": -1 }, "pendant": { "expire": 0, "image": "", "image_enhance": "", "image_enhance_frame": "", + "n_pid": 0, "name": "", "pid": 0 }, "pub_action": "", "pub_location_text": "", - "pub_time": "2022-11-03 22:02", - "pub_ts": 1667484162, + "pub_time": "2024年08月20日 19:17", + "pub_ts": 1724152653, "type": "AUTHOR_TYPE_NORMAL", "vip": { - "avatar_subscript": 1, + "avatar_subscript": 0, "avatar_subscript_url": "", - "due_date": 1685808000000, + "due_date": 1665158400000, "label": { - "bg_color": "#FB7299", - "bg_style": 1, + "bg_color": "", + "bg_style": 0, "border_color": "", "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_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png", - "label_theme": "annual_vip", + "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png", + "label_theme": "", "path": "", - "text": "年度大会员", - "text_color": "#FFFFFF", + "text": "", + "text_color": "", "use_img_label": true }, - "nickname_color": "#FB7299", - "status": 1, + "nickname_color": "", + "status": 0, "theme_type": 0, - "type": 2 + "type": 1 } }, "module_dynamic": { @@ -119,151 +206,538 @@ curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=7243 "desc": { "rich_text_nodes": [ { - "orig_text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖,有打扰请多保函。\n", - "text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖,有打扰请多保函。\n", + "orig_text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知.", + "text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知.", "type": "RICH_TEXT_NODE_TYPE_TEXT" } ], - "text": "恭喜 @羽希plume @晕乎菌 中奖,已私信联系。——全天加码放水,红包力度很大,打开手淘搜“我爱你红包”,红包每天可以领,积少成多。 ——明天早上9点开另外一则抽奖,有打扰请多保函。\n" + "text": "今天因为Linux被骂, 决定放弃支持 Windows. 而且明天要开始军训了, 将停更若干时间, 遂发此动态, 望不知." + }, + "major": { + "draw": { + "id": 326122895, + "items": [ + { + "height": 1080, + "size": 1005.29, + "src": "http://i0.hdslb.com/bfs/new_dyn/0f6f939334104ddc347566514fa4bfa7645769214.jpg", + "tags": [], + "width": 1440 + } + ] + }, + "type": "MAJOR_TYPE_DRAW" }, - "major": null, "topic": null }, "module_more": { "three_point_items": [ { - "label": "举报", - "type": "THREE_POINT_REPORT" + "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": 5, + "count": 34, "forbidden": false }, "forward": { - "count": 1, + "count": 2, "forbidden": false }, "like": { - "count": 170, + "count": 65, "forbidden": false, - "status": false + "status": true } } }, - "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": { - "draw": { - "id": 210334026, - "items": [ - { - "height": 672, - "size": 134.85938, - "src": "https://i0.hdslb.com/bfs/new_dyn/37c21f8864e47cbeeb7c3e3a66bb250b11357018.jpg", - "tags": [], - "width": 576 - } - ] - }, - "type": "MAJOR_TYPE_DRAW" - }, - "topic": null - } - }, - "type": "DYNAMIC_TYPE_DRAW", - "visible": true - }, - "type": "DYNAMIC_TYPE_FORWARD", + "type": "DYNAMIC_TYPE_DRAW", "visible": true } } } ``` -
\ No newline at end of file +
+ +## 动态赞与转发列表 + +> 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: 对方仅关注了发送者
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' +``` + +
+查看响应示例: + +```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 + } +} +``` + +
+ +## 动态抽奖详情 + +> 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 | 不必要 | | + +
+旧版参数: + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----- | ---- | -------- | ------ | ---- | +| dynamic_id | num | 动态 id | 必要 | | + +
+ +**JSON回复:** + +根对象: + +| 字段名 | 类型 | 内容 | 备注 | +| - | - | - | - | +| code | num | 返回值 | 0: 成功
-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: 未开奖
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' +``` + +
+查看响应示例: + +```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": "" +} +``` + +
diff --git a/docs/live/info.md b/docs/live/info.md index 69d0b28..2106b00 100644 --- a/docs/live/info.md +++ b/docs/live/info.md @@ -92,7 +92,7 @@ | 字段 | 类型 | 内容 | 备注 | |----------|-----|-----|-------------------------------------------| -| name | str | 类型 | v_person: 个人认证(黄)
v_company: 企业认证(蓝) | +| name | str | 类型 | v_person: 个人认证(黄)
v_company: 企业认证(蓝) | | position | num | 位置 | | | value | str | 值 | | | desc | str | 描述 | | @@ -529,6 +529,8 @@ curl -G 'https://api.live.bilibili.com/live_user/v1/Master/info' \ *请求方式: GET* +注: 亦可用于批量获取 + diff --git a/docs/live/message_stream.md b/docs/live/message_stream.md index 436d1be..9533d83 100644 --- a/docs/live/message_stream.md +++ b/docs/live/message_stream.md @@ -4,58 +4,57 @@ > https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo -*请求方式:GET* +*请求方法: GET* -**url参数:** +**URL参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------ | ------ | ---- | | id | num | 直播间真实id | 必要 | | -**json回复:** +**JSON回复:** 根对象: | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
**(其他错误码有待补充)** | +| code | num | 返回值 | 0: 成功
65530: token 错误 (登录错误)
1: 错误
60009: 分区不存在
**(其他错误码有待补充)** | | message | str | 错误信息 | 默认为空 | | ttl | num | 1 | | | data | obj | 信息本体 | | -`data`对象: +`data` 对象: | 字段 | 类型 | 内容 | 备注 | -| ------------------ | ----- | ------------------- | ---- | -| group | str | live | | -| business_id | num | 0 | | -| refresh_row_factor | num | 0.125 | | -| refresh_rate | num | 100 | | -| max_delay | num | 5000 | | -| token | str | 认证秘钥 | | +| ------------------ | ----- | -------------------- | ---- | +| group | str | live | | +| business_id | num | 0 | | +| refresh_row_factor | num | 0.125 | | +| refresh_rate | num | 100 | | +| max_delay | num | 5000 | | +| token | str | 认证秘钥 | | | host_list | array | 信息流服务器节点列表 | | -`host_list`数组中的对象: +`data.host_list[n]` 对象: | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | ---------- | ---- | | host | str | 服务器域名 | | -| port | num | tcp端口 | | -| wss_port | num | wss端口 | | -| ws_port | num | ws端口 | | +| port | num | TCP 端口 | | +| wss_port | num | WSS 端口 | | +| ws_port | num | WS 端口 | | +**示例:** -**示例:** - -获得直播间`22824550`的信息流认证秘钥 +获得直播间 `14047` 的信息流认证秘钥 ```shell curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \ ---data-urlencode 'id=22824550' +--url-query 'id=14047' ```
-查看响应示例: +查看响应示例: ```json { @@ -68,16 +67,16 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \ "refresh_row_factor": 0.125, "refresh_rate": 100, "max_delay": 5000, - "token": "Eac3Lm1JADzny-YnB5MW0MQcd23rw_mgMFZAnu40I-J2ecP2Qj6CH-UqjdfvwiqVEZcEksG1ONSOi1dGzm0wM4FxqA-ZYXtcQyHXPXqxmrx3AmDx8Z5-d4TuKQkaU0zxevH1B-gnu7g8TDtIE4lns4BYlw==", + "token": "IFfrzJxUd-K6mBPLGCpu-Z9QAz1V3KzIxde_-tCzvah05fYgfXjBWyuqRywF8Ov2w-MGQWt7l80pLiZEsfx3OPEDsXSRaJlzihV0hTXYwkiJvRmzMH3JjfAjdzlvI8sytUCrIbezBgbr_grGPd4ENTEknvu165L-ocW_cyql1e-L_EE=", "host_list": [ { - "host": "tx-sh-live-comet-02.chat.bilibili.com", + "host": "hw-sg-live-comet-02.chat.bilibili.com", "port": 2243, "wss_port": 443, "ws_port": 2244 }, { - "host": "tx-bj-live-comet-02.chat.bilibili.com", + "host": "hw-sg-live-comet-01.chat.bilibili.com", "port": 2243, "wss_port": 443, "ws_port": 2244 @@ -95,63 +94,78 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \
-**注:最终URI格式为: host+对应port+"/sub"**,例如以上示例中一个可行的ws连接URI应当为`tx-sh-live-comet-02.chat.bilibili.com:2244/sub` - - ## 数据包格式 -数据包为MQ(Message Queue,消息队列)使用Websocket或TCP连接作为通道,具体格式为头部数据+正文数据 +数据包为 MQ (Message Queue, 消息队列) 使用 WebSocket 或 TCP 连接作为通道, 具体格式为 头部数据 + 正文数据 -操作流程: +**注: 特别的**, WS 与 WSS 连接地址带有路径 `/sub`, 如 `wss://broadcastlv.chat.bilibili.com:443/sub`. -发送认证包->接收认证包回应->接收普通包&(每30秒发送心跳包->接收心跳回应) +**再注:** B 站更新了隐私政策, 连接建立 5 分钟左右, 若该连接认证时传入信息来自未登录用户, 会提示 `为保护用户隐私,未注册登陆用户将无法查看他人昵称`, 随后所有发送弹幕的用户 mid 都为 `0`, 用户名部分也使用 `*` 保护, 参见 [#732](https://github.com/SocialSisterYi/bilibili-API-collect/issues/732) -头部格式: +操作流程 (伪代码): -| 偏移量 | 长度 | 类型 | 含义 | -| ------ | ---- | ------ | ------------------------------------------------------------ | -| 0 | 4 | uint32 | 封包总大小(头部大小+正文大小) | -| 4 | 2 | uint16 | 头部大小(一般为0x0010,16字节) | -| 6 | 2 | uint16 | 协议版本:
0普通包正文不使用压缩
1心跳及认证包正文不使用压缩
2普通包正文使用zlib压缩
3普通包正文使用brotli压缩,解压为一个带头部的协议0普通包 | -| 8 | 4 | uint32 | 操作码(封包类型) | -| 12 | 4 | uint32 | sequence,每次发包时向上递增 | +```javascript +const s = new Socket(uri); +// 认证包 +s.send('verify_hello'); +s.receive('verfiy_reply'); +// 心跳包 +setInterval(() => { + s.send('heartbeat'); + s.receive('heartbeat_reply'); +}, 30000); +// 接收普通包 +while (!s.isclosed()) { + s.receive('normal_package'); +} +``` -操作码: +头部格式: -| 代码 | 含义 | -| ---- | -------------------- | -| 2 | 心跳包 | -| 3 | 心跳包回复(人气值) | -| 5 | 普通包(命令) | -| 7 | 认证包 | -| 8 | 认证包回复 | +| 偏移量 | 长度 | 类型 | 含义 | +| ------ | ---- | ------ | ------------------------------------ | +| 0 | 4 | uint32 | 封包总大小 (头部大小 + 正文大小) | +| 4 | 2 | uint16 | 头部大小 (一般为 0x0010, 即 16 字节) | +| 6 | 2 | uint16 | 协议版本:
0: 普通包 (正文不使用压缩)
1: 心跳及认证包 (正文不使用压缩)
2: 普通包 (正文使用 zlib 压缩)
3: 普通包 (使用 brotli 压缩的多个带文件头的普通包) | +| 8 | 4 | uint32 | 操作码 (封包类型) | +| 12 | 4 | uint32 | sequence, 每次发包时向上递增 | -*普通包可能包含多条命令,每个命令有一个头部,指示该条命令的长度等信息* +操作码: + +| 代码 | 含义 | +| ---- | ------------------- | +| 2 | 心跳包 | +| 3 | 心跳包回复 (人气值) | +| 5 | 普通包 (命令) | +| 7 | 认证包 | +| 8 | 认证包回复 | + +*普通包可能包含多条命令, 每个命令有一个头部, 指示该条命令的长度等信息* ## 数据包 ### 认证包 -方式:(上行) +*方向: 上行* -连接成功后5秒内发送,否则强制断开连接 +注: 连接成功后 5 秒内发送, 否则强制断开连接 -正文: +**JSON正文:** -json格式 +根对象: -| 字段 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------ | ------ | ------------------ | -| uid | num | 用户mid | 非必要 | uid为0即为游客登录 | -| roomid | num | 加入房间的id | 必要 | 直播间真实id | -| protover | num | 协议版本 | 非必要 | 3 | -| platform | str | 平台标识 | 非必要 | "web" | -| type | num | 2 | 非必要 | | -| key | str | 认证秘钥 | 非必要 | | +| 字段 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------ | ------ | --------------------------- | +| uid | num | 用户mid | 非必要 | 0 即为游客登录 | +| roomid | num | 加入房间的id | 必要 | 直播间真实id | +| protover | num | 协议版本 | 非必要 | 3, 与数据包头部协议版本无关 | +| platform | str | 平台标识 | 非必要 | `web` | +| type | num | 2 | 非必要 | | +| key | str | 认证秘钥 | 非必要 | | -示例: +**示例:** -``` +```text 00000000: 0000 00ff 0010 0001 0000 0007 0000 0001 ................ 00000001: 7b22 7569 6422 3a31 3630 3134 3836 3234 {"uid":160148624 00000002: 2c22 726f 6f6d 6964 223a 3232 3630 3831 ,"roomid":226081 @@ -170,81 +184,81 @@ json格式 0000000f: 7061 796e 3479 3071 4268 513d 3d22 7d payn4y0qBhQ=="} ``` - - ### 认证包回复 -方式:(下行) +*方向: 下行* -在认证包发送成功后就会收到 +注: 在认证包发送成功后就会收到 JSON 正文, 若失败则返回 HTTP/0.9 的 403 -json格式 +**JSON正文:** -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| code | num | 返回值 | 0认证成功 | +根对象: -示例: +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | ----------- | +| code | num | 返回值 | 0: 认证成功 | -``` +**示例:** + +```text 00000000: 0000 001a 0010 0001 0000 0008 0000 0001 ................ 00000001: 7b22 636f 6465 223a 307d {"code":0} ``` - - ### 心跳包 -方式:(上行) +*方向: 上行* -30秒左右发送一次,否则60秒后会被强制断开连接 +注: 30 秒左右发送一次, 否则 60 秒后会被强制断开连接 -正文: +**正文:** 可以为空或任意字符 -示例: +**示例:** -``` +```text 00000000: 0000 001f 0010 0001 0000 0002 0000 0001 ................ 00000001: 5b6f 626a 6563 7420 4f62 6a65 6374 5d [object Object] ``` -### 心跳包回复(人气值) +### 心跳包回复 (人气值) -方式:(下行) +*方向: 下行* -在心跳包发送成功后就会收到 +注: 在心跳包发送成功后就会收到 -正文: +**正文:** -正文分为两个部分,第一部分是人气值 [uint32整数,代表房间当前的人气值] +正文分为两个部分 -第二部分是对于心跳包内容的复制,心跳包正文是什么这里就会回应什么。 +- 第一部分: uint32 整数代表的房间当前的人气值 -示例: +- 第二部分: 心跳包正文内容 -``` +**示例:** + +示例房间内人气值为 2466 (0x000009a2) + +```text 00000000: 0000 0014 0010 0001 0000 0003 0000 0000 ................ 00000001: 0000 09a2 5b6f 626a 6563 7420 4f62 6a65 ....[object Obje 00000002: 6374 5d ct] ``` -可见房间内人气值为2466(0x000009a2) - ### 普通包 -方式:(下行) +*方向: 下行* -正文: +**正文:** -正文一般为普通JSON数据。 +一般为普通 JSON 数据 -大多数普通包都经过zlib压缩或brotli压缩。 +大多数普通包都经过 zlib 或 brotli 压缩 -示例: +**示例:** -``` +```text 00000000: 0000 0086 0010 0003 0000 0005 0000 0000 ................ 00000001: 8b38 8000 0000 7200 1000 0000 0000 0500 .8....r......... 00000002: 0000 007b 2263 6d64 223a 2257 4154 4348 ...{"cmd":"WATCH @@ -256,7 +270,7 @@ json格式 00000008: bf87 227d 7d03 .."}}. ``` ---- + +#### 弹幕 (DANMU_MSG) -#### 弹幕 +注: 当收到弹幕时接收到此条消息, 10 进制转 16 进制若位数不足则在左侧补 `0` -当收到弹幕时接收到此条消息 +**JSON消息:** -json格式 +根对象: -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "DANMU_MSG" | 如果是弹幕消息,内容则是"DANMU_MSG" | -| info | array | 这条弹幕的用户、内容与粉丝勋章等各种信息 | 待调查其中每个数据的含义 | +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ----------- | ---- | +| cmd | str | `DANMU_MSG` | | +| dm_v2 | str | 空串? | | +| info | array | 弹幕信息 | 感谢 [#1084](https://github.com/SocialSisterYi/bilibili-API-collect/issues/1084) 补充 | - - - - - -
-查看消息示例: - -``` json -{ - "cmd": "DANMU_MSG", - "info": [ - [ - 0, - 1, - 25, - 16777215, - 1673789362967, - 1673770572, - 0, - "81240bc1", - 0, - 0, - 0, - "", - 0, - "{}", - "{}", - { - "mode": 0, - "show_player_type": 0, - "extra": "{\"send_from_me\":false,\"mode\":0,\"color\":16777215,\"dm_type\":0,\"font_size\":25,\"player_mode\":1,\"show_player_type\":0,\"content\":\"测试文本\",\"user_hash\":\"2166623169\",\"emoticon_unique\":\"\",\"bulge_display\":0,\"recommend_score\":8,\"main_state_dm_color\":\"\",\"objective_state_dm_color\":\"\",\"direction\":0,\"pk_direction\":0,\"quartet_direction\":0,\"anniversary_crowd\":0,\"yeah_space_type\":\"\",\"yeah_space_url\":\"\",\"jump_to_url\":\"\",\"space_type\":\"\",\"space_url\":\"\",\"animation\":{},\"emots\":null}" - }, - { - "activity_identity": "", - "activity_source": 0, - "not_show": 0 - } - ], - "测试文本", - [ - 50500335, - "属官一号", - 0, - 0, - 0, - 10000, - 1, - "" - ], - [ - 5, - "小纸鱼", - "薄海纸鱼", - 706667, - 6126494, - "", - 0, - 12632256, - 12632256, - 12632256, - 0, - 0, - 1837617 - ], - [ - 0, - 0, - 9868950, - ">50000", - 2 - ], - [ - "", - "" - ], - 0, - 0, - null, - { - "ts": 1673789362, - "ct": "A4721FE3" - }, - 0, - 0, - null, - null, - 0, - 21 - ] -} -``` -
- - -#### 连续弹幕消息 - -连续多条相同弹幕时触发 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "DM_INTERACTION" | 如果是进入直播间或关注消息,内容则是"INTERACT_WORD" | -| data | obj | 进入直播间的用户的信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| id | num | 事件ID | | -| status | num | 状态 | | -| type | num | 事件类型 | | -| data | str | 事件数据 | | - -连续发送弹幕事件的data.data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| combo | array | 连续发送弹幕事件信息 | | -| merge_interval | num | 合并弹幕时间间隔 | | -| card_appear_interval | num | 弹窗出现时间间隔 | | -| send_interval | num | 发送时间间隔 | | - -连续发送弹幕事件的data.data.combo字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| id | num | 时间ID | | -| status | num | 状态 | | -| content | str | 重复的弹幕内容 | | -| cnt | num | 重复数量 | | -| guide | str | 标题词 | "他们都在说:" | -| left_duration | num | 左移时长 | | -| fade_duration | num | 淡化时长 | | - -
-查看消息示例: +见下方 JSONC ```json { - '': 6785480089600, - 'status': 4, - 'type': 102, - 'data': '{ - "combo":[{ - "id":6785480089600, - "status":4, - "content":"晚安", - "cnt":3, - "guide":"他们都在说:", - "left_duration":20000, - "fade_duration":60000}], - "merge_interval":1000, - "card_appear_interval":1000, - "send_interval":1000}' + "send_from_me": false, // 是否由该接收消息的用户发送 + "mode": 0, // 弹幕模式 (info[0][1]) + "color": 9920249, // 弹幕颜色 (info[0][3]) + "dm_type": 0, + "font_size": 25, // 弹幕字体大小 (info[0][2]) + "player_mode": 1, + "show_player_type": 0, + "content": "白花300块[热]", // 弹幕文本 (info[1]) + "user_hash": "197700816", + "emoticon_unique": "", + "bulge_display": 0, + "recommend_score": 3, + "main_state_dm_color": "", + "objective_state_dm_color": "", + "direction": 0, // 弹幕方向? + "pk_direction": 0, + "quartet_direction": 0, + "anniversary_crowd": 0, + "yeah_space_type": "", + "yeah_space_url": "", + "jump_to_url": "", + "space_type": "", + "space_url": "", + "animation": {}, + "emots": { // 表情相关信息 (用于文本替换) + "[热]": { + "count": 1, + "descript": "[热]", + "emoji": "[热]", + "emoticon_id": 278, + "emoticon_unique": "emoji_278", + "height": 20, + "url": "http://i0.hdslb.com/bfs/live/6df760280b17a6cbac8c1874d357298f982ba4cf.png", + "width": 20 + } + }, + "is_audited": false, + "id_str": "364b06e3c561af3d5921f1253d66c1d575", + "icon": { + "prefix": { + "type": 1, + "resource": "ChronosWealth_4.png" + } + }, + "show_reply": true, // 显示回复? + "reply_mid": 0, + "reply_uname": "", + "reply_uname_color": "", + "reply_is_mystery": false, + "hit_combo": 0 +} +``` + +`info[0][15].user` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---------- | ---- | +| base | obj | 基本信息 | | +| guard | null | | | +| guard_leader | obj | ? | | +| medal | obj | 粉丝排信息 | 参见 [指定用户的所有粉丝勋章信息](../user/medals.md#指定用户的所有粉丝勋章信息) `data.list[n].uinfo_medal` | +| title | obj | ? | | +| uhead_frame | null | | | +| uid | num | 发送者 mid | | +| wealth | null | | | + +`info[0][15].user.base` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ---------------- | ------- | +| face | str | 发送者头像 URL | | +| is_mystery | bool | 是否是神秘用户? | | +| name | str | 发送者用户名 | | +| name_color | num | 用户名颜色 | 10 进制 | +| name_color_str | num | 字符串表示的颜色 | | +| offical_info | obj | 认证信息 | 参见 [用户空间详细信息](../user/info.md#用户空间详细信息) `data.official` | +| origin_info | obj | 同 `face` `name` | | +| risk_ctrl_info | null | | | + +`info[0][15].user.title` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------- | ---- | ----- | ---- | +| old_title_css_id | str | 空串? | | +| title_css_id | str | 空串? | | + +`info[0][16]` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ---- | ----- | ---- | +| activity_identity | str | 空串? | | +| activity_source | num | 0? | | +| not_show | num | 0? | | + +`info[2]` 数组: + +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ------------- | ---- | +| 0 | num | 发送者 mid | 同 `info[0][15].user.uid` | +| 1 | str | 发送者用户名 | 同 `info[0][15].user.base.name` | +| 2 | num | 0? | | +| 3 | num | 0? | | +| 4 | num | 0? | | +| 5 | num | 用户权限等级? | 参见 [用户空间详细信息](../user/info.md#用户空间详细信息) `data.rank` | +| 6 | num | ? | | + +`info[3]` 数组: + +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ---------------------------------------- | ---- | +| 0 | num | 同 `info[0][15].user.medal.level` | | +| 1 | str | 同 `info[0][15].user.medal.name` | | +| 2 | str | 粉丝牌创建主播名称 | | +| 3 | num | ? | | +| 4 | num | 同 `info[0][15].user.medal.color` | | +| 5 | str | 空串? | | +| 6 | num | 0? | | +| 7 | num | 同 `info[0][15].user.medal.color_border` | | +| 8 | num | 同 `info[0][15].user.medal.color_start` | | +| 9 | num | 同 `info[0][15].user.medal.color_end` | | +| 10 | num | 同 `info[0][15].user.medal.guard_level` | | +| 11 | num | 同 `info[0][15].user.medal.is_light` | | +| 12 | num | 同 `info[0][15].user.medal.ruid` | | + +`info[4]` 数组: + +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ---- | ---- | +| 0 | num | ? | | +| 1 | num | ? | | +| 2 | num | ? | | +| 3 | num | ? | | +| 4 | num | ? | | + +`info[5]` 数组: + +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ----- | ---- | +| 0 | str | 空串? | | +| 1 | str | 空串? | | + +`info[9]` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | --------------- | +| ct | str | ? | 16 进制 | +| ts | num | 发送时间 | UNIX 秒级时间戳 | + +`info[16]` 数组: + +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ---- | ---- | +| 0 | num | ? | | + +**示例:** + +
+查看消息示例(带注释): + +```jsonc +{ + "cmd": "DANMU_MSG", + "dm_v2": "", + "info": [ + [ + 0, + 1, + 25, //字体大小 + 9920249, //弹幕颜色代码(10进制)#975ef9 + 1723979200649, + -1312973962, + 0, + "0bc8acd0", + 0, + 0, + 0, + "", + 0, + "{}", + "{}", + { + "extra": "{\"send_from_me\":false,\"mode\":0,\"color\":9920249,\"dm_type\":0,\"font_size\":25,\"player_mode\":1,\"show_player_type\":0,\"content\":\"白花300块[热]\",\"user_hash\":\"197700816\",\"emoticon_unique\":\"\",\"bulge_display\":0,\"recommend_score\":3,\"main_state_dm_color\":\"\",\"objective_state_dm_color\":\"\",\"direction\":0,\"pk_direction\":0,\"quartet_direction\":0,\"anniversary_crowd\":0,\"yeah_space_type\":\"\",\"yeah_space_url\":\"\",\"jump_to_url\":\"\",\"space_type\":\"\",\"space_url\":\"\",\"animation\":{},\"emots\":{\"[热]\":{\"count\":1,\"descript\":\"[热]\",\"emoji\":\"[热]\",\"emoticon_id\":278,\"emoticon_unique\":\"emoji_278\",\"height\":20,\"url\":\"http://i0.hdslb.com/bfs/live/6df760280b17a6cbac8c1874d357298f982ba4cf.png\",\"width\":20}},\"is_audited\":false,\"id_str\":\"364b06e3c561af3d5921f1253d66c1d575\",\"icon\":{\"prefix\":{\"type\":1,\"resource\":\"ChronosWealth_4.png\"}},\"show_reply\":true,\"reply_mid\":0,\"reply_uname\":\"\",\"reply_uname_color\":\"\",\"reply_is_mystery\":false,\"hit_combo\":0}", + "mode": 0, + "show_player_type": 0, + "user": { + "base": { + "face": "https://i1.hdslb.com/bfs/face/5a9bb9cac3afbb58347c808ae76aaa41ca967d07.jpg", //弹幕发送用户头像 + "is_mystery": false, + "name": "tim1997", //弹幕发送用户名称 + "name_color": 0, + "name_color_str": "", + "official_info": { + "desc": "", + "role": 0, + "title": "", + "type": -1 + }, + "origin_info": { + "face": "https://i1.hdslb.com/bfs/face/5a9bb9cac3afbb58347c808ae76aaa41ca967d07.jpg", + "name": "tim1997" + }, + "risk_ctrl_info": null + }, + "guard": null, + "guard_leader": { + "is_guard_leader": false + }, + "medal": { + "color": 2951253, //粉丝牌颜色(10进制)#2d0855 + "color_border": 16771156, //粉丝牌边框颜色(10进制)#ffe854 + "color_end": 10329087, //粉丝牌渐变颜色结束(10进制)#9d9bff + "color_start": 2951253, //粉丝牌渐变颜色开始(10进制)#2d0855 + "guard_icon": "https://i0.hdslb.com/bfs/live/1d16bf0fcc3b1b768d1179d60f1fdbabe6ab4489.png", //粉丝牌左边的图标 + "guard_level": 1, //类型 1.总督 2.提督 3,舰长 + "honor_icon": "", + "id": 1279130, + "is_light": 1, + "level": 29, //粉丝牌等级 + "name": "果咩吖", //粉丝牌名称 + "ruid": 3546569288714792, //粉丝牌创建者UID + "score": 50427312, + "typ": 0, + "user_receive_count": 0, + "v2_medal_color_border": "#D47AFFFF", //粉丝牌边框颜色(APP) + "v2_medal_color_end": "#9660E5CC", //粉丝牌渐变颜色结束(APP) + "v2_medal_color_level": "#6C00A099", //粉丝牌右边等级数字颜色(APP) + "v2_medal_color_start": "#9660E5CC", //粉丝牌渐变颜色开始(APP) + "v2_medal_color_text": "#FFFFFFFF" //粉丝牌右边圆形颜色(APP) + }, + "title": { + "old_title_css_id": "", + "title_css_id": "" + }, + "uhead_frame": null, + "uid": 6088969, //弹幕发送用户UID + "wealth": null + } + }, + { + "activity_identity": "", + "activity_source": 0, + "not_show": 0 + }, + 0 + ], + "白花300块[热]", //弹幕内容 + [ + 6088969, //同info[0][15].user.uid + "tim1997", //同info[0][15].user.base.name + 0, + 0, + 0, + 10000, + 1, + "" + ], + [ + 29, //同info[0][15].user.medal.level + "果咩吖", //同info[0][15].user.medal.name + "果宝Official", //粉丝牌创建主播名称 + 31180317, + 2951253, //同info[0][15].user.medal.color + "", + 0, + 16771156, //同info[0][15].user.medal.color_border + 2951253, //同info[0][15].user.medal.color_start + 10329087, //同info[0][15].user.medal.color_end + 1, //同info[0][15].user.medal.guard_level + 1, //同info[0][15].user.medal.is_light + 3546569288714792 //同info[0][15].user.medal.ruid + ], + [ + 39, + 0, + 10512625, + 42523, + 2 + ], + [ + "", + "" + ], + 0, + 0, + null, + { + "ct": "AFFF4206", + "ts": 1723979200 //时间戳(秒级) + }, + 0, + 0, + null, + null, + 0, + 1040, + [ + 49 + ], + null + ] } ```
-#### 进场或关注消息 +#### 连续弹幕消息 (DM_INTERACTION) -有用户进入直播间或关注主播时触发 +注: 连续多条相同弹幕时触发 -json格式 +**JSON正文:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------------- | ---- | +| cmd | str | `DM_INTERACTION` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ---- | +| id | num | 事件 ID | | +| status | num | 状态 | | +| type | num | 事件类型 | | +| data | str | 事件数据 | | + +`data.data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------------- | ----- | -------------------- | ---- | +| combo | array | 连续发送弹幕事件信息 | | +| merge_interval | num | 合并弹幕时间间隔 | | +| card_appear_interval | num | 弹窗出现时间间隔 | | +| send_interval | num | 发送时间间隔 | | + +`data.data.combo[n]` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------------- | ------------- | +| id | num | 标识 ID | | +| status | num | 状态 | | +| content | str | 重复的弹幕内容 | | +| cnt | num | 重复数量 | | +| guide | str | 标题词 | "他们都在说:" | +| left_duration | num | 左移时长 | | +| fade_duration | num | 淡化时长 | | + +**示例:** + +
+查看正文示例: + +```json +{ + "cmd": "DM_INTERACTION", + "data": { + "id": 6785480089600, + "status": 4, + "type": 102, + "data": { + "combo": [ + { + "id": 6785480089600, + "status": 4, + "content": "晚安", + "cnt": 3, + "guide": "他们都在说:", + "left_duration": 20000, + "fade_duration": 60000 + } + ], + "merge_interval": 1000, + "card_appear_interval": 1000, + "send_interval": 1000 + } + } +} +``` + +
+ +#### 进场或关注消息 (INTERACT_WORD) + +注: 有用户进入直播间或关注主播时触发 + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "INTERACT_WORD" | 如果是进入直播间或关注消息,内容则是"INTERACT_WORD" | +| cmd | str | `INTERACT_WORD` | | | data | obj | 进入直播间的用户的信息 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | @@ -551,79 +794,84 @@ data字段 | uname | str | 用户名称 | | | uname_color | str | 用户名称颜色 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "INTERACT_WORD", - "data": { - "contribution": { - "grade": 0 - }, - "dmscore": 4, - "fans_medal": { - "anchor_roomid": 890976, - "guard_level": 0, - "icon_id": 0, - "is_lighted": 0, - "medal_color": 6067854, - "medal_color_border": 12632256, - "medal_color_end": 12632256, - "medal_color_start": 12632256, - "medal_level": 1, - "medal_name": "小豆皮", - "score": 134, - "special": "", - "target_id": 6574487 - }, - "identities": [ - 1 - ], - "is_spread": 0, - "msg_type": 1, - "roomid": 24143902, - "score": 1644563948936, - "spread_desc": "", - "spread_info": "", - "tail_icon": 0, - "timestamp": 1644563948, - "trigger_time": 1644563947876475000, - "uid": 335979315, - "uname": "TIM_Init", - "uname_color": "" - } + "cmd": "INTERACT_WORD", + "data": { + "contribution": { + "grade": 0 + }, + "dmscore": 4, + "fans_medal": { + "anchor_roomid": 890976, + "guard_level": 0, + "icon_id": 0, + "is_lighted": 0, + "medal_color": 6067854, + "medal_color_border": 12632256, + "medal_color_end": 12632256, + "medal_color_start": 12632256, + "medal_level": 1, + "medal_name": "小豆皮", + "score": 134, + "special": "", + "target_id": 6574487 + }, + "identities": [ + 1 + ], + "is_spread": 0, + "msg_type": 1, + "roomid": 24143902, + "score": 1644563948936, + "spread_desc": "", + "spread_info": "", + "tail_icon": 0, + "timestamp": 1644563948, + "trigger_time": 1644563947876475000, + "uid": 335979315, + "uname": "TIM_Init", + "uname_color": "" + } } ```
-#### 上舰通知 +#### 上舰通知 (GUARD_BUY) -json格式 +注: 当有用户购买 舰长 / 提督 / 总督 时 -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- |------------------|----------------------------------| -| cmd | str | "GUARD_BUY" | 用户购买舰长 / 提督 / 总督,内容则是"GUARD_BUY" | -| data | obj | 上舰人uid & 昵称、上舰信息 | | +**JSON消息:** -data字段 +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| cmd | str | `GUARD_BUY` | | +| data | obj | 信息本体 | | + +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|--------------------------|-----| | uid | num | 用户ID | | | username | str | 用户名称 | | -| guard_level | num | 大航海等级 | 1: 总督 2: 提督 3:舰长 | +| guard_level | num | 大航海等级 | 1: 总督
2: 提督
3:舰长 | | num | num | 数量 | | -| price | num | 待调查 | | +| price | num | 原金瓜子标价 | 即 CNY\*1000 | | gift_id | num | 礼物id | | | gift_name | str | 礼物名称 | | | start_time | num | 待调查 | | | end_time | num | 待调查 | | -
+**示例:** -查看消息示例: +
+查看消息示例: ```json { @@ -644,16 +892,20 @@ data字段
-#### 用户庆祝消息 +#### 用户庆祝消息 (USER_TOAST_MSG) -json格式 +注: 用户购买 舰长 / 提督 / 总督 后的庆祝消息, 内容包含用户陪伴天数 -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- |------------------|----------------------------------| -| cmd | str | "USER_TOAST_MSG" | 用户购买舰长 / 提督 / 总督后的庆祝消息,内容包含用户陪伴天数 | -| data | obj | 上舰人uid & 昵称、上舰信息 | | +**JSON消息:** -data字段 +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------------- | ---- | +| cmd | str | `USER_TOAST_MSG` | | +| data | obj | 信息本体 | | + +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|--------------------------|-----| @@ -666,13 +918,13 @@ data字段 | group_name | str | 待调查 | | | group_op_type | num | 待调查 | | | group_role_name | str | 待调查 | | -| guard_level | num | 大航海等级 | 1: 总督 2: 提督 3:舰长 | +| guard_level | num | 大航海等级 | 1: 总督
2:
提督
3:舰长 | | is_group | num | 待调查 | | | is_show | num | 待调查 | | | num | num | 上舰个数 | | | op_type | num | 待调查 | | | payflow_id | str | 待调查 | | -| price | num | 价格 | +| price | num | 实际金瓜子标价 | 即 CNY\*1000 | | role_name | str | 身份名称 | | | room_effect_id | num | 待调查 | | | room_group_effect_id | num | 待调查 | | @@ -685,55 +937,62 @@ data字段 | user_show | bool | 待调查 | | | username | str | 上舰人用户名 | | -
+**示例:** -查看消息示例: +
+查看消息示例: ```json { - 'anchor_show': True, - 'color': '#00D1F1', - 'dmscore': 90, - 'effect_id': 397, - 'end_time': 1702580687, - 'face_effect_id': 44, - 'gift_id': 10003, - 'group_name': '', - 'group_op_type': 0, - 'group_role_name': '', - 'guard_level': 3, - 'is_group': 0, - 'is_show': 0, - 'num': 1, - 'op_type': 1, - 'payflow_id':'2312150304155852173446521', - 'price': 138000, - 'role_name': '舰长', - 'room_effect_id': 590, - 'room_group_effect_id': 1337, - 'start_time': 1702580687, - 'svga_block': 0, - 'target_guard_count': 146, - 'toast_msg': '<%无光之日%> 在主播Mia米娅-的直播间开通了舰长,今天是TA陪伴主播的第1天', - 'uid': 79667344, - 'unit': '月', - 'user_show': True, - 'username': '无光之日'} + "cmd": "USER_TOAST_MSG", + "data": { + "anchor_show": true, + "color": "#00D1F1", + "dmscore": 90, + "effect_id": 397, + "end_time": 1702580687, + "face_effect_id": 44, + "gift_id": 10003, + "group_name": "", + "group_op_type": 0, + "group_role_name": "", + "guard_level": 3, + "is_group": 0, + "is_show": 0, + "num": 1, + "op_type": 1, + "payflow_id": "2312150304155852173446521", + "price": 138000, + "role_name": "舰长", + "room_effect_id": 590, + "room_group_effect_id": 1337, + "start_time": 1702580687, + "svga_block": 0, + "target_guard_count": 146, + "toast_msg": "<%无光之日%> 在主播Mia米娅-的直播间开通了舰长,今天是TA陪伴主播的第1天", + "uid": 79667344, + "unit": "月", + "user_show": true, + "username": "无光之日" + } +} ```
-#### 醒目留言 +#### 醒目留言 (SUPER_CHAT_MESSAGE) -json格式 +**JSON消息:** -| 字段 | 类型 | 内容 | 备注 | -| ---- |-----|---------------------|-----------------------------------| -| cmd | str | "SUPER_CHAT_MESSAGE" | 用户发送醒目留言,内容则是"SUPER_CHAT_MESSAGE" | -| data | obj | 醒目留言内容、发送者信息等 | | -| roomid | num | 直播间房间号(非短号 | | +根对象: -data字段 +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | --------------------- | ---- | +| cmd | str | `SUPER_CHAT_MESSAGE` | | +| data | obj | 信息本体 | | +| roomid | num | 直播间房间号 (非短号) | | + +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|----------------| --------- | @@ -748,14 +1007,14 @@ data字段 | dmscore | num | 待调查 | | | end_time | num | 待调查 | | | gift | obj | 礼物信息 | | -| id | num | 待调查 | | +| id | num | 醒目留言 ID | | | is_ranked | num | 待调查 | | | is_send_audit | num | 待调查 | | | medal_info | obj | SC发送用户佩戴的粉丝牌信息 | | | message | str | sc内容 | | | message_font_color | str | SC文本颜色 | | | message_trans | str | 机翻sc内容 | | -| price | num | sc金额 | | +| price | num | sc金额 | 为 CNY 价值 | | rate | num | 待调查 | | | start_time | num | 待调查 | | | time | num | sc持续时间 | | @@ -765,7 +1024,7 @@ data字段 | uid | num | 发送用户uid | | | user_info | obj | 发送用户信息 | | -gift字段 +`data.gift` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|------|------| @@ -773,13 +1032,13 @@ gift字段 | gift_name | str | 礼物名称 | 一般均为"醒目留言" | | num | num | 数量 | | -medal_info字段 +`data.medal_info` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|-------------|------| | anchor_roomid | num | 房间号 | 包含短号 | | anchor_uname | str | 主播昵称 | | -| guard_level | num | 大航海等级 | 1: 总督 2: 提督 3:舰长 | +| guard_level | num | 大航海等级 | 1: 总督
2: 提督
3: 舰长 | | icon_id | num | 待调查 | | | is_lighted | num | 待调查 | | | medal_color | str | 待调查 | | @@ -789,15 +1048,15 @@ medal_info字段 | medal_level | num | 粉丝牌等级 | | | medal_name | str | 粉丝牌名称 | | | special | str | 待调查 | | -| target_id | num | 粉丝牌对应的主播uid | | +| target_id | num | 粉丝牌对应的主播mid | | -user_info字段 +`data.user_info` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- |-----|-------|------| | face | num | 用户头像 | | | face_frame | num | 头像边框 | | -| guard_level | num | 大航海等级 | 1: 总督 2: 提督 3:舰长 | +| guard_level | num | 大航海等级 | 1: 总督
2: 提督
3: 舰长 | | is_main_vip | num | 待调查 | | | is_svip | num | 待调查 | | | is_vip | num | 待调查 | | @@ -808,9 +1067,10 @@ user_info字段 | uname | str | 用户名称 | | | user_level | num | 待调查 | | -
+**示例:** -查看消息示例: +
+查看消息示例: ```json { @@ -881,16 +1141,122 @@ user_info字段
-#### 送礼 +#### 醒目留言日语 (SUPER_CHAT_MESSAGE_JPN) -json格式 +基本同 [醒目留言 (SUPER_CHAT_MESSAGE)](#醒目留言-super_chat_message), 但多了 `message_jpn` 字段 -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "SEND_GIFT" | 投喂礼物等,内容则是"SEND_GIFT" | -| data | obj | 礼物投喂人、礼物信息、礼物数量等 | | +**示例:** -data字段 +
+查看消息示例: + +```json +{ + "cmd": "SUPER_CHAT_MESSAGE_JPN", + "data": { + "id": "3790747", + "uid": "394060741", + "price": 30, + "rate": 1000, + "message": "棉花!!转盘中了武器后,上号30抽3武器,救命!!!", + "message_jpn": "", + "is_ranked": 1, + "background_image": "https://i0.hdslb.com/bfs/live/a712efa5c6ebc67bafbe8352d3e74b820a00c13e.png", + "background_color": "#EDF5FF", + "background_icon": "", + "background_price_color": "#7497CD", + "background_bottom_color": "#2A60B2", + "ts": 1650363318, + "token": "24655ABF", + "medal_info": { + "icon_id": 0, + "target_id": 1871001, + "special": "", + "anchor_uname": "棉花大哥哥", + "anchor_roomid": 103, + "medal_level": 24, + "medal_name": "棉花花", + "medal_color": "#1a544b" + }, + "user_info": { + "uname": "改了名真的能中吗", + "face": "http://i1.hdslb.com/bfs/face/e2391f132cd981fb70468a8ce9418513e959eb10.jpg", + "face_frame": "https://i0.hdslb.com/bfs/live/80f732943cc3367029df65e267960d56736a82ee.png", + "guard_level": 3, + "user_level": 11, + "level_color": "#61c05a", + "is_vip": 0, + "is_svip": 0, + "is_main_vip": 1, + "title": "0", + "manager": 0 + }, + "time": 60, + "start_time": 1650363318, + "end_time": 1650363378, + "gift": { + "num": 1, + "gift_id": 12000, + "gift_name": "醒目留言" + } + }, + "roomid": "34348" +} +``` + +
+ +#### 醒目留言删除 (SUPER_CHAT_MESSAGE_DELETE) + + + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `SUPER_CHAT_MESSAGE_DELETE` | | +| data | obj | 消息本体 | | +| roomid | num | 直播间号 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| ids | arr | 待删除的醒目留言 ID 列表 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "SUPER_CHAT_MESSAGE_DELETE", + "data": { + "ids": [ + 3897503 + ] + }, + "roomid": 23708804 +} +``` + +#### 送礼 (SEND_GIFT) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| cmd | str | `SEND_GIFT` | | +| data | obj | 消息本体 | | + +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | @@ -901,7 +1267,7 @@ data字段 | biz_source | str | 待调查 | | | blind_gift | | 待调查 | | | broadcast_id | num | 待调查 | | -| coin_type | str | 待调查 | | +| coin_type | str | 标识金银瓜子礼物对应是否付费? | | | combo_resources_id | num | 待调查 | | | combo_send | | 待调查 | | | comber_stay_time | num | 待调查 | | @@ -929,9 +1295,9 @@ data字段 | magnification | num | 待调查 | | | medal_info | obj | 礼物投喂者粉丝奖牌信息 | | | name_color | str | 待调查 | | -| num | number | 该次投喂的礼物数量 | | +| num | num | 该次投喂的礼物数量 | | | original_gift_name | str | 待调查 | | -| price | num | 待调查 | | +| price | num | 价值 | | | rcost | num | 待调查 | | | receive_user_info | obj | 礼物接收者信息,一般是主播 | | | remain | num | 待调查 | | @@ -947,11 +1313,11 @@ data字段 | tid | num | 礼物发送时的时间戳,以及后面9位未知数字 | 似乎与rnd字段相同 | | timestamp | num | 礼物发送时的时间戳 | | | top_list | | 待调查 | | -| total_coin | num | 待调查 | | +| total_coin | num | 实际金银瓜子总价值 | 不是总等于 num*price | | uid | num | 礼物投喂者的UID | | | uname | str | 礼物投喂者的名称 | | -batch_combo_send字段 +`data.batch_combo_send` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | @@ -966,7 +1332,7 @@ batch_combo_send字段 | uid | num | 礼物投喂者的UID | | | uname | str | 礼物投喂者的名称 | | -medal_info字段 +`data.medal_info` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | @@ -984,135 +1350,144 @@ medal_info字段 | special | str | 待调查 | | | target_id | num | 待调查 | | -receive_user_info字段 +`data.receive_user_info` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | | uid | num | 礼物接收者的UID | 一般为主播的UID | | uname | str | 礼物接收者的名称 | 一般为主播的名称 | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "SEND_GIFT", - "data": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", - "batch_combo_send": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", - "batch_combo_num": 1, - "blind_gift": null, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 1, - "send_master": null, - "uid": 510149209, - "uname": "12138额83121" - }, - "beatId": "", - "biz_source": "live", - "blind_gift": null, - "broadcast_id": 0, - "coin_type": "gold", - "combo_resources_id": 1, - "combo_send": { - "action": "投喂", - "combo_id": "gift:combo_id:510149209:36047134:31036:1673622464.8434", - "combo_num": 1, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 1, - "send_master": null, - "uid": 510149209, - "uname": "12138额83121" - }, - "combo_stay_time": 3, - "combo_total_coin": 100, - "crit_prob": 0, - "demarcation": 1, - "discount_price": 100, - "dmscore": 8, - "draw": 0, - "effect": 0, - "effect_block": 0, - "face": "https://i1.hdslb.com/bfs/face/fb79103e8b33547023e2010030b6889bba2b49bf.jpg", - "face_effect_id": 0, - "face_effect_type": 0, - "float_sc_resource_id": 0, - "giftId": 31036, - "giftName": "小花花", - "giftType": 0, - "gold": 0, - "guard_level": 0, - "is_first": true, - "is_join_receiver": false, - "is_naming": false, - "is_special_batch": 0, - "magnification": 1, - "medal_info": { - "anchor_roomid": 0, - "anchor_uname": "", - "guard_level": 0, - "icon_id": 0, - "is_lighted": 0, - "medal_color": 0, - "medal_color_border": 0, - "medal_color_end": 0, - "medal_color_start": 0, - "medal_level": 0, - "medal_name": "", - "special": "", - "target_id": 0 - }, - "name_color": "", - "num": 1, - "original_gift_name": "", - "price": 100, - "rcost": 164536872, - "receive_user_info": { - "uid": 36047134, - "uname": "小霖QL" - }, - "remain": 0, - "rnd": "1673622464121900003", - "send_master": null, - "silver": 0, - "super": 0, - "super_batch_gift_num": 1, - "super_gift_num": 1, - "svga_block": 0, - "switch": true, - "tag_image": "", - "tid": "1673622464121900003", - "timestamp": 1673622464, - "top_list": null, - "total_coin": 100, - "uid": 510149209, - "uname": "12138额83121" - } + "cmd": "SEND_GIFT", + "data": { + "action": "投喂", + "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", + "batch_combo_send": { + "action": "投喂", + "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", + "batch_combo_num": 1, + "blind_gift": null, + "gift_id": 31036, + "gift_name": "小花花", + "gift_num": 1, + "send_master": null, + "uid": 510149209, + "uname": "12138额83121" + }, + "beatId": "", + "biz_source": "live", + "blind_gift": null, + "broadcast_id": 0, + "coin_type": "gold", + "combo_resources_id": 1, + "combo_send": { + "action": "投喂", + "combo_id": "gift:combo_id:510149209:36047134:31036:1673622464.8434", + "combo_num": 1, + "gift_id": 31036, + "gift_name": "小花花", + "gift_num": 1, + "send_master": null, + "uid": 510149209, + "uname": "12138额83121" + }, + "combo_stay_time": 3, + "combo_total_coin": 100, + "crit_prob": 0, + "demarcation": 1, + "discount_price": 100, + "dmscore": 8, + "draw": 0, + "effect": 0, + "effect_block": 0, + "face": "https://i1.hdslb.com/bfs/face/fb79103e8b33547023e2010030b6889bba2b49bf.jpg", + "face_effect_id": 0, + "face_effect_type": 0, + "float_sc_resource_id": 0, + "giftId": 31036, + "giftName": "小花花", + "giftType": 0, + "gold": 0, + "guard_level": 0, + "is_first": true, + "is_join_receiver": false, + "is_naming": false, + "is_special_batch": 0, + "magnification": 1, + "medal_info": { + "anchor_roomid": 0, + "anchor_uname": "", + "guard_level": 0, + "icon_id": 0, + "is_lighted": 0, + "medal_color": 0, + "medal_color_border": 0, + "medal_color_end": 0, + "medal_color_start": 0, + "medal_level": 0, + "medal_name": "", + "special": "", + "target_id": 0 + }, + "name_color": "", + "num": 1, + "original_gift_name": "", + "price": 100, + "rcost": 164536872, + "receive_user_info": { + "uid": 36047134, + "uname": "小霖QL" + }, + "remain": 0, + "rnd": "1673622464121900003", + "send_master": null, + "silver": 0, + "super": 0, + "super_batch_gift_num": 1, + "super_gift_num": 1, + "svga_block": 0, + "switch": true, + "tag_image": "", + "tid": "1673622464121900003", + "timestamp": 1673622464, + "top_list": null, + "total_coin": 100, + "uid": 510149209, + "uname": "12138额83121" + } } ``` +
-#### 礼物星球点亮 +#### 礼物星球点亮 (GIFT_STAR_PROCESS) -json格式 +注: 主播的礼物星球其一点亮之后 + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "GIFT_STAR_PROCESS" | 主播的礼物星球其一点亮之后,则内容为"GIFT_STAR_PROCESS" | -| data | obj | 消息文本 | | +| cmd | str | `GIFT_STAR_PROCESS` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | | status | num | 待调查 | | | tip | str | 点亮礼物星球的消息文本 | | +**示例:** +
查看消息示例: @@ -1125,18 +1500,21 @@ data字段 } } ``` +
-#### 礼物连击 +#### 礼物连击 (COMBO_SEND) -json格式 +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "COMBO_SEND" | | -| data | obj | 礼物投喂者、礼物信息等 | | +| cmd | str | `COMBO_SEND` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | @@ -1163,62 +1541,120 @@ data字段 | uid | num | 礼物投喂者的UID | | | uname | str | 礼物投喂者的名称 | | -receive_user_info字段 +`data.receive_user_info` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | -------- | ------ | --------- | | uid | number | 礼物接收者的UID | 一般为主播的UID | | uname | string | 礼物接收者的名称 | 一般为主播的名称 | +**示例:** +
查看消息示例: ```json { - "cmd": "COMBO_SEND", - "data": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:3493090830584635:29857468:31036:1673774515.6190", - "batch_combo_num": 2, - "combo_id": "gift:combo_id:3493090830584635:29857468:31036:1673774515.6180", - "combo_num": 2, - "combo_total_coin": 200, - "dmscore": 112, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 0, - "is_join_receiver": false, - "is_naming": false, - "is_show": 1, - "medal_info": { - "anchor_roomid": 0, - "anchor_uname": "", - "guard_level": 0, - "icon_id": 0, - "is_lighted": 1, - "medal_color": 6067854, - "medal_color_border": 6067854, - "medal_color_end": 6067854, - "medal_color_start": 6067854, - "medal_level": 3, - "medal_name": "爱珞珞", - "special": "", - "target_id": 3493076559465366 - }, - "name_color": "", - "r_uname": "露萌不要雨草", - "receive_user_info": { - "uid": 29857468, - "uname": "露萌不要雨草" - }, - "ruid": 29857468, - "send_master": null, - "total_num": 2, - "uid": 3493090830584635, - "uname": "DOC-Neo" - } + "cmd": "COMBO_SEND", + "data": { + "action": "投喂", + "batch_combo_id": "batch:gift:combo_id:3493090830584635:29857468:31036:1673774515.6190", + "batch_combo_num": 2, + "combo_id": "gift:combo_id:3493090830584635:29857468:31036:1673774515.6180", + "combo_num": 2, + "combo_total_coin": 200, + "dmscore": 112, + "gift_id": 31036, + "gift_name": "小花花", + "gift_num": 0, + "is_join_receiver": false, + "is_naming": false, + "is_show": 1, + "medal_info": { + "anchor_roomid": 0, + "anchor_uname": "", + "guard_level": 0, + "icon_id": 0, + "is_lighted": 1, + "medal_color": 6067854, + "medal_color_border": 6067854, + "medal_color_end": 6067854, + "medal_color_start": 6067854, + "medal_level": 3, + "medal_name": "爱珞珞", + "special": "", + "target_id": 3493076559465366 + }, + "name_color": "", + "r_uname": "露萌不要雨草", + "receive_user_info": { + "uid": 29857468, + "uname": "露萌不要雨草" + }, + "ruid": 29857468, + "send_master": null, + "total_num": 2, + "uid": 3493090830584635, + "uname": "DOC-Neo" + } } ``` + +
+ +#### 特殊礼物 (SPECIAL_GIFT) + + + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------- | ---- | +| cmd | str | `SPECIAL_GIFT` | | +| data | obj | 信息本体 | | + +`data` 对象: + +以 数字 为键, JSON Object 为值的表 + +`data['?']` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------ | ---- | +| action | str | 操作? | | +| content | str | 内容 | | +| hadJoin | num | 是否加入? | | +| id | str | ? | 字符串表示的数字 | +| num | str | 数量 | | +| storm_gif | str | GIF 动画 URL | | +| time | str | 持续时间? | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "SPECIAL_GIFT", + "data": { + "39": { + "action": "start", + "content": "可爱即正义~~", + "hadJoin": 0, + "id": "3306976431489", + "num": 1, + "storm_gif": "http://static.hdslb.com/live-static/live-room/images/gift-section/mobilegift/2/jiezou.gif?2017011901", + "time": 90 + } + } +} +``` +
-#### 通知消息 +#### 通知消息 (NOTICE_MSG) -json格式 +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "NOTICE_MSG" | 通知消息,内容则是"NOTICE_MSG" | +| cmd | str | `NOTICE_MSG` | | | id | num | 待调查 | | -| full | obj | 待调查 | | -| half | obj | 待调查 | | -| side | obj | 待调查 | | +| name | str | 通知名 | | +| full | obj | 完整显示信息? | | +| half | obj | 半部显示信息? | | | +| side | obj | 边缘显示信息? | | | roomid | num | 目标直播间短号 | | | real_roomid | num | 目标直播间真实ID | | | msg_common | str | 显示的消息内容 | | | msg_self | str | 消息内容本身 | 剔除额外文本 | -| link_rel | str | 通知消息跳转的URL | | +| link_url | str | 通知消息跳转的URL | | | msg_type | num | 待调查 | | | shield_uid | num | 待调查 | | | business_id | str | 待调查 | | @@ -1250,194 +1689,244 @@ json格式 | marquee_id | str | 待调查 | | | notice_type | num | 待调查 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "NOTICE_MSG", - "id": 804, - "name": "人气榜第一名", - "full": { - "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "head_icon_fa": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", - "head_icon_fan": 1, - "tail_icon_fan": 4, - "background": "#FFE6BD", - "color": "#9D5412", - "highlight": "#FF6933", - "time": 20 - }, - "half": { - "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "background": "#FFE6BD", - "color": "#9D5412", - "highlight": "#FF6933", - "time": 0 - }, - "side": { - "head_icon": "", - "background": "", - "color": "", - "highlight": "", - "border": "" - }, - "roomid": 23919301, - "real_roomid": 23919301, - "msg_common": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!点击传送查看精彩内容!", - "msg_self": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!", - "link_url": "https://live.bilibili.com/23919301?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003", - "msg_type": 1, - "shield_uid": -1, - "business_id": "", - "scatter": { - "min": 0, - "max": 0 - }, - "marquee_id": "", - "notice_type": 0 + "cmd": "NOTICE_MSG", + "id": 804, + "name": "人气榜第一名", + "full": { + "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", + "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", + "head_icon_fa": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", + "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", + "head_icon_fan": 1, + "tail_icon_fan": 4, + "background": "#FFE6BD", + "color": "#9D5412", + "highlight": "#FF6933", + "time": 20 + }, + "half": { + "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", + "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", + "background": "#FFE6BD", + "color": "#9D5412", + "highlight": "#FF6933", + "time": 0 + }, + "side": { + "head_icon": "", + "background": "", + "color": "", + "highlight": "", + "border": "" + }, + "roomid": 23919301, + "real_roomid": 23919301, + "msg_common": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!点击传送查看精彩内容!", + "msg_self": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!", + "link_url": "https://live.bilibili.com/23919301?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003", + "msg_type": 1, + "shield_uid": -1, + "business_id": "", + "scatter": { + "min": 0, + "max": 0 + }, + "marquee_id": "", + "notice_type": 0 } ``` + ```json { - "cmd": "NOTICE_MSG", - "id": 814, - "name": "幻影飞船专用", - "full": { - "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "head_icon_fa": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", - "head_icon_fan": 1, - "tail_icon_fan": 4, - "background": "#F09153", - "color": "#FFFFFF", - "highlight": "#FFE600", - "time": 15 - }, - "half": { - "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon": "", - "background": "#F09153", - "color": "#FFFFFFFF", - "highlight": "#FFE600", - "time": 15 - }, - "side": { - "head_icon": "", - "background": "", - "color": "", - "highlight": "", - "border": "" - }, - "roomid": 25207004, - "real_roomid": 25207004, - "msg_common": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", - "msg_self": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", - "link_url": "https://live.bilibili.com/25207004?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003&live_lottery_type=1", - "msg_type": 2, - "shield_uid": -1, - "business_id": "32356", - "scatter": { - "min": 0, - "max": 0 - }, - "marquee_id": "", - "notice_type": 0 + "cmd": "NOTICE_MSG", + "id": 814, + "name": "幻影飞船专用", + "full": { + "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", + "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", + "head_icon_fa": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", + "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", + "head_icon_fan": 1, + "tail_icon_fan": 4, + "background": "#F09153", + "color": "#FFFFFF", + "highlight": "#FFE600", + "time": 15 + }, + "half": { + "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", + "tail_icon": "", + "background": "#F09153", + "color": "#FFFFFFFF", + "highlight": "#FFE600", + "time": 15 + }, + "side": { + "head_icon": "", + "background": "", + "color": "", + "highlight": "", + "border": "" + }, + "roomid": 25207004, + "real_roomid": 25207004, + "msg_common": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", + "msg_self": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", + "link_url": "https://live.bilibili.com/25207004?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003&live_lottery_type=1", + "msg_type": 2, + "shield_uid": -1, + "business_id": "32356", + "scatter": { + "min": 0, + "max": 0 + }, + "marquee_id": "", + "notice_type": 0 } ```
-#### 主播准备中 +#### 主播准备中 (PREPARING) -json格式 +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "PREPARING" | | -| round | num | 轮播状态:
1正在轮播
0未轮播 | | +| cmd | str | `PREPARING` | | +| round | num | 轮播状态:
1正在轮播
0未轮播 | | | roomid | num | 直播间ID | 未知是真实ID还是短号 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "PREPARING", - "round": 1, - "roomid": "8618057" + "cmd": "PREPARING", + "round": 1, + "roomid": "8618057" } ```
-#### 直播开始 +#### 直播开始 (LIVE) +**JSON消息:** -#### 主播信息更新 +根对象: -json格式 +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `LIVE` | | +| live_key | str | ? | | +| voice_background | str | ? | | +| sub_session_key | str | ? | | +| live_platform | str | 开播平台? | | +| live_model | num | ? | | +| live_time | num | 开播时间 | UNIX 秒级时间戳 | +| roomid | num | 直播间号 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "LIVE", + "live_key": "234304209915761953", + "voice_background": "", + "sub_session_key": "234304209915761953sub_time:1651036923", + "live_platform": "pc", + "live_model": 0, + "live_time": 1651036923, + "roomid": 23614753 +} +``` + +#### 主播信息更新 (ROOM_REAL_TIME_MESSAGE_UPDATE) + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "ROOM_REAL_TIME_MESSAGE_UPDATE" | | -| data | obj | 房间ID、主播粉丝数等 | | +| cmd | str | `ROOM_REAL_TIME_MESSAGE_UPDATE` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| roomid | num | 直播间ID | 未知是真实ID还是短号 | | +| roomid | num | 直播间ID | 未知是真实ID还是短号 | | fans | num | 主播当前粉丝数 | | | red_notice | num | 待调查 | | | fans_club | num | 主播粉丝团人数 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "ROOM_REAL_TIME_MESSAGE_UPDATE", - "data": { - "roomid": 8618057, - "fans": 136, - "red_notice": -1, - "fans_club": 8 - } + "cmd": "ROOM_REAL_TIME_MESSAGE_UPDATE", + "data": { + "roomid": 8618057, + "fans": 136, + "red_notice": -1, + "fans_club": 8 + } } ``` +
-#### 直播间高能榜 +#### 直播间高能榜 (ONLINE_RANK_V2) -json格式 +注: 直播间高能用户数据刷新 + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_V2" | 直播间高能用户数据刷新,内容则是"ONLINE_RANK_V2" | +| cmd | str | `ONLINE_RANK_V2` | | | data | obj | 直播间高能用户数据 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | list | array | 在直播间高能用户中的用户信息 | | | rank_type | str | 待调查 | | -list数组中的对象 +`data.list[n]` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| uid | num | 用户UID | | -| face | str | 用户头像URL | | +| uid | num | 用户 mid | | +| face | str | 用户头像 URL | | | score | str | 该用户的贡献值 | | | uname | str | 用户名称 | | | rank | num | 该用户在高能榜中的排名 | | -| guard_level | num | 待调查 | | +| guard_level | num | 大航海等级? | | + +**示例:**
查看消息示例: @@ -1476,132 +1965,333 @@ list数组中的对象 } } ``` - +
+#### 直播间高能用户数量 (ONLINE_RANK_COUNT) -#### 直播间高能用户数量 +**JSON消息:** -json格式 +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_COUNT" | 直播间高能用户数,内容是"ONLINE_RANK_COUNT" | -| data | obj | 直播间高能用户数量 | | +| cmd | str | `ONLINE_RANK_COUNT` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | count | num | 直播间高能用户数量 | | +**示例:**
-查看消息示例: +查看消息示例: ```json { - "cmd": "ONLINE_RANK_COUNT", - "data": { - "count": 4 - } + "cmd": "ONLINE_RANK_COUNT", + "data": { + "count": 4 + } } ```
-#### 用户到达直播间高能榜前三名的消息 +#### 用户到达直播间高能榜前三名的消息 (ONLINE_RANK_TOP3) +**JSON消息:** -json格式 +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_TOP3" | | -| data | obj | 消息内容、高能榜排名等 | | +| cmd | str | `ONLINE_RANK_TOP3` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | dmscore | num | 待调查 | | | list | array | 消息内容和高能榜排名 | | -list数组中的对象 +`data.list[n]` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | msg | str | 消息内容 | | | rank | num | 该用户的高能榜排名 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "ONLINE_RANK_TOP3", - "data": { - "dmscore": 112, - "list": [ - { - "msg": "恭喜 <%你干嘛哈哈哎哟%> 成为高能用户", - "rank": 1 - } - ] - } + "cmd": "ONLINE_RANK_TOP3", + "data": { + "dmscore": 112, + "list": [ + { + "msg": "恭喜 <%你干嘛哈哈哎哟%> 成为高能用户", + "rank": 1 + } + ] + } } ```
-#### 直播间在人气榜的排名改变 +#### 直播间在人气榜的排名改变 (POPULAR_RANK_CHANGED) +**JSON消息:** -json格式 +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "POPULAR_RANK_CHANGED" | | +| cmd | str | `POPULAR_RANK_CHANGED` | | | data | obj | 直播间的人气榜排名信息 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| uid | num | 主播UID | | +| uid | num | 主播 mid | | | rank | num | 人气榜排名 | | | countdown | num | 人气榜下轮结算剩余时长 | | | timestamp | num | 触发时的Unix时间戳 | | -| timestamp | str | 待调查 | | +| cache_key | str | 待调查 | | + +**示例:**
查看消息示例: ```json { - 'cmd': 'POPULAR_RANK_CHANGED', - 'data': { - 'uid': 780791, - 'rank': 36, - 'countdown': 1927, - 'timestamp': 1702578474, - 'cache_key': 'rank_change:91a4e81ba3034ae894d61e432aa13081' - } + "cmd": "POPULAR_RANK_CHANGED", + "data": { + "uid": 780791, + "rank": 36, + "countdown": 1927, + "timestamp": 1702578474, + "cache_key": "rank_change:91a4e81ba3034ae894d61e432aa13081" + } } ```
-#### 直播间用户点赞 +#### 直播间限时热门榜排名改变 (HOT_RANK_CHANGED) -json格式 +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `HOT_RANK_CHANGED` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| rank | num | 排名 | | +| trend | num | 趋势? | | +| countdown | num | 剩余时间? | | +| timestamp | num | 当前时间? | UNIX 秒级时间戳 | +| web_url | str | 排行榜 URL | | +| live_url | str | 排行榜 URL | | +| blink_url | str | 排行榜 URL | | +| live_link_url | str | 排行榜 URL | | +| pc_link_url | str | 排行榜 URL | | +| icon | str | 图标 URL | | +| area_name | str | 分区名称 | | +| rank_desc | str | 空? | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "HOT_RANK_CHANGED", + "data": { + "rank": 31, + "trend": 1, + "countdown": 1440, + "timestamp": 1651037760, + "web_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=2&area_id=9&parent_area_id=9&second_area_id=0", + "live_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=1&area_id=9&parent_area_id=9&second_area_id=0&is_live_half_webview=1&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,12,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,12,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "blink_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=3&area_id=9&parent_area_id=9&second_area_id=0&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "live_link_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=5&area_id=9&parent_area_id=9&second_area_id=0&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "pc_link_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=4&is_live_half_webview=1&area_id=9&parent_area_id=9&second_area_id=0&pc_ui=338,465,f4eefa,0", + "icon": "https://i0.hdslb.com/bfs/live/63217712edb588864b2c714225992e7f46b0b917.png", + "area_name": "虚拟", + "rank_desc": "" + } +} +``` + +
+ +#### 当前直播间限时热门榜排名改变V2 (HOT_RANK_CHANGED_V2) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `HOT_RANK_CHANGED_V2` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| rank | num | 排名 | | +| trend | num | 趋势? | | +| countdown | num | 剩余时间? | | +| timestamp | num | 当前时间? | UNIX 秒级时间戳 | +| web_url | str | 排行榜 URL | | +| live_url | str | 排行榜 URL | | +| blink_url | str | 排行榜 URL | | +| live_link_url | str | 排行榜 URL | | +| pc_link_url | str | 排行榜 URL | | +| icon | str | 图标 URL | | +| area_name | str | 分区名称 | | +| rank_desc | str | 排行榜说明 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "HOT_RANK_CHANGED_V2", + "data": { + "rank": 31, + "trend": 0, + "countdown": 1440, + "timestamp": 1651037760, + "web_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=2&area_id=9&parent_area_id=9&second_area_id=371", + "live_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=1&area_id=9&parent_area_id=9&second_area_id=371&is_live_half_webview=1&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,12,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,12,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "blink_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=3&area_id=9&parent_area_id=9&second_area_id=371&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "live_link_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=5&area_id=9&parent_area_id=9&second_area_id=371&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0", + "pc_link_url": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=4&is_live_half_webview=1&area_id=9&parent_area_id=9&second_area_id=371&pc_ui=338,465,f4eefa,0", + "icon": "https://i0.hdslb.com/bfs/live/cb2e160ac4f562b347bb5ae6e635688ebc69580f.png", + "area_name": "虚拟主播", + "rank_desc": "虚拟主播top50" + } +} +``` + +
+ +#### 限时热门榜上榜信息 (HOT_RANK_SETTLEMENT) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `HOT_RANK_SETTLEMENT` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| area_name | str | 分区名称 | | +| cache_key | str | ? | | +| dm_msg | str | 弹幕提示信息 | | +| dmscore | num | ? | | +| face | str | 主播头像 URL | | +| icon | str | 图标 URL | | +| rank | num | 排名 | | +| timestamp | num | 时间 | UNIX 秒级时间戳 | +| uname | str | 主播用户名 | | +| url | str | 排行榜 URL | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "HOT_RANK_SETTLEMENT", + "data": { + "area_name": "虚拟主播", + "cache_key": "2f8baf923a6b7df5a045df6c7181984c", + "dm_msg": "恭喜主播 <% 白黑卡扣 %> 荣登限时热门榜虚拟主播榜top9! 即将获得热门流量推荐哦!", + "dmscore": 144, + "face": "http://i0.hdslb.com/bfs/face/ddfcd696213e07884ce227c6ba6d23a007a08c02.jpg", + "icon": "https://i0.hdslb.com/bfs/live/63217712edb588864b2c714225992e7f46b0b917.png", + "rank": 9, + "timestamp": 1651041000, + "uname": "白黑卡扣", + "url": "https://live.bilibili.com/p/html/live-app-hotrank/result.html?is_live_half_webview=1&hybrid_half_ui=1,5,250,200,f4eefa,0,30,0,0,0;2,5,250,200,f4eefa,0,30,0,0,0;3,5,250,200,f4eefa,0,30,0,0,0;4,5,250,200,f4eefa,0,30,0,0,0;5,5,250,200,f4eefa,0,30,0,0,0;6,5,250,200,f4eefa,0,30,0,0,0;7,5,250,200,f4eefa,0,30,0,0,0;8,5,250,200,f4eefa,0,30,0,0,0&areaId=9&cache_key=2f8baf923a6b7df5a045df6c7181984c" + } +} +``` + +
+ +#### 限时热门榜上榜信息V2 (HOT_RANK_SETTLEMENT_V2) + +**JSON消息:** + +基本同 [限时热门榜上榜信息](#限时热门榜上榜信息-hot_rank_settlement), 但没有 `data.dmscore` 字段 + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "HOT_RANK_SETTLEMENT_V2", + "data": { + "rank": 9, + "uname": "白黑卡扣", + "face": "http://i0.hdslb.com/bfs/face/ddfcd696213e07884ce227c6ba6d23a007a08c02.jpg", + "timestamp": 1651040700, + "icon": "https://i0.hdslb.com/bfs/live/cb2e160ac4f562b347bb5ae6e635688ebc69580f.png", + "area_name": "虚拟主播", + "url": "https://live.bilibili.com/p/html/live-app-hotrank/result.html?is_live_half_webview=1&hybrid_half_ui=1,5,250,200,f4eefa,0,30,0,0,0;2,5,250,200,f4eefa,0,30,0,0,0;3,5,250,200,f4eefa,0,30,0,0,0;4,5,250,200,f4eefa,0,30,0,0,0;5,5,250,200,f4eefa,0,30,0,0,0;6,5,250,200,f4eefa,0,30,0,0,0;7,5,250,200,f4eefa,0,30,0,0,0;8,5,250,200,f4eefa,0,30,0,0,0&areaId=371&cache_key=693b7b029b66976a399cf4e3485d265a", + "cache_key": "693b7b029b66976a399cf4e3485d265a", + "dm_msg": "恭喜主播 <% 白黑卡扣 %> 荣登限时热门榜虚拟主播榜top9! 即将获得热门流量推荐哦!" + } +} +``` + +
+ +#### 直播间用户点赞 (LIKE_INFO_V3_CLICK) + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "LIKE_INFO_V3_CLICK" | 若直播间被赞,则内容是"LIKE_INFO_V3_CLICK" | -| data | obj | 点赞的用户的信息 | | +| cmd | str | `LIKE_INFO_V3_CLICK` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | @@ -1617,87 +2307,97 @@ data字段 | contribution_info | obj | 待调查 | | | dmscore | num | 待调查 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "LIKE_INFO_V3_CLICK", - "data": { - "show_area": 0, - "msg_type": 6, - "like_icon": "https://i0.hdslb.com/bfs/live/23678e3d90402bea6a65251b3e728044c21b1f0f.png", - "uid": 32174213, - "like_text": "为主播点赞了", - "uname": "MeiDngS", - "uname_color": "", - "identities": [ - 1 - ], - "fans_medal": { - "target_id": 0, - "medal_level": 0, - "medal_name": "", - "medal_color": 0, - "medal_color_start": 12632256, - "medal_color_end": 12632256, - "medal_color_border": 12632256, - "is_lighted": 0, - "guard_level": 0, - "special": "", - "icon_id": 0, - "anchor_roomid": 0, - "score": 0 - }, - "contribution_info": { - "grade": 0 - }, - "dmscore": 20 - } + "cmd": "LIKE_INFO_V3_CLICK", + "data": { + "show_area": 0, + "msg_type": 6, + "like_icon": "https://i0.hdslb.com/bfs/live/23678e3d90402bea6a65251b3e728044c21b1f0f.png", + "uid": 32174213, + "like_text": "为主播点赞了", + "uname": "MeiDngS", + "uname_color": "", + "identities": [ + 1 + ], + "fans_medal": { + "target_id": 0, + "medal_level": 0, + "medal_name": "", + "medal_color": 0, + "medal_color_start": 12632256, + "medal_color_end": 12632256, + "medal_color_border": 12632256, + "is_lighted": 0, + "guard_level": 0, + "special": "", + "icon_id": 0, + "anchor_roomid": 0, + "score": 0 + }, + "contribution_info": { + "grade": 0 + }, + "dmscore": 20 + } } ```
-#### 直播间点赞数 +#### 直播间点赞数更新 (LIKE_INFO_V3_UPDATE) -json格式 +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "LIKE_INFO_V3_UPDATE" | 若直播间点赞数更新,则内容是"LIKE_INFO_V3_UPDATE" | +| cmd | str | `LIKE_INFO_V3_UPDATE` | | | data | obj | 直播间点赞数 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | click_count | num | 直播间点赞数 | | +**示例:** +
查看消息示例: ```json { - "cmd": "LIKE_INFO_V3_UPDATE", - "data": { - "click_count": 3227 - } + "cmd": "LIKE_INFO_V3_UPDATE", + "data": { + "click_count": 3227 + } } ```
-#### 直播间发红包弹幕 +#### 直播间发红包弹幕 (POPULARITY_RED_POCKET_START) -json格式 +注: 开始抽取红包 + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_START" | | -| data | obj | 送红包的老板的信息、里面的礼物信息 | | +| cmd | str | `POPULARITY_RED_POCKET_START` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | @@ -1718,10 +2418,10 @@ data字段 | user_status | num | 用户参与状态,但是不知道是哪个用户 | 1已参与
2未参与 | | awards | array | 红包内包含的礼物的信息 | | | lot_config_id | num | 待调查 | | -| total_price | num | 红包总价格 | | +| total_price | num | 内含抽取奖品金瓜子总价值 | 目前红包的 20% 会直接交给主播, 所以 20 电池 (2 CNY) 对应 2000 金瓜子的 80% 是 1600 金瓜子 | | wait_num | num | 待调查 | | -awards数组中的对象 +`data.awards[n]` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | @@ -1730,418 +2430,470 @@ awards数组中的对象 | gift_pic | str | 礼物图标URL | | | num | num | 该礼物的数量 | | +**示例:**
查看消息示例: - + ```json { - "cmd": "POPULARITY_RED_POCKET_START", - "data": { - "lot_id": 8445764, - "sender_uid": 38554435, - "sender_name": "我的0019", - "sender_face": "https://i1.hdslb.com/bfs/face/282c3055de94c74d69094fad91a56f9ed73a270a.jpg", - "join_requirement": 1, - "danmu": "点点红包,关注主播抽礼物~", - "current_time": 1673684632, - "start_time": 1673684631, - "end_time": 1673684811, - "last_time": 180, - "remove_time": 1673684826, - "replace_time": 1673684821, - "lot_status": 1, - "h5_url": "https://live.bilibili.com/p/html/live-app-red-envelope/popularity.html?is_live_half_webview=1&hybrid_half_ui=1,5,100p,100p,000000,0,50,0,0,1;2,5,100p,100p,000000,0,50,0,0,1;3,5,100p,100p,000000,0,50,0,0,1;4,5,100p,100p,000000,0,50,0,0,1;5,5,100p,100p,000000,0,50,0,0,1;6,5,100p,100p,000000,0,50,0,0,1;7,5,100p,100p,000000,0,50,0,0,1;8,5,100p,100p,000000,0,50,0,0,1\&hybrid_rotate_d=1&hybrid_biz=popularityRedPacket&lotteryId=8445764", - "user_status": 2, - "awards": [ - { - "gift_id": 31212, - "gift_name": "打call", - "gift_pic": "https://s1.hdslb.com/bfs/live/461be640f60788c1d159ec8d6c5d5cf1ef3d1830.png", - "num": 2 - }, - { - "gift_id": 31214, - "gift_name": "牛哇", - "gift_pic": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png", - "num": 3 - }, - { - "gift_id": 31216, - "gift_name": "i了i了", - "gift_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", - "num": 3 - } - ], - "lot_config_id": 3, - "total_price": 1600, - "wait_num": 0 - } + "cmd": "POPULARITY_RED_POCKET_START", + "data": { + "lot_id": 2062329, + "sender_uid": 181851309, + "sender_name": "毒瘤老肥仔", + "sender_face": "http://i0.hdslb.com/bfs/face/fed3871b01976ddd35fd3f772ffc2d4949f1391d.jpg", + "join_requirement": 1, + "danmu": "老板大气!点点红包抽礼物!", + "current_time": 1650425344, + "start_time": 1650425343, + "end_time": 1650425523, + "last_time": 180, + "remove_time": 1650425538, + "replace_time": 1650425533, + "lot_status": 1, + "h5_url": "https://live.bilibili.com/p/html/live-app-red-envelope/popularity.html?is_live_half_webview=1&hybrid_half_ui=1,5,100p,100p,000000,0,50,0,0,1;2,5,100p,100p,000000,0,50,0,0,1;3,5,100p,100p,000000,0,50,0,0,1;4,5,100p,100p,000000,0,50,0,0,1;5,5,100p,100p,000000,0,50,0,0,1;6,5,100p,100p,000000,0,50,0,0,1;7,5,100p,100p,000000,0,50,0,0,1;8,5,100p,100p,000000,0,50,0,0,1&hybrid_rotate_d=1&hybrid_biz=popularityRedPacket&lotteryId=2062329", + "user_status": 2, + "awards": [ + { + "gift_id": 31212, + "gift_name": "打call", + "gift_pic": "https://s1.hdslb.com/bfs/live/f75291a0e267425c41e1ce31b5ffd6bfedc6f0b6.png", + "num": 2 + }, + { + "gift_id": 31214, + "gift_name": "牛哇", + "gift_pic": "https://s1.hdslb.com/bfs/live/b8a38b4bd3be120becddfb92650786f00dffad48.png", + "num": 3 + }, + { + "gift_id": 31216, + "gift_name": "i了i了", + "gift_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", + "num": 3 + } + ], + "lot_config_id": 3, + "total_price": 1600, + "wait_num": 0 + } } ```
- -#### 直播间红包 +#### 直播间红包 (POPULARITY_RED_POCKET_NEW) -json格式 +注: 与 [直播间发红包弹幕](#直播间发红包弹幕-popularity_red_pocket_start) 不同, 那个是发红包的弹幕信息, 这个则和 [送礼](#送礼-send_gift) 的信息相似, 但也有前者的一些字段 -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_NEW" | 与“直播间发红包弹幕”不同
那个是发红包的弹幕信息
这个则和“送礼”的信息相似,但也有前者的一些字段 | -| data | obj | 发送者信息和红包(礼物)信息 | | +**JSON消息:** -data字段 +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------------------- | ---- | +| cmd | str | `POPULARITY_RED_POCKET_NEW` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ------------ | ---- | +| lot_id | num | 红包 ID | | +| start_time | num | 开抢时间 | UNIX 秒级时间戳 | +| current_time | num | 当前时间 | UNIX 秒级时间戳 | +| wait_num | num | 0? | | +| uname | str | 发送者用户名 | | +| uid | num | 发送者的 mid | | +| action | str | 礼物操作 | | +| num | num | 礼物数量 | | +| gift_name | str | `红包` | | +| gift_id | num | 礼物 ID? | | +| price | num | 电池标价 | | +| name_color | str | 用户名颜色 | | +| medal_info | obj | 发送者粉丝牌 | | -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| lot_id | num | 发送的红包的ID | | -| start_time | num | 开始抢红包的Unix时间戳 | | -| current_time | num | 服务器发送数据包的Unix时间戳 | | -| wait_num | num | 待调查 | | -| uname | str | 发送者的名称 | | -| uid | num | 发送者的UID | | -| action | str | 礼物操作 | | -| num | num | 礼物数量 | | -| gift_name | str | "红包" | | -| gift_id | num | 礼物ID | | -| price | num | 待调查 | | -| name_color | str | 发送者的名称的颜色 | | -| medal_info | obj | 发送者的粉丝勋章信息 | | - -
-查看消息示例: +查看消息示例: ```json { - "cmd": "POPULARITY_RED_POCKET_NEW", - "data": { - "lot_id": 8445764, - "start_time": 1673684631, - "current_time": 1673684631, - "wait_num": 0, - "uname": "我的0019", - "uid": 38554435, - "action": "送出", - "num": 1, - "gift_name": "红包", - "gift_id": 13000, - "price": 20, - "name_color": "", - "medal_info": { - "target_id": 400963649, - "special": "", - "icon_id": 0, - "anchor_uname": "", - "anchor_roomid": 0, - "medal_level": 21, - "medal_name": "憨憨酥", - "medal_color": 1725515, - "medal_color_start": 12632256, - "medal_color_end": 12632256, - "medal_color_border": 12632256, - "is_lighted": 0, - "guard_level": 0 - } + "cmd": "POPULARITY_RED_POCKET_NEW", + "data": { + "lot_id": 2062329, + "start_time": 1650425343, + "current_time": 1650425343, + "wait_num": 0, + "uname": "毒瘤老肥仔", + "uid": 181851309, + "action": "送出", + "num": 1, + "gift_name": "红包", + "gift_id": 13000, + "price": 20, + "name_color": "#00D1F1", + "medal_info": { + "target_id": 11909915, + "special": "", + "icon_id": 0, + "anchor_uname": "", + "anchor_roomid": 0, + "medal_level": 22, + "medal_name": "伊克拉", + "medal_color": 1725515, + "medal_color_start": 1725515, + "medal_color_end": 5414290, + "medal_color_border": 6809855, + "is_lighted": 1, + "guard_level": 3 } + } } ``` +
+#### 直播间抢到红包的用户 (POPULARITY_RED_POCKET_WINNER_LIST) -#### 直播间抢到红包的用户 +注: 红包中奖列表 -json格式 +**JSON消息:** -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_WINNER_LIST" | | -| data | obj | 抢到红包的用户信息、红包内的礼物信息 | | +根对象: -data字段 +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------------------------- | ---- | +| cmd | str | `POPULARITY_RED_POCKET_WINNER_LIST` | | +| data | obj | 信息本体 | | -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| lot_id | num | 该红包的ID | | -| total_num | num | 该红包内所有礼物的总数 | | -| winner_info | array | 抢到红包的用户的信息
抢到的礼物ID等 | | -| awards | obj | 该红包内的礼物信息 | | -| version | num | 待调查 | | +`data` 对象: -winner_info数组中的数组 +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | -------- | ---- | +| lot_id | num | 红包 ID | | +| total_num | num | 礼物总数 | | +| winner_info | array | 中奖信息 | | +| awards | obj | 礼物信息 | | +| version | num | | | -| 索引 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| 0 | num | 该抢到红包的用户的UID | | -| 1 | str | 该抢到红包的用户的名称 | | -| 2 | num | 待调查 | | -| 3 | num | 该用户抢到的礼物的ID | | +`data.winner_info` 数组: -awards字段 +| 项 | 类型 | 内容 | 备注 | +| -- | ----- | ------------ | ---- | +| 0 | array | 中奖者 1 | | +| …… | array | …… | | +| n | array | 中奖者 (n+1) | | -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| 礼物ID | obj | 礼物信息 | | -| ... | obj | | | +`data.winner_info[n]` 数组: -礼物ID 对象 +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ---------------------- | ---- | +| 0 | num | 该抢到红包的用户的 mid | | +| 1 | str | 该抢到红包的用户的名称 | | +| 2 | num | bag_id? | | +| 3 | num | 该用户抢到的礼物的 ID | | -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| award_type | num | 待调查 | | -| award_name | str | 该礼物的名称 | | -| award_pic | str | 该礼物的图标URL | | -| award_big_pic | str | 该礼物的高分辨率图标URL | | -| award_price | num | 待调查 | | +`data.awards` 对象: + +以 礼物 ID 为键, JSON Object 为值的表 + +`data.awards['?']` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------ | ---- | +| award_type | num | 奖品类型? | | +| award_name | str | 礼物名称 | | +| award_pic | str | 礼物图标 URL | | +| award_big_pic | str | 礼物大图 URL | | +| award_price | num | 礼物价值 | |
-查看消息示例: +查看消息示例: ```json { - "cmd": "POPULARITY_RED_POCKET_WINNER_LIST", - "data": { - "lot_id": 8445764, - "total_num": 8, - "winner_info": [ - [ - 38554435, - "我的0019", - 4581509, - 31212 - ], - [ - 516174930, - "云来海遛鸟大爷", - 4606389, - 31212 - ] - ], - "awards": { - "31212": { - "award_type": 1, - "award_name": "打call", - "award_pic": "https://s1.hdslb.com/bfs/live/461be640f60788c1d159ec8d6c5d5cf1ef3d1830.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/9e6521c57f24c7149c054d265818d4b82059f2ef.png", - "award_price": 500 - }, - "31214": { - "award_type": 1, - "award_name": "牛哇", - "award_pic": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/3b74c117b4f265edcea261bc5608a58d3a7c300a.png", - "award_price": 100 - }, - "31216": { - "award_type": 1, - "award_name": "i了i了", - "award_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/cfb9c3d9bdd2c25c95b7d859ebaa590ca9362adb.png", - "award_price": 100 - } - }, - "version": 1 - } + "cmd": "POPULARITY_RED_POCKET_WINNER_LIST", + "data": { + "lot_id": 8445764, + "total_num": 8, + "winner_info": [ + [ + 38554435, + "我的0019", + 4581509, + 31212 + ], + [ + 516174930, + "云来海遛鸟大爷", + 4606389, + 31212 + ] + ], + "awards": { + "31212": { + "award_type": 1, + "award_name": "打call", + "award_pic": "https://s1.hdslb.com/bfs/live/461be640f60788c1d159ec8d6c5d5cf1ef3d1830.png", + "award_big_pic": "https://i0.hdslb.com/bfs/live/9e6521c57f24c7149c054d265818d4b82059f2ef.png", + "award_price": 500 + }, + "31214": { + "award_type": 1, + "award_name": "牛哇", + "award_pic": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png", + "award_big_pic": "https://i0.hdslb.com/bfs/live/3b74c117b4f265edcea261bc5608a58d3a7c300a.png", + "award_price": 100 + }, + "31216": { + "award_type": 1, + "award_name": "i了i了", + "award_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", + "award_big_pic": "https://i0.hdslb.com/bfs/live/cfb9c3d9bdd2c25c95b7d859ebaa590ca9362adb.png", + "award_price": 100 + } + }, + "version": 1 + } } ``` +
+#### 直播间看过人数 (WATCHED_CHANGE) +注: 当前直播历史观众数量, 可替代人气 -#### 直播间看过人数 +**正文:** -该数据包的正文中,前19字节的信息未知。 +数据包的正文, 前19字节的信息未知: -前19字节信息示例: -``` +```text 00000001: 8b38 8000 0000 7200 1000 0000 0000 0500 .8....r......... 00000002: 0000 00 ... ``` + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------------- | ---- | +| cmd | str | `WATCHED_CHANGE` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------- | ---- | +| num | num | 看过人数 | | +| text_small | str | 显示文字 (小) | | +| text_large | str | 显示文字 (大) | | + +**示例:** + +
+查看消息示例: -json格式 +```json +{ + "cmd": "WATCHED_CHANGE", + "data": { + "num": 17903, + "text_small": "1.7万", + "text_large": "1.7万人看过" + } +} +``` -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "WATCHED_CHANGE" | 若直播间看过人数更新,则内容是"WATCHED_CHANGE" | -| data | obj | 直播间看过人数 | | +
-data字段 +#### 用户进场特效 (ENTRY_EFFECT) -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| num | num | | | -| text_small | str | | | -| text_large | str | | | +注: 有进场特效的用户进入直播间 + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------- | ---- | +| cmd | str | `ENTRY_EFFECT` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------------- | ----- | ---------------- | ---- | +| id | num | ? | | +| uid | num | 进场用户 mid | | +| target_id | num | 主播 mid? | | +| mock_effect | num | ? | | +| face | str | 进场用户头像 URL | | +| privilege_type | num | ? | | +| copy_writing | str | 进场欢迎文本 | | +| copy_color | str | 进场欢迎文本颜色 | 16 进制 | +| highlight_color | str | 高亮颜色? | 16 进制 | +| priority | num | 优先级? | | +| basemap_url | str | 进场特效背景 URL | APP 端 | +| show_avatar | num | 是否显示用户头像 | 1: 显示
0: 不显示 | +| web_basemap_url | str | 进场特效背景 URL | 网页端 | +| web_effective_time | num | 进场特效生存时间 | 网页端 | +| web_effect_close | num | ? | | +| web_close_time | num | ? | | +| business | num | ? | | +| copy_writing_v2 | str | 进场欢迎文本 | APP 端? | +| icon_list | array | 空? | | +| max_delay_time | num | 最大等待时间? | | +| trigger_time | num | 触发时间戳 | UNIX 纳秒时间戳 | +| identities | num | 标识符? | | +| effect_silent_time | num | ? | | +| effective_time_new | num | ? | | +| web_dynamic_url_webp | str | ? | | +| web_dynamic_url_apng | str | ? | | +| mobile_dynamic_url_webp | str | ? | | + +**示例:**
查看消息示例: ```json { - "cmd": "WATCHED_CHANGE", - "data": { - "num": 17903, - "text_small": "1.7万", - "text_large": "1.7万人看过" - } + "cmd": "ENTRY_EFFECT", + "data": { + "id": 4, + "uid": 489893482, + "target_id": 27717502, + "mock_effect": 0, + "face": "https://i0.hdslb.com/bfs/face/member/noface.jpg", + "privilege_type": 3, + "copy_writing": "欢迎舰长 <%天使雨晰%> 进入直播间", + "copy_color": "#ffffff", + "highlight_color": "#E6FF00", + "priority": 1, + "basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", + "show_avatar": 1, + "effective_time": 2, + "web_basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", + "web_effective_time": 2, + "web_effect_close": 0, + "web_close_time": 0, + "business": 1, + "copy_writing_v2": "欢迎舰长 <%天使雨晰%> 进入直播间", + "icon_list": [], + "max_delay_time": 7, + "trigger_time": 1673625604373633300, + "identities": 6, + "effect_silent_time": 0, + "effective_time_new": 0, + "web_dynamic_url_webp": "", + "web_dynamic_url_apng": "", + "mobile_dynamic_url_webp": "" + } } ```
-#### 用户进场特效 +#### 全屏特效 (FULL_SCREEN_SPECIAL_EFFECT) -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ENTRY_EFFECT" | 有进场特效的用户进入直播间,则内容是"ENTRY_EFFECT" | -| data | obj | 进场用户、进场特效信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| id | num | 待调查 | | -| uid | num | 进场用户的UID | | -| target_id | num | 主播的UID? | | -| mock_effect | num | 待调查 | | -| face | str | 进场用户的头像URL | | -| privilege_type | num | 待调查 | | -| copy_writing | str | 进场欢迎文本 | | -| copy_color | str | 进场欢迎文本的十六进制颜色值 | | -| highlight_color | str | 待调查 | | -| priority | num | 待调查 | | -| basemap_url | str | 进场特效背景图片URL | APP端使用该URL | -| show_avatar | num | 是否显示用户头像 | 1显示
0不显示 | -| web_basemap_url | str | 进场特效背景图片URL | 网页端使用该URL | -| web_effective_time | num | 进场特效生存时间 | 网页端 | -| web_effect_close | num | 待调查 | | -| web_close_time | num | 待调查 | | -| business | num | 待调查 | | -| copy_writing_v2 | str | 进场欢迎文本的复制? | | -| icon_list | array | 待调查 | | -| max_delay_time | num | 待调查 | | -| trigger_time | num | 触发的Unix时间戳,以及后面9位未知数字 | | -| identities | num | 待调查 | | -| effect_silent_time | num | 待调查 | | -| effective_time_new | num | 待调查 | | -| web_dynamic_url_webp | str | 待调查 | | -| web_dynamic_url_apng | str | 待调查 | | -| mobile_dynamic_url_webp | str | 待调查 | | +**示例:**
-查看消息示例: +查看响应示例: + +```json +{ + "cmd": "FULL_SCREEN_SPECIAL_EFFECT", + "data": { + "type": 2, + "ids": [ + 514 + ], + "queue": 2, + "platform_in": [ + 1, + 2 + ] + } +} +``` + +
+ +#### 直播间在所属分区的排名改变 (AREA_RANK_CHANGED) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | --------- | +| cmd | str | `AREA_RANK_CHANGED` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------------ | ---- | +| conf_id | num | 配置 ID? | | +| rank_name | str | 排行榜名称 | | +| uid | num | 主播 mid | | +| rank | num | 直播间在分区的排名 | 没有上榜则为 0 | +| icon_url_blue | str | 蓝色排名图标 URL | | +| icon_url_pink | str | 粉色排名图标 URL | | +| icon_url_grey | str | 灰色排名图标 URL | | +| action_type | num | ? | | +| timestamp | num | 当前时间 | UNIX 秒级时间戳 | +| msg_id | str | ? | 一串 UUID | +| jump_url_link | str | 排行榜跳转链接 | | +| jump_url_pc | str | 排行榜跳转链接 | | +| jump_url_pink | str | 排行榜跳转链接 | | +| jump_url_web | str | 排行榜跳转链接 | | + +**示例:** + +
+查看消息示例: ```json { - "cmd": "ENTRY_EFFECT", - "data": { - "id": 4, - "uid": 489893482, - "target_id": 27717502, - "mock_effect": 0, - "face": "https://i0.hdslb.com/bfs/face/member/noface.jpg", - "privilege_type": 3, - "copy_writing": "欢迎舰长 <%天使雨晰%> 进入直播间", - "copy_color": "#ffffff", - "highlight_color": "#E6FF00", - "priority": 1, - "basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", - "show_avatar": 1, - "effective_time": 2, - "web_basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", - "web_effective_time": 2, - "web_effect_close": 0, - "web_close_time": 0, - "business": 1, - "copy_writing_v2": "欢迎舰长 <%天使雨晰%> 进入直播间", - "icon_list": [], - "max_delay_time": 7, - "trigger_time": 1673625604373633300, - "identities": 6, - "effect_silent_time": 0, - "effective_time_new": 0, - "web_dynamic_url_webp": "", - "web_dynamic_url_apng": "", - "mobile_dynamic_url_webp": "" - } + "cmd": "AREA_RANK_CHANGED", + "data": { + "conf_id": 23, + "rank_name": "手游航海", + "uid": 27717502, + "rank": 4, + "icon_url_blue": "https://i0.hdslb.com/bfs/live/18e2990a546d33368200f9058f3d9dbc4038eb5c.png", + "icon_url_pink": "https://i0.hdslb.com/bfs/live/a6c490c36e88c7b191a04883a5ec15aed187a8f7.png", + "icon_url_grey": "https://i0.hdslb.com/bfs/live/cb7444b1faf1d785df6265bfdc1fcfc993419b76.png", + "action_type": 1, + "timestamp": 1673625610, + "msg_id": "e93c7860-b901-41ca-aad8-fe538a5fac9c", + "jump_url_link": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=3&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", + "jump_url_pc": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=4&ruid=27717502&conf_id=23&pc_ui=338,465,f4eefa,0#/area-rank", + "jump_url_pink": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=1&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", + "jump_url_web": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=2&ruid=27717502&conf_id=23#/area-rank" + } } ```
+#### 广播通知弹幕信息 (COMMON_NOTICE_DANMAKU) -#### 直播间在所属分区的排名改变 +**JSON消息:** -json格式 +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "AREA_RANK_CHANGED" | 若直播间在所属分区的排名改变,则内容是"AREA_RANK_CHANGED" | -| data | obj | 直播间在所属分区的排名信息 | | +| cmd | str | `COMMON_NOTICE_DANMAKU` | | +| data | obj | 信息本体 | | -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| conf_id | num | 待调查 | | -| rank_name | str | 排行榜名称 | | -| uid | num | 主播的UID | | -| rank | num | 直播间在分区的排名 | 若没有上榜则为0 | -| icon_url_blue | str | 蓝色排名图标URL | | -| icon_url_pink | str | 粉色排名图标URL | | -| icon_url_grey | str | 灰色排名图标URL | | -| action_type | num | 待调查 | | -| timestamp | num | 触发时的Unix时间戳 | | -| msg_id | str | 待调查 | | -| jump_url_link | str | 排行榜跳转链接 | APP端页面 | -| jump_url_pc | str | 排行榜跳转链接 | APP端页面 | -| jump_url_pink | str | 排行榜跳转链接 | APP端页面 | -| jump_url_web | str | 排行榜跳转链接 | APP端页面 | - -
-查看消息示例: - -```json -{ - "cmd": "AREA_RANK_CHANGED", - "data": { - "conf_id": 23, - "rank_name": "手游航海", - "uid": 27717502, - "rank": 4, - "icon_url_blue": "https://i0.hdslb.com/bfs/live/18e2990a546d33368200f9058f3d9dbc4038eb5c.png", - "icon_url_pink": "https://i0.hdslb.com/bfs/live/a6c490c36e88c7b191a04883a5ec15aed187a8f7.png", - "icon_url_grey": "https://i0.hdslb.com/bfs/live/cb7444b1faf1d785df6265bfdc1fcfc993419b76.png", - "action_type": 1, - "timestamp": 1673625610, - "msg_id": "e93c7860-b901-41ca-aad8-fe538a5fac9c", - "jump_url_link": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=3&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", - "jump_url_pc": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=4&ruid=27717502&conf_id=23&pc_ui=338,465,f4eefa,0#/area-rank", - "jump_url_pink": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=1&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", - "jump_url_web": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=2&ruid=27717502&conf_id=23#/area-rank" - } -} -``` - -
- - -#### 直播间在所属分区排名提升的祝福 - -会分多个普通包发送 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "COMMON_NOTICE_DANMAKU" | 例如提示“恭喜主播 时雨ioo 成为手游航海当前第5名”,
,则内容是"COMMON_NOTICE_DANMAKU" | -| data | obj | 直播间在所属分区排名提升的祝福的信息 | | - -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | @@ -2152,125 +2904,100 @@ data字段 | dmscore | num | 待调查 | | | terminals | array | 待调查 | | -content_segments数组中的对象 +`data.content_segments[n]` 数组中的对象 | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | -| font_color | str | text字段的十六进制颜色值 | | -| font_color_dark | str | text字段的十六进制颜色值 | APP端设置为深色模式时使用 | -| text | str | 祝贺文本 | | +| font_color | str | text 字段的十六进制颜色值 | | +| font_color_dark | str | text 字段的十六进制颜色值 | APP端设置为深色模式时使用 | +| text | str | 文本 | | | type | num | 待调查 | | -danmaku_style字段 +`data.danmaku_style` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | | background_color | str | 文本背景颜色的十六进制颜色值 | | | background_color_dark | str | 文本背景颜色的十六进制颜色值 | APP端设置为深色模式时使用 | -
-查看消息示例: +**示例:** + +
+查看消息示例: -第一条数据: ```json { - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#CCCCCC", - "font_color_dark": "#CCCCCC", - "text": "恭喜主播 时雨ioo ", - "type": 1 - }, - { - "font_color": "#F494AF", - "font_color_dark": "#F494AF", - "text": "成为手游航海当前第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 1, - 2, - 3 - ] - } + "cmd": "COMMON_NOTICE_DANMAKU", + "data": { + "content_segments": [ + { + "font_color": "#FB7299", + "text": "春日限时任务:任务即将结束,抓紧完成获取3元红包奖励吧!未完成任务进度将重置", + "type": 1 + } + ], + "dmscore": 144, + "terminals": [ + 1, + 2, + 3, + 4, + 5 + ] + } } ``` -第二条数据: + ```json { - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#99A5AE", - "font_color_dark": "#99A5AE", - "text": "恭喜主播 时雨ioo 成为手游航海当前第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 5 - ] - } -} -``` -第三条数据: -```json -{ - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#998EFF", - "font_color_dark": "#998EFF", - "text": "恭喜主播 时雨ioo 成为手游航海第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 4 - ] - } + "cmd": "COMMON_NOTICE_DANMAKU", + "data": { + "biz_id": 0, + "content_segments": [ + { + "font_color": "#CCCCCC", + "font_color_dark": "#CCCCCC", + "text": "恭喜主播 时雨ioo ", + "type": 1 + }, + { + "font_color": "#F494AF", + "font_color_dark": "#F494AF", + "text": "成为手游航海当前第5名", + "type": 1 + } + ], + "danmaku_style": { + "background_color": null, + "background_color_dark": null + }, + "danmaku_uri": "", + "dmscore": 144, + "terminals": [ + 1, + 2, + 3 + ] + } } ```
+#### 直播间信息更改 (ROOM_CHANGE) -#### 直播间信息更改 +注: 例如直播间标题更改、直播间分区更改 -json格式 +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "ROOM_CHANGE" | 例如直播间标题更改、直播间分区更改 | +| cmd | str | `ROOM_CHANGE` | | | data | obj | | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | @@ -2282,8 +3009,10 @@ data字段 | live_key | str | 待调查 | | | sub_session_key | str | 待调查 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { @@ -2299,20 +3028,22 @@ data字段 } } ``` +
+#### 醒目留言按钮 (SUPER_CHAT_ENTRANCE) -#### 醒目留言按钮 +**JSON消息:** -json格式 +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "SUPER_CHAT_ENTRANCE" | 不知道有什么意义 | +| cmd | str | `SUPER_CHAT_ENTRANCE` | | | data | obj | 醒目留言按钮的信息 | | | roomid | num | 直播间ID | 未知是短号还是真实ID | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | --- | ------ | --------- | @@ -2321,8 +3052,10 @@ data字段 | icon | str | “醒目留言”按钮图标的URL | | | broadcast_type | num | 待调查 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { @@ -2336,37 +3069,32 @@ data字段 "roomid": "8618057" } ``` +
-#### 顶部横幅 +#### 顶部横幅 (WIDGET_BANNER) -网页端在直播间标题下面的横幅 - -例如“限时任务”等 - -json格式 +注: 网页端在直播间标题下面的横幅, 例如 限时任务 等 +**JSON消息:** | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "WIDGET_BANNER" | | +| cmd | str | `WIDGET_BANNER` | | | data | obj | 横幅信息 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | timestamp | num | 服务器发送数据包时的Unix时间戳 | | | widget_list | obj | 横幅信息 | 待调查 | -widget_list字段 +`data.widget_list` 对象: -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| 横幅ID | obj | 横幅信息 | | -| ... | obj | | | +以 横幅 ID 为键, JSON Object 为值的表 -横幅ID 字段 +`data.widget_list['?']` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | @@ -2388,325 +3116,822 @@ widget_list字段 | sub_data | str | 横幅数据 | | | is_add | bool | 待调查 | | +**示例:** +
-查看消息示例: +查看消息示例: ```json { - "cmd": "WIDGET_BANNER", - "data": { - "timestamp": 1673684868, - "widget_list": { - "308": { - "id": 308, - "title": "一月限时任务", - "cover": "", - "web_cover": "", - "tip_text": "限时任务", - "tip_text_color": "", - "tip_bottom_color": "", - "jump_url": "https://live.bilibili.com/activity/live-activity-battle/index.html?app_name=time_limited_task_jan_2023&is_live_half_webview=1&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,70p,0,0,0,0,12,0;2,2,375,100p,0,0,0,0,12,0;3,3,100p,70p,0,0,0,0,12,0;4,2,375,100p,0,0,0,0,12,0;5,3,100p,70p,0,0,0,0,12,0;6,3,100p,70p,0,0,0,0,12,0;7,3,100p,70p,0,0,0,0,12,0;8,3,100p,70p,0,0,0,0,12,0&room_id=8618057&uid=29857468#/", - "url": "", - "stay_time": 5, - "site": 1, - "platform_in": [ - "live", - "blink", - "live_link", - "web", - "pc_link" - ], - "type": 1, - "band_id": 101558, - "sub_key": "", - "sub_data": "%7B%22task_status%22%3A0%2C%22current_val%22%3A10%2C%22target_val%22%3A1200%2C%22timeout%22%3A1673687024%2C%22reward_price%22%3A8%2C%22reward_type%22%3A1%7D", - "is_add": true - } - } + "cmd": "WIDGET_BANNER", + "data": { + "timestamp": 1673684868, + "widget_list": { + "308": { + "id": 308, + "title": "一月限时任务", + "cover": "", + "web_cover": "", + "tip_text": "限时任务", + "tip_text_color": "", + "tip_bottom_color": "", + "jump_url": "https://live.bilibili.com/activity/live-activity-battle/index.html?app_name=time_limited_task_jan_2023&is_live_half_webview=1&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,70p,0,0,0,0,12,0;2,2,375,100p,0,0,0,0,12,0;3,3,100p,70p,0,0,0,0,12,0;4,2,375,100p,0,0,0,0,12,0;5,3,100p,70p,0,0,0,0,12,0;6,3,100p,70p,0,0,0,0,12,0;7,3,100p,70p,0,0,0,0,12,0;8,3,100p,70p,0,0,0,0,12,0&room_id=8618057&uid=29857468#/", + "url": "", + "stay_time": 5, + "site": 1, + "platform_in": [ + "live", + "blink", + "live_link", + "web", + "pc_link" + ], + "type": 1, + "band_id": 101558, + "sub_key": "", + "sub_data": "%7B%22task_status%22%3A0%2C%22current_val%22%3A10%2C%22target_val%22%3A1200%2C%22timeout%22%3A1673687024%2C%22reward_price%22%3A8%2C%22reward_type%22%3A1%7D", + "is_add": true + } } + } } ```
-#### 下播的直播间 +#### 礼物心愿单进度 (WIDGET_WISH_LIST) -json格式 +**JSON消息:** +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `WIDGET_WISH_LIST` | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| wish | array | 礼物心愿单信息 | | +| wish_status | num | ? | | +| sid | num | ? | | +| wish_status_info | array | ? | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "WIDGET_WISH_LIST", + "data": { + "wish": [ + { + "type": 3, + "gift_id": 10003, + "gift_name": "舰长", + "gift_img": "https://i0.hdslb.com/bfs/live/f1be2a2d5b227ce72641de1ad64bcc7f9e4111c3.png", + "gift_price": 198000, + "target_num": 5, + "current_num": 0 + }, + { + "type": 2, + "gift_id": 3, + "gift_name": "B坷垃", + "gift_img": "https://s1.hdslb.com/bfs/live/cc8bfcbc24c8b65937f62ce0d16b31ab987dce47.png", + "gift_price": 9900, + "target_num": 5, + "current_num": 0 + }, + { + "type": 2, + "gift_id": 31039, + "gift_name": "牛哇牛哇", + "gift_img": "https://s1.hdslb.com/bfs/live/b8a38b4bd3be120becddfb92650786f00dffad48.png", + "gift_price": 100, + "target_num": 10, + "current_num": 0 + } + ], + "wish_status": 1, + "sid": 477, + "wish_status_info": [ + { + "wish_status_msg": "设定心 愿", + "wish_status_img": "https://i0.hdslb.com/bfs/live/38f82bac32794e79776f7371269453652bd58a87.png", + "wish_status": 0 + }, + { + "wish_status_msg": "达成", + "wish_status_img": "https://i0.hdslb.com/bfs/live/1dae635924437239fc69e561a1a9467508521249.png", + "wish_status": 2 + }, + { + "wish_status_msg": "收集失败", + "wish_status_img": "https://i0.hdslb.com/bfs/live/3bbd30fdd32d085cc90e9ccd98c65a886dca9a8f.png", + "wish_status": 3 + } + ], + "wish_name": "心愿" + } +} +``` + +
+ +#### 下播的直播间 (STOP_LIVE_ROOM_LIST) + +注: 估计是更新关注的主播直播状态的 + +**JSON消息:** + +根对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | -| cmd | str | "STOP_LIVE_ROOM_LIST" | | -| data | obj | 下播的直播间ID列表 | | +| cmd | str | `STOP_LIVE_ROOM_LIST` | | +| data | obj | 信息本体 | | -data字段 +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ------ | --------- | | room_id_list | array | 下播的直播间ID | | -room_id_list数组中的数字 - -| 类型 | 内容 | 备注 | -| --- | ---- | ---- | -| num | 下播的直播间ID | 未知是真实ID还是短号 | -| num | ... | | +`data.room_id_list` 数组: +| 项 | 类型 | 内容 | 备注 | +| -- | ---- | ---- | ---- | +| 0 | num | 第 1 个下播的直播间 ID | | +| 1 | num | 第 2 个下播的直播间 ID | | +| …… | num | …… | | +| n | num | 第 (n+1) 个下播的直播间 ID | |
-查看消息示例: +查看消息示例: ```json { - "cmd": "STOP_LIVE_ROOM_LIST", - "data": { - "room_id_list": [ - 22629205, - 23130005, - 25963791, - 5532805, - 668631, - 21409011, - 21559541, - 23499952, - 26700301, - 26785971, - 11673798, - 13766041, - 22980849, - 23719726, - 23865141, - 24984476, - 6134501, - 13782552, - 22276717, - 24107587, - 25023546, - 25404621, - 25516925, - 26527626, - 3392341, - 34027, - 502153, - 6479194, - 7636554, - 12237172, - 22821330, - 24484883, - 25641623, - 26230536, - 26792222, - 3642143, - 21774100, - 22797418, - 23698420, - 24020165, - 23969235, - 24207417, - 24541492, - 24900566, - 25385044, - 4484938, - 11113452, - 21442530, - 22046176, - 22184897, - 22386835, - 23499007, - 26129631, - 26866037, - 5971876, - 22779750, - 24132482, - 25789722, - 26251362, - 26822052, - 26835655, - 5122088, - 6668191, - 12439052, - 23690850, - 24458365, - 26189089, - 26676322, - 26872742, - 4917898, - 826723, - 22886872, - 24752347, - 25108137, - 5796786, - 6176498, - 6208022, - 7578115, - 14218725, - 22659435, - 23774701, - 24804876, - 25081572, - 25275744, - 26430916, - 730392, - 9505076, - 25467274, - 3015372, - 5764087, - 9407015, - 21356836, - 24302940, - 25469360, - 25666252, - 26564899, - 26574306, - 9391864, - 136707, - 15163029, - 22001560, - 22642183, - 24168773, - 24197349, - 26750190, - 59670, - 6545138, - 7538431, - 12568128, - 22865116, - 26566675, - 26658222, - 26778289, - 26856746, - 3386215, - 1270737, - 1856866, - 22371951, - 22953580, - 23026533, - 9316759, - 13628231, - 25166176, - 6736476, - 7745491, - 893989, - 25349228, - 25684996, - 26835833, - 763132, - 1282353, - 14333573, - 26677056, - 5553188, - 1549629, - 22807502, - 25633167, - 26062956, - 26558451, - 9312947, - 14366742, - 1864809, - 25581444, - 26656406, - 11454847, - 13507879, - 187331, - 22626880, - 23187177, - 23481929, - 24042533, - 24501754, - 26776408, - 2315619, - 24320832, - 24708829, - 26236176, - 26575516, - 3105045, - 6164089, - 21145740, - 21258252, - 23211964, - 23610573, - 26873451, - 10452273, - 21300836, - 26076163, - 26510266, - 933508, - 21751571, - 24043374, - 26045578, - 26784723, - 26811618, - 22836140, - 23558501, - 24429614, - 24476599, - 2681976, - 26867816, - 7802886, - 13617926, - 2049112, - 26233820, - 6868338, - 23458654, - 24370731, - 26126954, - 5070119, - 24416075 - ] - } + "cmd": "STOP_LIVE_ROOM_LIST", + "data": { + "room_id_list": [ + 14507570, 23963084, 24370437, 24380902, 24889494, + 22735090, 24268758, 24668544, 38325, 24762357, + 3222966, 6684395, 24199566, 24864470, 10224194, + 14953052, 6198131, 898214, 10412034, 22506883, + 23932516, 6768714, 24392281, 1799500, 22392518, + 22976729, 21557043, 24896092, 11718936, 21612704, + 21778117, 24145539, 23178318, 23575414, 24842462, + 22245210, 24895499, 3133873, 1298898, 22175308, + 3600684, 2053035, 270652, 24877480, 3854611, + 21512488, 24393104, 24756457, 4630683, 6955412, + 23199465, 2880481, 23868339, 717791, 24068307, + 24875243, 22777819, 24896061, 24619665 + ] + } } ``` - -
- -#### 未知消息 -`PLAY_TOGETHER` +
+ +#### 系统信息 (SYS_MSG) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `SYS_MSG` | | +| msg | str | 提示信息 | | +| url | str | 跳转 URL | | + +**示例:** +
-查看消息示例: +查看消息示例: -示例1: ```json { - "cmd": "PLAY_TOGETHER", - "data": { - "ruid": 29857468, - "roomid": 8618057, - "action": "switch_off", - "uid": 0, - "timestamp": 1673690546, - "message": "", - "message_type": 0, - "jump_url": "", - "web_url": "", - "apply_number": 0, - "refresh_tool": false, - "cur_fleet_num": 0, - "max_fleet_num": 0 - } -} -``` -示例2 -```json -{ - "cmd": "PLAY_TOGETHER", - "data": { - "ruid": 29857468, - "roomid": 8618057, - "action": "switch_off", - "uid": 0, - "timestamp": 1673690549, - "message": "系统提示:主播已切换分区", - "message_type": 3, - "jump_url": "", - "web_url": "", - "apply_number": 0, - "refresh_tool": true, - "cur_fleet_num": 0, - "max_fleet_num": 0 - } + "cmd": "SYS_MSG", + "msg": "争夺开启,时间周五20点至周日20点,逾期不候哟!", + "url": "" } ``` + +
+ +#### 警告 (WARNING) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `WARNING` | | +| msg | str | 警告信息 | | +| roomid | num | 直播间 ID | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "WARNING", + "msg": "图片内容不适宜,请立即调整", + "roomid": 22195814 +} +``` + +
+ +#### 切断 (CUT_OFF) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `CUT_OFF` | | +| msg | str | 切断原因 | | +| roomid | num | 直播间 ID | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "CUT_OFF", + "msg": "违反直播言论规范,请立即调整", + "roomid": 23993070 +} +``` + +
+ +#### 直播间背景图片修改 (CHANGE_ROOM_INFO) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `CHANGE_ROOM_INFO` | | +| background | str | 背景图 URL | | +| roomid | num | 直播间 ID | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "CHANGE_ROOM_INFO", + "background": "https://i0.hdslb.com/bfs/live/2388faed3728f3396052273ad4c3c9af21c411fc.jpg", + "roomid": 23993070 +} +``` + +
+ +#### 直播间皮肤变更 (ROOM_SKIN_MSG) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `ROOM_SKIN_MSG` | | +| skin_id | num | 皮肤 ID | | +| status | num | 状态? | | +| end_time | num | 皮肤结束时间? | UNIX 秒级时间戳 | +| current_time | num | 当前时间 | UNIX 秒级时间戳 | +| only_local | bool | 仅在本地显示? | | +| scatter | obj | ? | | +| skin_config | obj | 皮肤配置 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "ROOM_SKIN_MSG", + "skin_id": 353, + "status": 1, + "end_time": 1652620669, + "current_time": 1652015870, + "only_local": false, + "scatter": { + "min": 1, + "max": 200 + }, + "skin_config": { + "android": { + "1": { + "zip": "https://i0.hdslb.com/bfs/live/fab943a5d7eeb871ecf06413283d17536e67ab91.zip", + "md5": "011EBB3E14192212FD50852245DC74FA" + } + }, + "ios": { + "1": { + "zip": "https://i0.hdslb.com/bfs/live/e7d8768dcb3975d82d794fe6b39756317916a7fe.zip", + "md5": "B1223577FE9C5C248EC1326CDACF8379" + } + }, + "ipad": { + "1": { + "zip": "https://i0.hdslb.com/bfs/live/0856e17be073d75b70098609ae26572ba1534605.zip", + "md5": "481AE75FFD0E0DE91EAFB5B6E0F8936B" + } + }, + "web": { + "1": { + "zip": "https://i0.hdslb.com/bfs/live/0b3770980e600f23629c8445fd211d4a12ec4b6f.zip", + "md5": "8F98F79F02DEFE8B69EE2F6DE7416DFF", + "platform": "web", + "version": "1", + "headInfoBgPic": "https://i0.hdslb.com/bfs/live/d293e69b70af34df0fef086a86552b1761a33a75.jpg", + "giftControlBgPic": "https://i0.hdslb.com/bfs/live/1a124c5547c784f41dc3d7f65f446c56c4cbb73e.jpg", + "rankListBgPic": "https://i0.hdslb.com/bfs/live/af8580a956d0eac6ea1d2cc97ea743d435a86874.jpg", + "mainText": "#FFffffff", + "normalText": "#FFffffff", + "highlightContent": "#FFffd119", + "border": "#FFaec2ff", + "buttonText": "#FF123ab2" + } + } + } +} +``` + +
+ +#### 开启等级禁言 (ROOM_SILENT_ON) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| data | obj | 信息本体 | | +| cmd | str | `ROOM_SILENT_ON` | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| type | str | 类型? | | +| level | num | 等级? | | +| second | num | 时间? | UNIX 秒级时间戳 | + +**示例:** + +
+查看消息示例: + +```json +{ + "data": { + "type": "member", + "level": 1, + "second": 1651000426 + }, + "cmd": "ROOM_SILENT_ON" +} +``` + +
+ +#### 关闭等级禁言 (ROOM_SILENT_OFF) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| data | obj | 信息本体 | | +| cmd | str | `ROOM_SILENT_OFF` | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| type | str | 空 | | +| level | num | 0 | | +| second | num | 0 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "data": { + "type": "", + "level": 0, + "second": 0 + }, + "cmd": "ROOM_SILENT_OFF" +} +``` + +
+ +#### 指定观众禁言 (ROOM_BLOCK_MSG) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `ROOM_BLOCK_MSG` | | +| data | obj | 详细信息 | | +| uid | num | 禁言用户 mid | | +| uname | str | 禁言用户名 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| dmscore | num | 弹幕分数? | | +| operator | num | 操作者? | | +| uid | num | 禁言用户 mid | | +| uname | str | 禁言用户名 | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "ROOM_BLOCK_MSG", + "data": { + "dmscore": 30, + "operator": 2, + "uid": 37903025, + "uname": "玉麟珑" + }, + "uid": "37903025", + "uname": "玉麟珑" +} +``` + +
+ +#### 房管列表 (ROOM_ADMINS) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `ROOM_ADMINS` | | +| uids | array | 房管 mid 列表 | | + +**示例:** + +
+查看消息示例: + +```json +{ + cmd: "ROOM_ADMINS", + uids: [ 898424, 384203692, 1309513, 30816752, 23931549, 223134 ] +} +``` + +
+ +#### 设立房管 (room_admin_entrance) + +注: 此处 cmd 内容为小写 + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `room_admin_entrance` | | +| dmscore | num | 弹幕分数? | | +| level | num | 等级? | | +| msg | str | 提示信息 | | +| uid | num | 用户 mid | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "room_admin_entrance", + "dmscore": 45, + "level": 1, + "msg": "系统提示:你已被主播设为房管", + "uid": 223134 +} +``` + +
+ +#### 撤销房管 (ROOM_ADMIN_REVOKE) + +**JSON消息:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| cmd | str | `ROOM_ADMIN_REVOKE` | | +| msg | str | 提示信息 | | +| uid | num | 用户 mid | | + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "ROOM_ADMIN_REVOKE", + "msg": "撤销房管", + "uid": 6791627 +} +``` + +
+ +#### 天选时刻合法检查 (ANCHOR_LOT_CHECKSTATUS) + +**示例:** + +
+查看响应示例: + +```json +{ + "cmd": "ANCHOR_LOT_CHECKSTATUS", + "data": { + "id": 2553641, + "reject_reason": "由于奖品格式不合格,请仔细检查后再提交哦", + "status": 5, + "uid": 1827176970 + } +} +``` + +
+ +#### 天选时刻开始 (ANCHOR_LOT_START) + +**示例:** + +
+查看响应示例: + +```json +{ + "cmd": "ANCHOR_LOT_START", + "data": { + "asset_icon": "https://i0.hdslb.com/bfs/live/627ee2d9e71c682810e7dc4400d5ae2713442c02.png", + "award_image": "", + "award_name": "艺术头像绘制", + "award_num": 1, + "cur_gift_num": 0, + "current_time": 1651037946, + "danmu": "卡宝下午好", + "gift_id": 3, + "gift_name": "B坷垃", + "gift_num": 1, + "gift_price": 9900, + "goaway_time": 180, + "goods_id": 15, + "id": 2553648, + "is_broadcast": 1, + "join_type": 1, + "lot_status": 0, + "max_time": 600, + "require_text": "当前主播粉丝勋章至少1级", + "require_type": 2, + "require_value": 1, + "room_id": 23614753, + "send_gift_ensure": 0, + "show_panel": 1, + "start_dont_popup": 0, + "status": 1, + "time": 599, + "url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html?is_live_half_webview=1&hybrid_biz=live-lottery-anchor&hybrid_half_ui=1,5,100p,100p,000000,0,30,0,0,1;2,5,100p,100p,000000,0,30,0,0,1;3,5,100p,100p,000000,0,30,0,0,1;4,5,100p,100p,000000,0,30,0,0,1;5,5,100p,100p,000000,0,30,0,0,1;6,5,100p,100p,000000,0,30,0,0,1;7,5,100p,100p,000000,0,30,0,0,1;8,5,100p,100p,000000,0,30,0,0,1", + "web_url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html" + } +} +``` + +
+ +#### 天选时刻结束 (ANCHOR_LOT_END) + +
+查看消息示例: + +```json +{ + "cmd": "ANCHOR_LOT_END", + "data": { + "id": 2553648 + } +} +``` + +
+ +#### 天选时刻中奖者 (ANCHOR_LOT_AWARD) + +
+查看消息示例: + +```json +{ + "cmd": "ANCHOR_LOT_AWARD", + "data": { + "award_dont_popup": 1, + "award_image": "", + "award_name": "艺术头像绘制", + "award_num": 1, + "award_users": [ + { + "uid": 8318700, + "uname": "桥下念喬", + "face": "http://i0.hdslb.com/bfs/face/dfde2ffc6286c2c5189592cc84fd70bcf977b143.jpg", + "level": 21, + "color": 5805790 + } + ], + "id": 2553648, + "lot_status": 2, + "url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html?is_live_half_webview=1&hybrid_biz=live-lottery-anchor&hybrid_half_ui=1,5,100p,100p,000000,0,30,0,0,1;2,5,100p,100p,000000,0,30,0,0,1;3,5,100p,100p,000000,0,30,0,0,1;4,5,100p,100p,000000,0,30,0,0,1;5,5,100p,100p,000000,0,30,0,0,1;6,5,100p,100p,000000,0,30,0,0,1;7,5,100p,100p,000000,0,30,0,0,1;8,5,100p,100p,000000,0,30,0,0,1", + "web_url": "https://live.bilibili.com/p/html/live-lottery/anchor-join.html" + } +} +``` + +
+ +#### 邀请视频连线 (VIDEO_CONNECTION_JOIN_START) + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "VIDEO_CONNECTION_JOIN_START", + "data": { + "status": 1, + "invited_uid": 351686170, + "channel_id": "72057594038132685", + "invited_uname": "小妹睡不醒", + "invited_face": "http://i1.hdslb.com/bfs/face/828562203e620f711fb4c786f05996357857ed4d.jpg", + "start_at": 1651237440, + "current_time": 1651237440 + }, + "roomid": 12401854 +} +``` + +
+ +#### 视频连线信息 (VIDEO_CONNECTION_MSG) + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "VIDEO_CONNECTION_MSG", + "data": { + "channel_id": "72057594038132685", + "current_time": 1651237440, + "dmscore": 4, + "toast": "主播发起了视频连线" + } +} +``` + +
+ +#### 结束视频连线 (VIDEO_CONNECTION_JOIN_END) + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "VIDEO_CONNECTION_JOIN_END", + "data": { + "channel_id": "72057594038132685", + "start_at": 1651238384, + "toast": "主播 结束了与小妹睡不醒的连线.", + "current_time": 1651238384 + }, + "roomid": 22195814 +} +``` + +
+ +#### 重连直播间? (REENTER_LIVE_ROOM) + +
+查看消息示例: + +```json +{ + "cmd": "REENTER_LIVE_ROOM", + "data": { + "room_id": 22195814, + "request_random_sec_range": 10, + "reason": 1 + }, + "roomid": 22195814 +} +``` + +
+ +#### ??? (PLAY_TOGETHER) + +**示例:** + +
+查看消息示例: + +```json +{ + "cmd": "PLAY_TOGETHER", + "data": { + "ruid": 29857468, + "roomid": 8618057, + "action": "switch_off", + "uid": 0, + "timestamp": 1673690546, + "message": "", + "message_type": 0, + "jump_url": "", + "web_url": "", + "apply_number": 0, + "refresh_tool": false, + "cur_fleet_num": 0, + "max_fleet_num": 0 + } +} +``` + +```json +{ + "cmd": "PLAY_TOGETHER", + "data": { + "ruid": 29857468, + "roomid": 8618057, + "action": "switch_off", + "uid": 0, + "timestamp": 1673690549, + "message": "系统提示:主播已切换分区", + "message_type": 3, + "jump_url": "", + "web_url": "", + "apply_number": 0, + "refresh_tool": true, + "cur_fleet_num": 0, + "max_fleet_num": 0 + } +} +``` +
- - diff --git a/docs/live/user.md b/docs/live/user.md index 257676e..dec1db9 100644 --- a/docs/live/user.md +++ b/docs/live/user.md @@ -22,7 +22,7 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-1002002:参数异常
-500:服务器异常 | +| code | num | 返回值 | 0:成功
-1002002:参数异常
-500:服务器异常 | | message | str | 错误信息 | 默认为 "0" | | ttl | num | 1 | | | data | obj | 信息本体 | | @@ -44,7 +44,7 @@ | guard_level | num | | | | guard_medal_title | str | 加成状态 | | | intimacy | num | 当前已得亲密度 | | -| is_lighted | num | 是否点亮 | 0:未点亮
1:点亮 | +| is_lighted | num | 是否点亮 | 0:未点亮
1:点亮 | | level | num | 勋章等级 | | | medal_name | str | 勋章名 | | | medal_color_border | num | 勋章边框颜色信息 | 颜色数值为 10 进制的 16 进制值(下同) | @@ -195,7 +195,7 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ---------------------- | -| code | num | 返回值 | 0:成功
1:参数错误 | +| code | num | 返回值 | 0:成功
1:参数错误 | | ttl | num | 1 | | | message | str | 错误信息 | 默认为当日签到奖励内容 | | data | obj | 信息本体 | 默认为空 | @@ -225,7 +225,7 @@ _请求方式:GET_ | ----------------- | ----- | ---------------------------- | ---------------------- | | text | str | 今日签到奖励信息 | 默认为空 | | specialText | str | 连续签到奖励信息 | 默认为空 | -| status | num | 签到状态 | 0:未签到
1:已签到 | +| status | num | 签到状态 | 0:未签到
1:已签到 | | allDays | num | 当月天数 | | | curMonth | num | 当前月 | | | curYear | num | 当前年 | | diff --git a/docs/login/cookie_refresh.md b/docs/login/cookie_refresh.md index 137e210..e1b22fa 100644 --- a/docs/login/cookie_refresh.md +++ b/docs/login/cookie_refresh.md @@ -111,7 +111,7 @@ PEM 格式: ### 相关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 @@ -138,7 +138,7 @@ const ts = Date.now() console.log(await getCorrespondPath(ts)) ``` -``` +```text b77f21ab5b7ce7879c410b2311dd6e7ea1a2cd1cd941073db067f4c3279fdabca3a06dfa744168ee14ad050b9f4889bd4edb8e76eb597fdd18c16804d82566b55c6dba8e225d838aa93d8e5b31cf7c56720db8244d92373f4944e0561f6ca5bf721a36ac079786060fc853605ccd1ddcb33f54617de6aedd44e3b9850d13b45f ``` @@ -170,7 +170,7 @@ ts = round(time.time() * 1000) print(getCorrespondPath(ts)) ``` -``` +```text 47bbd615f333d6a2c597bbb46ad47a6e59752a305a2f545d3ba5d49ca055309347796f80d257613696d36170c57443a0e9dea2b47f83b0b4224d431e46124fadd9a24c8fa468147e8bf2d2501eaacae43310e19bf58fc4a728d80c90b9401afcfc1536ba9a2f6438ea53c0b2652f8b8d01c87355dd5a5da51de998b1a35d519a ``` @@ -219,7 +219,7 @@ fun getCorrespondPath(timestamp: Long): String { } ``` -``` +```text 1428cbd14605ae42a0b42e22662cfe51d8e5034eeaffb36a46db46bd2f93216cbfd4d150cca2de44395add7c664b40acf44424ee8d634fc821b909423665a34d18bd7f4e77ea5388a2b612daf875e2fe8df62990e14b64a465898b0707bc1288586b68f9f4f2f20bea5cb1cada296beb8009e91bc8fb57a4b81b8923299b6eb7 ``` @@ -274,11 +274,12 @@ JNrRuoEUXpabUzGB8QIDAQAB } ``` -``` +```text 97759947aa357ed5d88cf9bf1172737570b7bba2d6788d39006f082b2b25ddf53b581f1f0c61ed8573317485ef525d2789faa25a277b4602a4b9cbf837681093a03e96cb9773a11df4bb1e20f1587180b3e958194de922d7dd94d0a2f0b9b0ef74e426e8041f99b99e7c02407ef4ab38040e61be81e4fdfbdb73461e3a2ad810 ``` ### Java + ```Java import javax.crypto.Cipher; import javax.crypto.spec.OAEPParameterSpec; @@ -336,7 +337,7 @@ public class CookieRefresh { } ``` -``` +```text f87666152da692735123f4e49053e5a98c16854673b2e632f31a3ff0c029640772873661a9a8412db6be447a0bfa03a295d15548cbfd2bb35634e98ba5f25b1205519d6e6119b483f4c516c1e106d45b04ff98c73560949d379d3edaf3c0ecd10a1d46134fb9ca443122ab33c16d1dd48280496f949ed960a2fbcd65f10935e ``` diff --git a/docs/login/login_action/password.md b/docs/login/login_action/password.md index 10b2b61..ffc3d01 100644 --- a/docs/login/login_action/password.md +++ b/docs/login/login_action/password.md @@ -486,7 +486,7 @@ public class Test3 { ### 简述 -有时 [登录操作(web端)](#登录操作web端) (APP 端可能也有类似操作) 会返回如下内容, 此时需要进行手机号验证或绑定 +有时使用密码登录时, 无论使用网页端还是手机端接口, 由于 请求头缺失/请求频率高/请求IP 等原因, 会返回如下内容, 此时需要进行手机号验证或绑定 ```json { diff --git a/docs/login/member_center.md b/docs/login/member_center.md index 2378c80..89b0f81 100644 --- a/docs/login/member_center.md +++ b/docs/login/member_center.md @@ -156,7 +156,7 @@ curl 'https://api.bilibili.com/x/member/web/exp/reward' \ | ------- | ---- | -------------------- | ----------- | | code | num | 返回值 | 0:成功 | | message | str | 错误信息 | 默认为0 | -| number | num | 每日投币所奖励的经验 | 上限为50
2:发送图片
5:撤回消息 | +| msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字
2:发送图片
5:撤回消息 | | msg[msg_status] | num | 0 | 非必要 | | | msg[dev_id] | string | 372778FD-E359-461D-86A3-EA2BCC6FF52A | 必要 | **获取方式在下面** | | msg[timestamp] | num | 时间戳(秒) | 必要 | | @@ -161,7 +161,7 @@ public class Util{ | height | num | 图片的高 | 单位:像素(非必要) | | type | str | 图片格式 | (非必要) | | original | num | 1 | **作用未知**(非必要) | -| size | num | 文件大小 | 单位:千字节(非必要)
__向上取整__ | +| size | num | 文件大小 | 单位:千字节(非必要)
__向上取整__ | 当撤回消息时(`msg[msg_type]=5`): @@ -172,7 +172,7 @@ public class Util{ 根对象: | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ----------- | -| code | num | 返回值 | 0:成功
| +| code | num | 返回值 | 0:成功 | | message | str | 错误信息 | 默认为ok | | ttl | num | | 默认为1 | | data | obj | 主体 | 出错时为空 | @@ -222,7 +222,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ 给目标用户`mid=1`发一条图片私信: -> +> ```shell 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 | | receiver_type | num | 与session_type对应 | 1为用户,2为粉丝团 | | receiver_id | num | 接收者uid | 注意名称是receiver_id | -| msg_type | num | 消息类型 | 1:文字消息
2:图片消息
5:撤回的消息
12、13:通知 | +| msg_type | num | 消息类型 | 1:文字消息
2:图片消息
5:撤回的消息
12、13:通知 | | content | str | 消息内容 | 此处存在设计缺陷 | | msg_seqno | num | 消息序列号,保证按照时间顺序从小到大 | | | timestamp | num | 消息发送时间戳 | | diff --git a/docs/misc/buvid3_4.md b/docs/misc/buvid3_4.md index d9a0747..99dc3c1 100644 --- a/docs/misc/buvid3_4.md +++ b/docs/misc/buvid3_4.md @@ -1,5 +1,52 @@ # 获取 buvid3 / buvid4 / b_nut +## 仅获取 buvid3 + +> https://api.bilibili.com/x/web-frontend/getbuvid + +*请求方式: GET* + + + +**JSON回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | -------- | +| code | num | 返回值 | 0:成功 | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | ---- | +| buvid | str | buvid3 | 需手动存放至 cookie 中 | + +**示例:** + +注: 不要复制 + +```shell +curl -G 'https://api.bilibili.com/x/web-frontend/getbuvid' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "buvid": "54E5EFC1-3C8F-F690-2261-439E4F6A20A979439infoc" + } +} +``` + +
+ ## 接口获取 buvid3 / buvid4 > https://api.bilibili.com/x/frontend/finger/spi diff --git a/docs/misc/sign/v_voucher.md b/docs/misc/sign/v_voucher.md index bceb988..ccc25e9 100644 --- a/docs/misc/sign/v_voucher.md +++ b/docs/misc/sign/v_voucher.md @@ -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 @@ -14,7 +14,7 @@ ## 操作流程 -1. 快速以不正确的姿势请求接口, 直到返回 `v_voucher` 字段如下 +1. 快速以不正确的姿势请求接口, 直到返回 `v_voucher` 字段如下. 若 `data` 中没有 `v_voucher` 字段, 则检查响应头 `x-bili-gaia-vvoucher` ```json { @@ -31,9 +31,9 @@ 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`, 即恢复正常 ## 接口列表 diff --git a/docs/misc/sign/wbi.md b/docs/misc/sign/wbi.md index 8af36dc..dacbb28 100644 --- a/docs/misc/sign/wbi.md +++ b/docs/misc/sign/wbi.md @@ -382,7 +382,7 @@ bar=514&baz=1919810&foo=114&wts=1684805578&w_rid=bb97e15f28edf445a0e4420d36f0157 需要 `github.com/tidwall/gjson` 作为依赖 -```golang +```go package main import ( diff --git a/docs/search/search_request.md b/docs/search/search_request.md index beab4e2..038c8f7 100644 --- a/docs/search/search_request.md +++ b/docs/search/search_request.md @@ -10,9 +10,7 @@ *方式:GET* -认证方式:Cookie(SESSDATA) - -鉴权方式:[Wbi 签名](../misc/sign/wbi.md) +鉴权方式:[Wbi 签名](../misc/sign/wbi.md), Cookie 中含有 [`buvid3`](../misc/buvid3_4.md) 字段 返回和关键字相关的20条信息 @@ -611,7 +609,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/search/all/v2' \ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截 | +| code | num | 返回值 | 0: 成功
-400: 请求错误
-412: 请求被拦截
-1200: 被降级过滤的请求(搜索目标类型不存在) | | message | str | 错误信息 | 默认为0 | | ttl | num | 1 | | | data | obj | 信息本体 | | diff --git a/docs/user/medals.md b/docs/user/medals.md index dedccc5..d2374bc 100644 --- a/docs/user/medals.md +++ b/docs/user/medals.md @@ -51,7 +51,7 @@ | target_icon | str | 主播头像 URL | | | link | str | 主播主页 URL | | | live_status | num | 直播状态 | 0: 未直播
1: 正在直播
2: 轮播中 | -| offical | num | 主播认证类型 | 参见 [用户认证类型一览](offical_role.md) | +| offical | num | 主播认证类型 | 参见 [用户认证类型一览](official_role.md) | | uinfo_medal | str | 用户勋章信息 | | `list` 数组中的对象中的 `medal_info` 对象: @@ -64,7 +64,7 @@ | medal_color_start | num | 勋章开始颜色 | 十进制(自行转换为16进制) | | medal_color_end | num | 勋章结束颜色 | 同上 | | medal_color_border | num | 勋章边框颜色 | 同上 | -| guard_level | num | 守护等级? | | +| guard_level | num | 守护等级? | 1: 总督
2: 提督
3: 舰长 | | wearing_status | num | 佩戴状态 | 0: 未佩戴
1: 佩戴中 | | medal_id | num | 勋章 ID | | | intimacy | num | 当前亲密度 | | @@ -80,17 +80,17 @@ | ---- | ---- | ---- | ---- | | name | str | 勋章名称 | | | level | num | 勋章等级 | | -| color_start | num | 勋章开始颜色 | 十进制(自行转换为16进制) | -| color_end | num | 勋章结束颜色 | 同上 | +| color_start | num | 勋章渐变开始颜色 | 十进制(自行转换为16进制) | +| color_end | num | 勋章渐变结束颜色 | 同上 | | color_border | num | 勋章边框颜色 | 同上 | -| color | num | 勋章文本色? | 同上 | +| color | num | 勋章颜色 | 同上 | | id | num | 勋章 ID | | | typ | num | 勋章类型? | | -| is_light | num | 勋章亮色? | | +| is_light | num | 是否点亮? | | | ruid | num | 主播 mid | | -| guard_level | num | 守护等级? | | +| guard_level | num | 大航海等级 | 1: 总督
2: 提督
3: 舰长 | | score | num | 勋章分数? | | -| guard_icon | str | 守护徽章图标 URL? | | +| guard_icon | str | 大航海图标 URL? | 粉丝牌左边的图标 | | honor_icon | str | 荣誉徽章图标 URL? | | | v2_medal_color_start | str | 勋章开始颜色 | 16进制 | | v2_medal_color_end | str | 勋章结束颜色 | 同上 | diff --git a/docs/user/register.md b/docs/user/register.md index 403a0e7..21be1d6 100644 --- a/docs/user/register.md +++ b/docs/user/register.md @@ -60,7 +60,7 @@ curl 'https://passport.bilibili.com/web/sms/general/v2/send' \ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
1005:验证码错误
1007:验证码过期 | +| code | num | 返回值 | 0:成功
1005:验证码错误
1007:验证码过期 | | message | str | 错误信息 | 成功时无此字段 | | data | obj | 信息本体 | 只在成功时存在 | diff --git a/docs/user/space.md b/docs/user/space.md index d62edb3..8b5838b 100644 --- a/docs/user/space.md +++ b/docs/user/space.md @@ -842,8 +842,8 @@ curl 'https://api.bilibili.com/x/space/notice/set' \ | 字段 | 类型 | 内容 | 备注 | | ------ | ------------------- | -------- | ---- | -| status | bool | 用户是否存在 | true:存在
false:不存在 | -| data | 用户存在时:obj
用户不存在时:str| 用户存在时:信息本体
用户不存在时:错误信息 | | +| status | bool | 用户是否存在 | true:存在
false:不存在 | +| data | 用户存在时:obj
用户不存在时:str| 用户存在时:信息本体
用户不存在时:错误信息 | | `data`对象: @@ -859,7 +859,7 @@ curl 'https://api.bilibili.com/x/space/notice/set' \ | 字段 | 类型 | 内容 | 备注 | | ----------- | ---- | -------------- | ------------------------------ | -| bangumi | num | 追番及追剧 | 0:隐藏
1:公开
**下同** | +| bangumi | num | 追番及追剧 | 0:隐藏
1:公开
**下同** | | bbq | num | 轻视频 | | | channel | num | 频道 | | | coins_video | num | 最近投币的视频 | | @@ -876,7 +876,7 @@ curl 'https://api.bilibili.com/x/space/notice/set' \ | 项 | 类型 | 内容 | 备注 | | ---- | ---- | --------- | -------------------------------------------- | -| 0 | obj | 板块1 | 根据板块布局顺序排序
先左侧布局后右侧布局 | +| 0 | obj | 板块1 | 根据板块布局顺序排序
先左侧布局后右侧布局 | | n | obj | 板块(n+1) | | | …… | obj | …… | …… | @@ -3066,739 +3066,184 @@ curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/doc_list' \
+### 查询用户投稿音频明细 + +> https://api.bilibili.com/audio/music-service/web/song/upper + +*请求方法: GET* + + + +**URL参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --- | --- | --- | --- | --- | +| mid | num | 用户 mid | 必要 | | +| pn | num | 页码 | 必要 | 默认为 1 | +| ps | num | 每页项数 | 必要 | 默认为 30 | +| order | str | 排序方式 | 必要 | 1: 最新发布
2: 最多播放
3: 最多收藏 | + +**JSON回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| code | num | 返回值 | 0: 成功
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' +``` + +
+查看响应示例: + +```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 + } + ] + } +} +``` + +
+ ## 频道 -### 查询用户频道列表 - -> 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' -``` - -
-查看响应示例: - -```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" - }] - } -} -``` - -
- - - -### 查询用户频道中的视频 - -> 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:成功
-400:请求错误
-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' -``` - -
-查看响应示例: - -```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第二期:av10373352(2017年5月)\n第三期:av13619263(2017年8月)\n第四期:av18862091(2018年1月)\n第五期:av25092410(2018年6月)\n第六期:av42492515(2019年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 - } - } -} -``` - -
- -### 创建频道 - -> https://api.bilibili.com/x/space/channel/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -创建成功后会返回新建频道的id - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| name | str | 频道名 | 必要 | | -| intro | str | 频道简介 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53004:创建的频道已经满额
53007:频道名称已经存在
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cid": 138996 - } -} -``` - -
- -### 修改频道 - -> https://api.bilibili.com/x/space/channel/edit - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| cid | num | 频道id | 必要 | | -| name | str | 频道名 | 必要 | | -| intro | str | 频道简介 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53007:频道名称已经存在
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 删除频道 - -> https://api.bilibili.com/x/space/channel/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| cid | num | 需要删除的频道id | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 频道添加视频 - -> https://api.bilibili.com/x/space/channel/video/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -仅能添加自己是UP主的视频 - -如添加多个视频,仅会添加正确的 - -**注:完成后需要使用接口「查询用户频道中的视频」刷新** - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---------------------- | -| cid | num | 频道id | 必要 | | -| aids | nums | 要添加的目标稿件avid | 必要 | 多个使用","(%2C)分隔 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ---------------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53003:本频道里的视频已满
53006:提交视频已失效或频道里有(非该视频UP主) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 出错稿件avid列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---- | -| 0 | num | 出错稿件avid1 | | -| n | num | 出错稿件avid(n+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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [] -} -``` - -
- -### 频道删除视频 - -> https://api.bilibili.com/x/space/channel/video/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**注:完成后需要使用接口「查询用户频道中的视频」刷新** - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| cid | num | 频道id | 必要 | | -| aid | num | 要删除的目标稿件avid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53008:频道内没有视频
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 调整频道视频排序 - -> https://api.bilibili.com/x/space/channel/video/sort - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| cid | num | 频道id | 必要 | | -| aid | num | 要移动的目标稿件avid | 必要 | | -| to | num | 视频排序倒数位置 | 非必要 | 默认为1
1为列表底部,视频总数为首端
与显示顺序恰好相反 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 检查频道中有无失效视频 - -> https://api.bilibili.com/x/space/channel/video/check - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | ---- | -| cid | num | 目标频道id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
-404:无此项
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
+[所有旧接口](https://github.com/SocialSisterYi/bilibili-API-collect/blob/7d89ece2ac46425810647c4ac92acf5f3721cb68/docs/user/space.md#%E9%A2%91%E9%81%93) 已弃用, 现可用接口参见 [合集和视频列表信息](../video/collection.md) ## 课程 diff --git a/docs/video/action.md b/docs/video/action.md index 8d22b7a..58ac656 100644 --- a/docs/video/action.md +++ b/docs/video/action.md @@ -843,13 +843,19 @@ curl 'https://app.bilibili.com/x/v2/view/like/triple' \ *请求方式:POST* +鉴权方式: Cookie (buvid3) + **正文参数( application/x-www-form-urlencoded ):** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------------------- | ------------ | --------------------- | -| aid | num | 稿件 avid | 必要(可选) | avid 与 bvid 任选一个 | -| bvid | str | 稿件 bvid | 必要(可选) | avid 与 bvid任 选一个 | -| csrf | str | CSRF Token(位于 Cookie) | 必要 | | +| aid | num | 稿件 aid | 必要 (可选) | aid 与 bvid 任选一个 | +| bvid | str | 稿件 bvid | 必要 (可选) | aid 与 bvid 任选一个 | +| csrf | str | CSRF Token (即 Cookie 中 bili_jct) | 不必要 | | +| eab_x | num | 2 | 不必要 | 作用尚不明确 | +| ramval | num | 0 | 不必要 | 作用尚不明确 | +| source | str | web_normal | 不必要 | | +| ga | num | 1 | 不必要 | 可能与风控有关? | **json回复:** @@ -857,12 +863,11 @@ curl 'https://app.bilibili.com/x/v2/view/like/triple' \ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | ---------- | ------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| code | num | 返回值 | 0: 成功
-101: 账号未登录
-111: csrf校验失败
-400: 请求错误
403: 账号异常,操作失败
71000: 重复分享 | | message | str | 错误信息 | 默认为0 | | ttl | num | 1 | | | data | num | 当前分享数 | | - **示例:** 分享视频`BV1oA411776z` diff --git a/docs/video/appeal.md b/docs/video/appeal.md index 69d6a0f..2324e45 100644 --- a/docs/video/appeal.md +++ b/docs/video/appeal.md @@ -40,7 +40,7 @@ | remark | str | 类型备注 | | | ctime | str | | 意义不明 | | mtime | str | | 意义不明 | -| controls | 拥有时:array
没有时:null | 详细信息填写提示 | | +| controls | 拥有时:array
没有时:null | 详细信息填写提示 | | `controls`数组中的对象: diff --git a/docs/video/attribute_data.md b/docs/video/attribute_data.md index e6304a9..a3d1e70 100644 --- a/docs/video/attribute_data.md +++ b/docs/video/attribute_data.md @@ -4,6 +4,8 @@ ## attribute字段值(稿件属性位) +该字段前端已弃用, 相关接口返回恒为 `0`, 参见 [验证视频属性字段,实锤B站视频限流](https://shakaianee.top/archives/9/) + 该字段为二进制标志位,多个标志请用`OR`运算叠加 | 位 | 内容 | 备注 | diff --git a/docs/video/info.md b/docs/video/info.md index 21d68d7..25da11a 100644 --- a/docs/video/info.md +++ b/docs/video/info.md @@ -60,17 +60,24 @@ | cid | num | 视频1P cid | | | dimension | obj | 视频1P分辨率 | | | premiere | | null | | -| teenage_mode | num | | | +| teenage_mode | num | | 用于青少年模式 | | is_chargeable_season | bool | | | -| is_story | bool | | | -| no_cache | bool | | 作用尚不明确 | +| is_story | bool | 是否可以在 Story Mode 展示? | | +| is_upower_exclusive | bool | 是否为充电专属 | | +| is_upower_pay | bool | | | +| is_upower_show | bool | | | +| no_cache | bool | 是否不允许缓存? | | | pages | array | 视频分P列表 | | | subtitle | obj | 视频CC字幕信息 | | | staff | array | 合作成员列表 | 非合作视频无此项 | | is_season_display | bool | | | | user_garb | 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 | 争议/警告信息 | | `data`中的`desc_v2`数组: @@ -83,7 +90,7 @@ | 字段 | 类型 | 内容 | 备注 | |----------|-----|------|-----| -| raw_text | str | 简介内容 |type=1时显示原文
type=2时显示'@'+raw_text+' '并链接至biz_id的主页| +| raw_text | str | 简介内容 |type=1时显示原文
type=2时显示'@'+raw_text+' '并链接至biz_id的主页| | type | num | 类型 |1:普通,2:@他人| | biz_id | num |被@用户的mid|=0,当type=1| @@ -170,7 +177,7 @@ | 字段 | 类型 | 内容 | 备注 | |--------------|-------|----------|-----| | allow_submit | bool | 是否允许提交字幕 | | -| list | array | 字幕列表 | | +| list | array | 字幕列表 | 未登录为空 | `subtitle`对象中的`list`数组: @@ -233,7 +240,10 @@ |------------|-----|--------|---------------------------| | type | num | 成员会员类型 | 0:无
1:月会员
2:年会员 | | status | num | 会员状态 | 0:无
1:有 | +| due_date | num | 到期时间 | UNIX 毫秒时间戳 | +| vip_pay_type | num | | | | theme_type | num | 0 | | +| label | obj | | | `staff`数组中的对象中的`official`对象: @@ -343,20 +353,20 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ }, "owner": { "mid": 66606350, - "name": "Crazy_Bucket_陈楒潼", + "name": "陈楒潼桶桶桶", "face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg" }, "stat": { "aid": 85440373, - "view": 2353489, - "danmaku": 12026, - "reply": 2648, - "favorite": 58761, - "coin": 72088, - "share": 9539, + "view": 2387699, + "danmaku": 12146, + "reply": 2671, + "favorite": 58591, + "coin": 72578, + "share": 9598, "now_rank": 0, "his_rank": 55, - "like": 159350, + "like": 160683, "dislike": 0, "evaluation": "", "vt": 0 @@ -379,6 +389,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ "is_story": false, "is_upower_exclusive": false, "is_upower_play": false, + "is_upower_preview": false, "enable_vt": 0, "vt_display": "", "no_cache": false, @@ -400,44 +411,19 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ ], "subtitle": { "allow_submit": false, - "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 - } - } - ] + "list": [] }, "staff": [ { "mid": 66606350, "title": "UP主", - "name": "Crazy_Bucket_陈楒潼", + "name": "陈楒潼桶桶桶", "face": "https://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg", "vip": { "type": 2, "status": 1, - "due_date": 1706112000000, - "vip_pay_type": 0, + "due_date": 1737820800000, + "vip_pay_type": 1, "theme_type": 0, "label": { "path": "", @@ -459,7 +445,11 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ "avatar_subscript_url": "", "tv_vip_status": 0, "tv_vip_pay_type": 0, - "tv_due_date": 0 + "tv_due_date": 0, + "avatar_icon": { + "icon_type": 1, + "icon_resource": {} + } }, "official": { "role": 1, @@ -467,18 +457,18 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ "desc": "", "type": 0 }, - "follower": 650859, + "follower": 629775, "label_style": 0 }, { "mid": 53456, "title": "曲绘", "name": "Warma", - "face": "https://i2.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg", + "face": "https://i2.hdslb.com/bfs/face/87c0b7e4d3eedf04c458a82b9271013beaa4bc59.jpg", "vip": { "type": 2, "status": 1, - "due_date": 1738339200000, + "due_date": 1770480000000, "vip_pay_type": 0, "theme_type": 0, "label": { @@ -501,7 +491,11 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ "avatar_subscript_url": "", "tv_vip_status": 1, "tv_vip_pay_type": 1, - "tv_due_date": 1721145600 + "tv_due_date": 1753286400, + "avatar_icon": { + "icon_type": 1, + "icon_resource": {} + } }, "official": { "role": 1, @@ -509,13 +503,13 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ "desc": "", "type": 0 }, - "follower": 4223581, + "follower": 4600968, "label_style": 0 } ], "is_season_display": false, "user_garb": { - "url_image_ani_cut": "https://i0.hdslb.com/bfs/garb/item/311b29b795eb3f09ed0401a56eddf5c90b8fbfd6.bin" + "url_image_ani_cut": "" }, "honor_reply": { "honor": [ @@ -541,7 +535,9 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \ }, "like_icon": "", "need_jump_bv": false, - "disable_show_up_info": false + "disable_show_up_info": false, + "is_story_play": 1, + "is_view_self": false } } ``` diff --git a/docs/video/player.md b/docs/video/player.md index 25ca643..4caaf3e 100644 --- a/docs/video/player.md +++ b/docs/video/player.md @@ -4,44 +4,94 @@ 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* -**url 参数:** +**URL参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | --------- | ----------- | ----------------- | | aid | num | 稿件 avid | 必要 (可选) | aid 与 bvid 任选 | | bvid | str | 稿件 bvid | 必要 (可选) | aid 与 bvid 任选 | | cid | num | 稿件 cid | 必要 | | +| season_id | num | 番剧 season_id | 不必要 | | +| ep_id | num | 剧集 ep_id | 不必要 | | | w_rid | str | WBI 签名 | 不必要 | | | wts | num | 当前 unix 时间戳 | 不必要 | | -**json 回复:** +**JSON回复:** -根对象: +根对象: | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | +| code | num | 返回值 | 0: 成功
-400: 请求错误 | | message | str | 错误信息 | 默认为 0 | | ttl | num | 1 | | | data | obj | 数据本体 | | -`data` 对象: +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | --------- | ----- | -------- | ---- | -|aid | num | 视频 aid | | -|bvid | str | 视频 bvid | | -|cid | num | 视频 cid | | -|dm_mask | obj | | webmask 信息(如果没有这一项,说明这个视频没有防挡功能) | -|subtitle | obj | | 字幕信息(需要登录,不登录此项内容为 `[]` )| -|view_points| array | | 章节看点信息 | -| 其他 | ... | | 主要是观看记录、使用者等级权限、背景音乐等信息 | +| aid | num | 视频 aid | | +| bvid | str | 视频 bvid | | +| allow_bp | bool | | | +| no_share | bool | 禁止分享? | | +| cid | num | 视频 cid | | +| dm_mask | obj | webmask 防挡字幕信息 | 若无则没有防挡功能 | +| subtitle | obj | 字幕信息 | 若无则没有字幕, 若不登陆则为空 | +| 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) -`subtitle`对象: +`data` 对象中的 `subtitle` 对象: + | 字段 | 类型 | 内容 | 备注 | | --------- | ----- | -------- | ---- | |allow_submit|bool | true | | @@ -61,7 +112,7 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括: |lan_doc | str | "" | | |subtitles| array | | 不登录为 `[]` | -`subtitles` 数组内的元素: +`subtitle` 对象中的 `subtitles` 数组内的元素: | 字段 | 类型 | 内容 | 备注 | | --------- | ----- | -------- | ---- | @@ -75,8 +126,8 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括: |subtitle_url|str| 资源 url 地址 | | |type| num | 0 | | +`view_point` 数组内的元素: -`view_point` 数组内的元素: | 字段 | 类型 | 内容 | 备注 | | --------- | ----- | -------- | ---- | | content | num | 章节名 | | @@ -86,69 +137,299 @@ web 播放器的信息接口,提供正常播放需要的元数据,包括: | imgUrl | str | 图片资源地址 | | | logoUrl | str | "" | | -示例: +**示例:** + +未登录, `aid=1906473802` ```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 +
+查看响应示例: + +```json { - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "aid": 515345690, - "bvid": "BV1Fg411D7Jy", - ... // 省略 - "dm_mask": { - "cid": 825851971, - "plat": 0, - "fps": 30, - "time": 0, - "mask_url": "//upos-sz-staticcos-cmask.bilivideo.com/cmaskboss/825851971_30_0.webmask?trid=219266863a1442baa05086b4285ba923B&orderid=0,1&logo=00000000" - }, - "view_points": [ - { - "type": 2, - "from": 0, - "to": 27, - "content": "狗啃的", - "imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_0.jpg", - "logoUrl": "" - }, - { - "type": 2, - "from": 27, - "to": 63, - "content": "椒牌泡菜", - "imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_27.jpg", - "logoUrl": "" - }, ... // 省略 - ], - "subtitle": { - "allow_submit": true, - "lan": "", - "lan_doc": "", - "subtitles": [], // 未登录,下面是登录的版本 - "subtitles":[ - { - "id": 1042985852759993300, - "lan": "ai-zh", - "lan_doc": "中文(自动生成)", - "is_lock": false, - "subtitle_url": "//aisubtitle.hdslb.com/bfs/ai_subtitle/prod/5153456908258519712094280c7c2884b77929bab82f64530f?auth_key=1714795727-a8eb254b60bc4a73bc8662da51005340-0-1c305894e48e959979b163636461fb8f", - "type": 1, - "id_str": "1042985852759993344", - "ai_type": 0, - "ai_status": 2 - } - ] - } - } + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "aid": 1906473802, + "bvid": "BV1MU411S7iJ", + "allow_bp": false, + "no_share": false, + "cid": 1625992822, + "max_limit": 1000, + "page_no": 1, + "has_next": false, + "ip_info": { + "ip": "104.28.152.138", + "zone_ip": " 10.163.150.25", + "zone_id": 29409280, + "country": "美国", + "province": "加利福尼亚州", + "city": "东洛杉矶" + }, + "login_mid": 0, + "login_mid_hash": "", + "is_owner": false, + "name": "", + "permission": "0", + "level_info": { + "current_level": 0, + "current_min": 0, + "current_exp": 0, + "next_exp": 0, + "level_up": 0 + }, + "vip": { + "type": 0, + "status": 0, + "due_date": 0, + "vip_pay_type": 0, + "theme_type": 0, + "label": { + "path": "", + "text": "", + "label_theme": "", + "text_color": "", + "bg_style": 0, + "bg_color": "", + "border_color": "", + "use_img_label": false, + "img_label_uri_hans": "", + "img_label_uri_hant": "", + "img_label_uri_hans_static": "", + "img_label_uri_hant_static": "" + }, + "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": "", + "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 + } } ``` +
+ +已登陆, `aid=60977932` + +```shell +curl -G 'https://api.bilibili.com/x/player/v2' \ +--url-query 'aid=60977932' \ +--url-query 'cid=106101299' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```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 + } +} +``` + +
+ ## 播放反馈 > https://app.bilibili.com/x/resource/laser2 diff --git a/docs/video/report.md b/docs/video/report.md index 3887374..4cccc92 100644 --- a/docs/video/report.md +++ b/docs/video/report.md @@ -96,8 +96,8 @@ curl 'https://api.bilibili.com/x/v2/history/report' \ | w_video_duration | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 | | w_last_play_progress_time | num | 参见请求正文同名无`w_`前缀参数 | 非必要 | 单位 秒 | | web_location | num | 网页位置 | 非必要 | 视频详情页播放器: 1315873 | -| w_rid | num | WBI 签名 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | -| wts | num | UNIX 秒级时间戳 | 非必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | +| w_rid | num | WBI 签名 | 非必要 | 参见[WBI 签名](../misc/sign/wbi.md) | +| wts | num | UNIX 秒级时间戳 | 非必要 | 参见[WBI 签名](../misc/sign/wbi.md) | **正文参数( application/x-www-form-urlencoded ):** @@ -191,8 +191,8 @@ curl 'https://api.bilibili.com/x/click-interface/web/heartbeat' \ | w_stime | num | 开始播放时间戳? | 不必要 | UNIX 秒级时间戳 | | w_type | num | 视频类型 | 不必要 | 见[上报视频播放心跳(web端)](#上报视频播放心跳web端) | | web_location | num | 网页位置? | 不必要 | 1315873 | -| w_rid | num | WBI 签名 | 不必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | -| wts | num | UNIX 秒级时间戳 | 不必要 | 参见[WBI 签名](docs/misc/sign/wbi.md) | +| w_rid | num | WBI 签名 | 不必要 | 参见[WBI 签名](../misc/sign/wbi.md) | +| wts | num | UNIX 秒级时间戳 | 不必要 | 参见[WBI 签名](../misc/sign/wbi.md) | **正文参数 (application/x-www-form-urlencoded):** diff --git a/docs/video/status_number.md b/docs/video/status_number.md index 905a6a9..89dc0bc 100644 --- a/docs/video/status_number.md +++ b/docs/video/status_number.md @@ -1,9 +1,11 @@ # 视频状态数 +本页接口均已失效 + ## 视频状态数(仅avid)
-该接口已失效 +该接口已弃用 (HTTP 403) > https://api.bilibili.com/archive_stat/stat @@ -87,6 +89,9 @@ curl -G 'https://api.bilibili.com/archive_stat/stat' \ ## 视频状态数(bvid/avid) +
+该接口已失效 (HTTP 404) + > https://api.bilibili.com/x/web-interface/archive/stat *请求方式:GET* @@ -201,3 +206,5 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/stat' \ ```
+ +
diff --git a/yarn.lock b/yarn.lock index 4680b5b..c097ecb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -747,9 +747,9 @@ cac@^6.7.14: integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: - version "1.0.30001527" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz#813826554828245ccee776c850566dce12bdeaba" - integrity sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ== + version "1.0.30001653" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz" + integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== chalk@^5.0.0, chalk@^5.3.0: version "5.3.0"