Merge pull request #1374 from pskdje/patch-live-beta1
更新直播回放接口和直播信息流,添加直播投票和直播数据文档
This commit is contained in:
commit
a9586685f8
@ -268,6 +268,8 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接
|
||||
- [ ] [礼物相关](docs/live/gift.md)
|
||||
- [ ] [大航海/粉丝团](docs/live/guard.md)
|
||||
- [ ] [直播回放](docs/live/live_replay.md)
|
||||
- [ ] [直播数据](docs/live/live_data.md)
|
||||
- [ ] [直播投票](docs/live/live_vote.md)
|
||||
- [ ] [活动](docs/activity)
|
||||
- [ ] [活动列表](docs/activity/list.md)
|
||||
- [ ] [活动主题信息](docs/activity/info.md)
|
||||
|
||||
183
docs/live/live_data.md
Normal file
183
docs/live/live_data.md
Normal file
@ -0,0 +1,183 @@
|
||||
# 直播数据
|
||||
|
||||
## 获取直播场次的直播数据
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/live/StopLiveData
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
只能获取自己的直播数据。最好在直播结束时立即请求,否则直播时长可能不准确。
|
||||
|
||||
**URL参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| live_key | str | 标记直播场次的key | 必要 | 若不提供将会获得无效数据 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | 0:成功<br />-101:未登录 |
|
||||
| message | str | 提示信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| LiveTime | num | 该直播场次的直播时长 | 单位:秒,直播结束后还会增长 |
|
||||
| AddFans | num | 该直播场次的新增粉丝 | |
|
||||
| HamsterRmb | num | 该直播场次的收益 | |
|
||||
| NewFansClub | num | 该直播场次新获得粉丝勋章数量 | |
|
||||
| DanmuNum | num | 该直播场次的弹幕条数 | |
|
||||
| MaxOnline | num | 该直播场次的最大在线? | [需要验证] |
|
||||
| WatchedCount | num | 该直播场次的看过人数 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
获取自己的直播数据
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/live/StopLiveData?live_key=634808443264569139' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"LiveTime": 77603,
|
||||
"AddFans": 0,
|
||||
"HamsterRmb": 0,
|
||||
"NewFansClub": 0,
|
||||
"DanmuNum": 3,
|
||||
"MaxOnline": 13,
|
||||
"WatchedCount": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 获取直播表现
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/date/Overview
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | 0:成功<br />-101:未登录 |
|
||||
| message | str | 提示信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| graph | arr | 图表数据 | 在界面显示为雷达图 |
|
||||
| propose | null | (?) | |
|
||||
|
||||
`data.graph` 数组:
|
||||
|
||||
| 索引 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 | obj | 数据类别 | |
|
||||
| … | obj | 数据类别 | |
|
||||
|
||||
`data.graph` 数组中对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| name | str | 显示的名称 | |
|
||||
| index | str | 类别标识 | |
|
||||
| me | num | 自己在这个类别的数值 | |
|
||||
| max | num | 这个类别最外侧那条线的数值 | |
|
||||
| aver | num | 同水平主播在这个类别的数值 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
获取自己的直播表现
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/date/Overview' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"graph": [
|
||||
{
|
||||
"name": "收益",
|
||||
"index": "income",
|
||||
"me": 0,
|
||||
"max": 9.27,
|
||||
"aver": 8.04
|
||||
},
|
||||
{
|
||||
"name": "累计观看",
|
||||
"index": "watchedCount",
|
||||
"me": 5.13,
|
||||
"max": 7.01,
|
||||
"aver": 6.17
|
||||
},
|
||||
{
|
||||
"name": "新增粉丝",
|
||||
"index": "fans",
|
||||
"me": 0,
|
||||
"max": 2.58,
|
||||
"aver": 0
|
||||
},
|
||||
{
|
||||
"name": "用户平均观看时长",
|
||||
"index": "watchTime",
|
||||
"me": 9.31,
|
||||
"max": 11.82,
|
||||
"aver": 10.88
|
||||
},
|
||||
{
|
||||
"name": "开播时长",
|
||||
"index": "broadcast",
|
||||
"me": 17.57,
|
||||
"max": 17.42,
|
||||
"aver": 16.6
|
||||
},
|
||||
{
|
||||
"name": "弹幕数量",
|
||||
"index": "barrage",
|
||||
"me": 7.37,
|
||||
"max": 8.02,
|
||||
"aver": 6.91
|
||||
}
|
||||
],
|
||||
"propose": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
@ -40,6 +40,8 @@
|
||||
| pagination | obj | 分页信息 | |
|
||||
| archive_flag | bool | (?) | 作用尚不明确 |
|
||||
| can\_edit | num | (?) | 作用尚不明确 |
|
||||
| can_upload | bool | (?) | 作用尚不明确 |
|
||||
| has_third_platform_live| bool | (?) | 作用尚不明确 |
|
||||
|
||||
`data.replay_info` 数组中的对象:
|
||||
|
||||
@ -62,6 +64,7 @@
|
||||
| cover | str | 直播封面 | |
|
||||
| live_time | num | 直播时间 | 同`data.replay_info[i].start_time` |
|
||||
| live_type | num | 直播类型? | 作用尚不明确 |
|
||||
| platform | str | 直播平台 | |
|
||||
|
||||
`data.replay_info[i].video_info` 对象:
|
||||
|
||||
@ -111,65 +114,69 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorGetRepl
|
||||
"data": {
|
||||
"replay_info": [
|
||||
{
|
||||
"replay_id": 10707737,
|
||||
"replay_id": 13517082,
|
||||
"live_info": {
|
||||
"title": "摆",
|
||||
"title": "随缘摸鱼",
|
||||
"cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
|
||||
"live_time": 1747509268,
|
||||
"live_type": 1
|
||||
"live_time": 1756479520,
|
||||
"live_type": 1,
|
||||
"platform": "android_link"
|
||||
},
|
||||
"video_info": {
|
||||
"replay_status": 2,
|
||||
"replay_status": -8,
|
||||
"estimated_time": "1970-01-01 08:00:00",
|
||||
"duration": 1820,
|
||||
"duration": 9350,
|
||||
"alert_code": 2,
|
||||
"alert_message": "录像时长远小于开播时长,请关注直播时网络状况"
|
||||
},
|
||||
"alarm_info": {
|
||||
"code": 2,
|
||||
"message": "录像生成失败,请稍后再试",
|
||||
"cur_time": 1747557808,
|
||||
"code": -8,
|
||||
"message": "直播内容存在违规片段",
|
||||
"cur_time": 1756496581,
|
||||
"is_ban_publish": false
|
||||
},
|
||||
"room_id": 18992371,
|
||||
"live_key": "609043243693510451",
|
||||
"start_time": 1747509268,
|
||||
"end_time": 1747511088
|
||||
"room_id": 1899237171,
|
||||
"live_key": "637117671085969203",
|
||||
"start_time": 1756479520,
|
||||
"end_time": 1756488870
|
||||
},
|
||||
{
|
||||
"replay_id": 10707664,
|
||||
"replay_id": 13487274,
|
||||
"live_info": {
|
||||
"title": "摆",
|
||||
"title": "随缘摸鱼",
|
||||
"cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
|
||||
"live_time": 1747508293,
|
||||
"live_type": 1
|
||||
"live_time": 1756385910,
|
||||
"live_type": 1,
|
||||
"platform": "android_link"
|
||||
},
|
||||
"video_info": {
|
||||
"replay_status": 2,
|
||||
"estimated_time": "1970-01-01 08:00:00",
|
||||
"duration": 206,
|
||||
"duration": 14985,
|
||||
"alert_code": 2,
|
||||
"alert_message": "录像时长远小于开播时长,请关注直播时网络状况"
|
||||
},
|
||||
"alarm_info": {
|
||||
"code": 2,
|
||||
"message": "录像生成失败,请稍后再试",
|
||||
"cur_time": 1747557808,
|
||||
"cur_time": 1756496581,
|
||||
"is_ban_publish": false
|
||||
},
|
||||
"room_id": 18992371,
|
||||
"live_key": "609041817764368179",
|
||||
"start_time": 1747508293,
|
||||
"end_time": 1747508499
|
||||
"room_id": 1899237171,
|
||||
"live_key": "636823272552664883",
|
||||
"start_time": 1756385910,
|
||||
"end_time": 1756400895
|
||||
}
|
||||
],
|
||||
"pagination": {
|
||||
"page": 1,
|
||||
"page_size": 2,
|
||||
"total": 29
|
||||
"total": 16
|
||||
},
|
||||
"archive_flag": false,
|
||||
"can_edit": 1
|
||||
"can_edit": 1,
|
||||
"can_upload": false,
|
||||
"has_third_platform_live": false
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -469,7 +476,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/DeleteSliceDr
|
||||
|
||||
鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
|
||||
|
||||
未生成整场直播回放时将进行生成。
|
||||
是否生成回放取决于回放状态,处于可生成回放状态且未生成整场直播回放时将进行生成。
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
@ -486,7 +493,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/DeleteSliceDr
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -101:未登录<br />-111:csrf校验失败<br />0:成功<br />100:非法参数<br />210:回放id或场次key无效 |
|
||||
| code | num | 返回值 | -101:未登录<br />-111:csrf校验失败<br />0:成功<br />100:非法参数<br />210:回放id或场次key无效<br />217:未找到直播录像 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | |
|
||||
@ -634,7 +641,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
|
||||
</details>
|
||||
|
||||
## 轮询回放合成状态
|
||||
## 轮询回放状态
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoUidRecord
|
||||
|
||||
@ -769,7 +776,8 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| list | arr | 直播回放视频列表 | 如果该场回放没有视频流将为`null` |
|
||||
| list | arr 或 null | 直播回放视频列表 | 如果该场回放没有视频流将为`null` |
|
||||
| ban_list | null 或 arr | 不可发布的回放时间 | 如果该场回放没有不可发布的时间将为`null` |
|
||||
|
||||
`data.list` 数组中的对象:
|
||||
|
||||
@ -780,12 +788,19 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
| stream | str | 直播回放视频流 | |
|
||||
| type | num | 类型? | 2:一般回放? |
|
||||
|
||||
`data.ban_list` 数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| start_time | num | 不可发布片段的开始时间戳 | Unix秒时间戳 |
|
||||
| end_time | num | 不可发布片段的结束时间戳 | Unix秒时间戳 |
|
||||
|
||||
**示例:**
|
||||
|
||||
获取某个场次的视频流
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStream?live_key=607113721045847859&start_time=1746863101&end_time=1746879299' \
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStream?live_key=637117671085969203&start_time=1756479520&end_time=1756488870' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
@ -800,22 +815,16 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStrea
|
||||
"data": {
|
||||
"list": [
|
||||
{
|
||||
"start_time": 1746863103,
|
||||
"end_time": 1746879246,
|
||||
"stream": "https://bvc-live.bilivideo.com/hls-record-gateway/videoPlay?biz_id=live2vod-clip&end_time=1746879246&header_name=1746863103.m4s&host_id=edge-hls-bvc-self-cn-jsyz-ct-03-59-6d854b4bd8-gnlb7&no_end=0&schema=https&sign=12f649dd540096672745d60b84f18eda&start_time=1746863103&stream_name=live_438160221_32373699&ts=1752930893&version=2",
|
||||
"start_time": 1756479528,
|
||||
"end_time": 1756488870,
|
||||
"stream": "https://bvc-live.bilivideo.com/hls-record-gateway/videoPlay?none=为了防止信息泄露,不提供完整链接。目前该视频流可以获取违规片段的视频。",
|
||||
"type": 2
|
||||
},
|
||||
}
|
||||
],
|
||||
"ban_list": [
|
||||
{
|
||||
"start_time": 1746879267,
|
||||
"end_time": 1746879269,
|
||||
"stream": "https://bvc-live.bilivideo.com/hls-record-gateway/videoPlay?biz_id=live2vod-clip&end_time=1746879269&header_name=1746863104.m4s&host_id=edge-hls-bvc-self-cn-jsyz-ct-03-59-6d854b4bd8-gnlb7&no_end=0&schema=https&sign=5c63605f1fa88561a6257b6812725b4f&start_time=1746879267&stream_name=live_438160221_32373699&ts=1752930893&version=2",
|
||||
"type": 2
|
||||
},
|
||||
{
|
||||
"start_time": 1746879269,
|
||||
"end_time": 1746879298,
|
||||
"stream": "https://bvc-live.bilivideo.com/hls-record-gateway/videoPlay?biz_id=live2vod-clip&end_time=1746879298&header_name=1746863105.m4s&host_id=edge-hls-bvc-self-cn-jsyz-ct-03-59-6d854b4bd8-gnlb7&no_end=0&schema=https&sign=70929627354f4380b54b97fcdb69c8a2&start_time=1746879269&stream_name=live_438160221_32373699&ts=1752930893&version=2",
|
||||
"type": 2
|
||||
"start_time": 1756487070,
|
||||
"end_time": 1756488870
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -837,8 +846,8 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStrea
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| live_key | str | 标记直播场次的key | 必要 | |
|
||||
| start_tm | str | 开始时间 | 必要 | 格式为`yyyy-mm-dd+HH:MM:SS`,时区为`UTC+08:00`(中国标准时间);取值对实际无影响 |
|
||||
| end_tm | str | 开始时间 | 必要 | 格式为`yyyy-mm-dd+HH:MM:SS`,时区为`UTC+08:00`(中国标准时间);取值对实际无影响 |
|
||||
| start_tm | str | 开始时间 | 必要 | 格式为`yyyy-mm-dd HH:MM:SS`,时区为`UTC+08:00`(中国标准时间);取值对实际无影响 |
|
||||
| end_tm | str | 开始时间 | 必要 | 格式为`yyyy-mm-dd HH:MM:SS`,时区为`UTC+08:00`(中国标准时间);取值对实际无影响 |
|
||||
| web_location | str | (?) | |
|
||||
|
||||
**json回复:**
|
||||
@ -862,6 +871,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStrea
|
||||
| max_value | num | (?) | 效果未知 |
|
||||
| high_light_data | arr | 高光时刻数据 | |
|
||||
| ass_url | str | ASS字幕链接 | 用作弹幕显示 |
|
||||
| high_light_stat | obj | 高亮状态信息 | |
|
||||
|
||||
`data.session_data` 数组中的对象:
|
||||
|
||||
@ -882,6 +892,15 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStrea
|
||||
| cover | str | (?) | 目前为`""` |
|
||||
| extra | str | (?) | 目前为`""` |
|
||||
|
||||
`data.high_light_stat` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| original_hl | num | “高光时刻”数量 | 有“高光时刻”时存在 |
|
||||
| manual_hl | num | “已保存”数量 | 有“已保存”时存在,调用[手动保存高亮片段](#手动保存高亮片段)进行保存 |
|
||||
|
||||
注: 可能还存在一个“回溯录制”的字段。
|
||||
|
||||
**示例:**
|
||||
|
||||
获取场次key为`607113721045847859`的会话数据
|
||||
@ -902,144 +921,241 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetLiveSessio
|
||||
"data": {
|
||||
"session_data": [
|
||||
{
|
||||
"ts": 1746863100,
|
||||
"ts": 1752927300,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863160,
|
||||
"ts": 1752927360,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863220,
|
||||
"ts": 1752927420,
|
||||
"value": 0
|
||||
},
|
||||
// 省略掉大部分重复内容
|
||||
{
|
||||
"ts": 1752946620,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863280,
|
||||
"ts": 1752946680,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863340,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863400,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863460,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863520,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863580,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863640,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863700,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863760,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746863820,
|
||||
"value": 0
|
||||
},
|
||||
// 省略100多条数据
|
||||
{
|
||||
"ts": 1746878520,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878580,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878640,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878700,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878760,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878820,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878880,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746878940,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746879000,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746879060,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746879120,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746879180,
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"ts": 1746879240,
|
||||
"ts": 1752946740,
|
||||
"value": 0
|
||||
}
|
||||
],
|
||||
"max_danmaku": 1746864660,
|
||||
"max_pcu": 1746864660,
|
||||
"max_danmaku": 1752928860,
|
||||
"max_pcu": 1752928200,
|
||||
"max_value": 0,
|
||||
"high_light_data": [
|
||||
{
|
||||
"id": 6226272,
|
||||
"id": 9628113,
|
||||
"type": 1,
|
||||
"start_time": 1746873300,
|
||||
"end_time": 1746873480,
|
||||
"start_time": 1752928860,
|
||||
"end_time": 1752929040,
|
||||
"title": "弹幕高光 Top 1",
|
||||
"cover": "",
|
||||
"extra": ""
|
||||
},
|
||||
{
|
||||
"id": 6226274,
|
||||
"id": 9628114,
|
||||
"type": 1,
|
||||
"start_time": 1746873120,
|
||||
"end_time": 1746873420,
|
||||
"start_time": 1752938460,
|
||||
"end_time": 1752938640,
|
||||
"title": "弹幕高光 Top 2",
|
||||
"cover": "",
|
||||
"extra": ""
|
||||
},
|
||||
{
|
||||
"id": 6226271,
|
||||
"id": 9628115,
|
||||
"type": 1,
|
||||
"start_time": 1752938040,
|
||||
"end_time": 1752938220,
|
||||
"title": "弹幕高光 Top 3",
|
||||
"cover": "",
|
||||
"extra": ""
|
||||
},
|
||||
{
|
||||
"id": 9628112,
|
||||
"type": 2,
|
||||
"start_time": 1746864600,
|
||||
"end_time": 1746864780,
|
||||
"start_time": 1752928140,
|
||||
"end_time": 1752928320,
|
||||
"title": "进房高光时刻",
|
||||
"cover": "",
|
||||
"extra": ""
|
||||
}
|
||||
],
|
||||
"ass_url": "https://jssz-boss.hdslb.com/live2arc_anchor_video/dmass_1899237171_607113721045847859.ass?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=y4zI4XTQzlOkmSKg%2F20250520%2Fjssz%2Fs3%2Faws4_request&X-Amz-Date=20250520T130358Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=5e3ddfbcb8893dc6e76deea7981165e18e5df9a7579f4e6e97c7a32abec53d84"
|
||||
"ass_url": "https://jssz-boss.hdslb.com/live2arc_anchor_video/dmass_1899237171_625727121464233779.ass?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=y4zI4XTQzlOkmSKg%2F20250802%2Fjssz%2Fs3%2Faws4_request\u0026X-Amz-Date=20250802T072504Z\u0026X-Amz-Expires=7200\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=384b42382469059a1f4c6b04c7bd2290a0c74c01375df1681eedb3ba8aca5c3c",
|
||||
"high_light_stat": {
|
||||
"original_hl": 4,
|
||||
"manual_hl": 6
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 获取用户高光列表
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/UserGetManualHighlightList
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
**url参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| live_key | str | 标记直播场次的key | 必要 | |
|
||||
| manual_type | num | 查询类型 | 必要 | 1:回溯录制<br />2:已保存片段 |
|
||||
| web_location | str | (?) | 非必要 | 作用尚不明确 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -400:请求错误<br />-101:未登录<br />0:成功 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| high_light_stat | obj | 高亮状态信息 | |
|
||||
| manual_highlight_list | arr | 高光列表 | 有内容时存在 |
|
||||
|
||||
`data.manual_highlight_list` 数组:
|
||||
|
||||
| 索引 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 | obj | 第一条高光信息 | 最少存在1条,目前没有高光内容将看不到这个数组 |
|
||||
| … | obj | 某一条高光信息 | |
|
||||
| i | obj | 最后一条高光信息 | |
|
||||
|
||||
`data.manual_highlight_list` 数组中对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| manual_id | num | 片段id | |
|
||||
| highlight_title | str | 片段标题 | |
|
||||
| start_ts | num | 开始时间戳 | Unix 秒时间戳 |
|
||||
| end_ts | num | 结束时间戳 | Unix 秒时间戳 |
|
||||
| uid | num | 保存者uid? | |
|
||||
| ruid | num | 主播uid | |
|
||||
| live_key | str | 标记直播场次的key | |
|
||||
|
||||
`data.high_light_stat` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| original_hl | num | “高光时刻”数量 | 有“高光时刻”时存在 |
|
||||
| manual_hl | num | “已保存”数量 | 有“已保存”时存在,调用[手动保存高亮片段](#手动保存高亮片段)进行保存 |
|
||||
|
||||
注: 可能还存在一个“回溯录制”的字段。
|
||||
|
||||
**示例:**
|
||||
|
||||
获取用户保存列表
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/UserGetManualHighlightList?live_key=625727121464233779&manual_type=2' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
只有高光时刻的示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"high_light_stat": {
|
||||
"original_hl": 4
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
有保存片段的示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"manual_highlight_list": [
|
||||
{
|
||||
"manual_id": 14434,
|
||||
"highlight_title": "手动保存片段【6】",
|
||||
"start_ts": 1752935402,
|
||||
"end_ts": 1752935402,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
},
|
||||
{
|
||||
"manual_id": 14428,
|
||||
"highlight_title": "手动保存片段【5】",
|
||||
"start_ts": 1752935402,
|
||||
"end_ts": 1752935204,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
},
|
||||
{
|
||||
"manual_id": 14426,
|
||||
"highlight_title": "手动保存片段【4】",
|
||||
"start_ts": 1752935402,
|
||||
"end_ts": 1752935404,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
},
|
||||
{
|
||||
"manual_id": 14425,
|
||||
"highlight_title": "手动保存片段【3】",
|
||||
"start_ts": 1752935402,
|
||||
"end_ts": 1752935404,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
},
|
||||
{
|
||||
"manual_id": 14424,
|
||||
"highlight_title": "手动保存片段【2】",
|
||||
"start_ts": 1752927342,
|
||||
"end_ts": 1752935404,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
},
|
||||
{
|
||||
"manual_id": 14423,
|
||||
"highlight_title": "手动保存片段【1】",
|
||||
"start_ts": 1752927336,
|
||||
"end_ts": 1752946748,
|
||||
"uid": 438160221,
|
||||
"ruid": 438160221,
|
||||
"live_key": "625727121464233779"
|
||||
}
|
||||
],
|
||||
"high_light_stat": {
|
||||
"original_hl": 4,
|
||||
"manual_hl": 6
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -1134,6 +1250,72 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
|
||||
</details>
|
||||
|
||||
## 手动保存高亮片段
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/UserManualSaveHighlight
|
||||
|
||||
*请求方法: POST*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| live_key | str | 标记直播场次的key | 必要 | 必须为自己的live_key |
|
||||
| start_ts | num | 开始时间戳 | 必要 | Unix 秒时间戳 |
|
||||
| end_ts | num | 结束时间戳 | 必要 | Unix 秒时间戳 |
|
||||
| csrf | str | CSRF Token(位于cookie) | 必要 | |
|
||||
|
||||
注: 开始时间减结束时间的结果小于1可能导致[直播回放片段发布页面](#直播回放片段发布页面)无法处理这个片段。
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -400:请求错误<br />-111:csrf校验失败<br />-101:未登录<br />0:成功<br /> |
|
||||
| message | str | 错误信息 | |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | 成功时为空对象 |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | `-1` | |
|
||||
| message | str | 错误提示 | `主播没有对应场次` , `保存时间点未开播` |
|
||||
|
||||
**示例:**
|
||||
|
||||
手动保存一个片段
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/UserManualSaveHighlight' \
|
||||
--data-urlencode 'live_key=625727121464233779' \
|
||||
--data-urlencode 'start_ts=1752935402' \
|
||||
--data-urlencode 'end_ts=1752935404' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxx;bili_jct=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 投稿直播回放片段
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorPublishVideoSlice
|
||||
@ -1156,7 +1338,8 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
| av_highlight | num | 高光绑定? | 非必要 | |
|
||||
| with_subtitle | num | 是否自动生成字幕? | 非必要 | 效果不明确 |
|
||||
| with_danmaku | num | 是否带弹幕? | 非必要 | 传递`1`时可能导致处于“发布中”状态时不在[获取已发布片段的信息](#获取已发布片段的信息)中显示 |
|
||||
| with_reserve | num | (?) | 非必要 | 作用尚不明确 |
|
||||
| with_reserve | num | 投稿携带下场直播提醒 | 非必要 | 0:不携带,1:携带 |
|
||||
| av_speed | str | 倍速投稿 | 非必要 | 格式为 `倍速值 + "x"` ,使用非1x倍速时可能导致处于“发布中”状态时不在[获取已发布片段的信息](#获取已发布片段的信息)中显示<br />允许值: `0.5x` , `0.75x` , `1.0x` , `1.25x` , `1.5x` , `2.0x` |
|
||||
| csrf | str | CSRF Token(位于cookie) | 必要 | |
|
||||
|
||||
**json回复:**
|
||||
@ -1165,7 +1348,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVide
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -111:csrf校验失败<br />-101:未登录<br />0:成功<br />4000:时长过长<br />4001:操作太快<br />4002:片段已投稿<br />4003:请选择精彩片段再投稿哦<br />4006:标题已使用 |
|
||||
| code | num | 返回值 | -111:csrf校验失败<br />-101:未登录<br />0:成功<br />4000:时长过长<br />4001:操作太快<br />4002:片段已投稿<br />4003:请选择精彩片段再投稿哦<br />4006:标题已使用<br />4008:不被允许的视频倍速<br />4009:该片段存在违规内容,不允许投稿 |
|
||||
| message | str | 错误信息 | |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | 成功时有效 |
|
||||
@ -1220,7 +1403,7 @@ curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorPublish
|
||||
|
||||
2. (可选)请求[获取回放的信息](#获取回放的信息)接口,生成合成进度页面;
|
||||
|
||||
3. [轮询回放合成状态](#轮询回放合成状态),当状态变为`30`转到流程4,变为`-30`转到流程5;
|
||||
3. [轮询回放合成状态](#轮询回放状态),当状态变为`30`转到流程4,变为`-30`转到流程5;
|
||||
|
||||
4. 再次[请求整场直播回放下载链接](#请求整场直播回放下载链接),获取下载链接并下载。
|
||||
|
||||
|
||||
470
docs/live/live_vote.md
Normal file
470
docs/live/live_vote.md
Normal file
@ -0,0 +1,470 @@
|
||||
# 直播投票
|
||||
|
||||
## 查询投票信息
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/votePanel
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
**url参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -400:请求错误<br />-101:未登录<br />0:成功 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | 不是登录信息对应的直播间时将为 `null` |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| vote_info | obj | 当前活动的投票信息 | 若当前没有活动的投票将为空对象 |
|
||||
| templates | arr | 投票模板 | |
|
||||
|
||||
`data.vote_info` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| status | num | 投票状态 | 见[投票状态](#投票状态)枚举 |
|
||||
| question | str | 投票问题 | |
|
||||
| options | arr | 投票选项 | |
|
||||
| duration | num | 投票持续时间 | 单位:毫秒 |
|
||||
| result | num | 投票结果偏向哪一方状态 | |
|
||||
| result_text | str | 投票结果偏向哪一方 | |
|
||||
| etime_str | str | 投票结束时间 | |
|
||||
| left_duration | num | 投票剩余时间 | 单位:毫秒,投票结束后不存在 |
|
||||
| interaction_id | num | 投票互动id | |
|
||||
| template_id | num | 投票模板id | 使用模板时存在 |
|
||||
|
||||
`data.vote_info.options` 数组:
|
||||
|
||||
| 索引 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 | obj | 投票选项1 | |
|
||||
| 1 | obj | 投票选项2 | |
|
||||
|
||||
`data.vote_info.options` 数组中对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| idx | num | 选项id | |
|
||||
| desc | str | 投票选项描述 | |
|
||||
| percent | num | 投票选项占比显示 | |
|
||||
|
||||
`data.templates` 数组:
|
||||
|
||||
| 索引 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 | obj | 投票模板信息 | |
|
||||
| … | obj | 投票模板信息 | |
|
||||
|
||||
`data.templates` 数组中对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| template_id | num | 模板id | |
|
||||
| question | str | 投票问题 | |
|
||||
| option_a | str | 投票选项A | |
|
||||
| option_b | str | 投票选项B | |
|
||||
|
||||
**示例:**
|
||||
|
||||
查询投票信息
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/votePanel?room_id=1'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"vote_info": {
|
||||
"status": 4,
|
||||
"question": "醒醒",
|
||||
"options": [
|
||||
{
|
||||
"idx": 1,
|
||||
"desc": "醒",
|
||||
"percent": 0.5
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"desc": "睡",
|
||||
"percent": 0.5
|
||||
}
|
||||
],
|
||||
"duration": 600000,
|
||||
"result": 1,
|
||||
"result_text": "平局",
|
||||
"etime_str": "08-31 15:44",
|
||||
"left_duration": 549660,
|
||||
"interaction_id": 120122595433984
|
||||
},
|
||||
"templates": [
|
||||
{
|
||||
"template_id": 54339003518976,
|
||||
"question": "哪边赢",
|
||||
"option_a": "左",
|
||||
"option_b": "右"
|
||||
},
|
||||
{
|
||||
"template_id": 48570973661696,
|
||||
"question": "只因你太美唱的好吗?",
|
||||
"option_a": "你干嘛",
|
||||
"option_b": "哎哟"
|
||||
},
|
||||
// 省略了大部分内容
|
||||
{
|
||||
"template_id": 46203444257280,
|
||||
"question": "№!",
|
||||
"option_a": "虾头",
|
||||
"option_b": "抽象"
|
||||
},
|
||||
{
|
||||
"template_id": 96177095781888,
|
||||
"question": "相信奇迹吗",
|
||||
"option_a": "相信",
|
||||
"option_b": "必须相信"
|
||||
},
|
||||
{
|
||||
"template_id": 103827382481920,
|
||||
"question": "1",
|
||||
"option_a": "1",
|
||||
"option_b": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 查询投票历史
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/voteHistory
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
**url参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -400:请求错误<br />-101:未登录<br />0:成功 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | 不是登录信息对应的直播间时将为空对象 |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| history | arr | 投票历史列表 | |
|
||||
|
||||
`data.history` 数组:
|
||||
|
||||
| 索引 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 | obj | 投票历史 | 与[查询投票信息](#查询投票信息)`data.vote_info`相同 |
|
||||
| … | obj | 投票历史 | 与[查询投票信息](#查询投票信息)`data.vote_info`相同 |
|
||||
| 9 | obj | 投票历史 | 与[查询投票信息](#查询投票信息)`data.vote_info`相同 |
|
||||
|
||||
`data.history` 数组中对象:
|
||||
|
||||
与 [查询投票信息](#查询投票信息) json回复的 `data.vote_info` 相同。
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/voteHistory?room_id=1' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"history": [
|
||||
{
|
||||
"status": 5,
|
||||
"question": "醒醒",
|
||||
"options": [
|
||||
{
|
||||
"idx": 1,
|
||||
"desc": "醒",
|
||||
"percent": 0.5
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"desc": "睡",
|
||||
"percent": 0.5
|
||||
}
|
||||
],
|
||||
"duration": 600000,
|
||||
"result": 1,
|
||||
"result_text": "平局",
|
||||
"etime_str": "08-31 15:44",
|
||||
"interaction_id": 120122595433984
|
||||
},
|
||||
{
|
||||
"status": 5,
|
||||
"question": "会不会睡死?",
|
||||
"options": [
|
||||
{
|
||||
"idx": 1,
|
||||
"desc": "包会的",
|
||||
"percent": 0.5
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"desc": "不会的",
|
||||
"percent": 0.5
|
||||
}
|
||||
],
|
||||
"duration": 60000,
|
||||
"result": 1,
|
||||
"result_text": "平局",
|
||||
"etime_str": "08-31 14:57",
|
||||
"interaction_id": 120117830648832
|
||||
},
|
||||
{
|
||||
"status": 5,
|
||||
"question": "会不会睡着?",
|
||||
"options": [
|
||||
{
|
||||
"idx": 1,
|
||||
"desc": "包会的",
|
||||
"percent": 0.5
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"desc": "不会的",
|
||||
"percent": 0.5
|
||||
}
|
||||
],
|
||||
"duration": 180000,
|
||||
"result": 1,
|
||||
"result_text": "平局",
|
||||
"etime_str": "08-31 14:53",
|
||||
"interaction_id": 120117121798656
|
||||
},
|
||||
{
|
||||
"status": 5,
|
||||
"question": "能不能一把过",
|
||||
"options": [
|
||||
{
|
||||
"idx": 1,
|
||||
"desc": "能",
|
||||
"percent": 0.5
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"desc": "不能",
|
||||
"percent": 0.5
|
||||
}
|
||||
],
|
||||
"duration": 60000,
|
||||
"result": 1,
|
||||
"result_text": "平局",
|
||||
"etime_str": "08-31 14:41",
|
||||
"interaction_id": 120115796409344,
|
||||
"template_id": 3109187328000
|
||||
}
|
||||
// 省略其余6项
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 投票状态
|
||||
|
||||
此处列出已发现的投票状态,在投票信息和直播信息流 `DM_INTERACTION` 的类型 `101` 等地方使用。
|
||||
|
||||
当前状态信息来自混淆代码寻找而来。
|
||||
|
||||
| 值 | 含义 | 备注 |
|
||||
| -- | ---- | ---- |
|
||||
| 0 | | 键名 `NONE` |
|
||||
| 1 | 等待审核 | 键名 `WAITING_AUDIT` |
|
||||
| 2 | 审核失败 | 键名 `AUDIT_FAILED` |
|
||||
| 4 | 投票进行中 | 键名 `DURING` |
|
||||
| 5 | 投票结束 | 键名 `END` |
|
||||
| 6 | | 键名 `STOP` |
|
||||
|
||||
## 创建直播投票
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote
|
||||
|
||||
*请求方法: POST*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
|
||||
|
||||
投票创建完成后,投票信息和审核结果将以直播信息流 `DM_INTERACTION` 的类型 `101` 下发。
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
|
||||
| duration | num | 持续时间 | 必要 | 必须为整数,目前范围`0<d<10` |
|
||||
| question | str | 投票问题 | 必要 | |
|
||||
| option_a | str | 选项A | 必要 | |
|
||||
| option_b | str | 选项B | 必要 | |
|
||||
| template_id | num | 投票模板id | 非必要 | |
|
||||
| live_key | str | 直播场次key | 非必要 | 需要更多信息 |
|
||||
| sub_session_key | str | (?) | 非必要 | 需要更多信息 |
|
||||
| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
|
||||
| csrf | str | CSRF Token(位于cookie) | 必要 | |
|
||||
| visit_id | str | (?) | 非必要 | 作用尚不明确 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -404:不是自己的直播间<br />-400:参数错误<br />-101:未登录<br />-111:csrf校验失败<br />0:成功 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| interaction_id | num | 投票互动id | |
|
||||
|
||||
**示例:**
|
||||
|
||||
创建一个投票
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote' \
|
||||
--data-urlencode 'room_id=3' \
|
||||
--data-urlencode 'duration=1' \
|
||||
--data-urlencode 'question=abcdef' \
|
||||
--data-urlencode 'option_a=A' \
|
||||
--data-urlencode 'option_b=B' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxx;bili_jct=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data":{
|
||||
"interaction_id":120008099262976
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 中断直播投票
|
||||
|
||||
> https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote
|
||||
|
||||
*请求方法: POST*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| interaction_id | num | 投票互动id | 必要 | 必须为该登录信息创建的投票 |
|
||||
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
|
||||
| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
|
||||
| csrf | str | CSRF Token(位于cookie) | 必要 | |
|
||||
| visit_id | str | (?) | 非必要 | 作用尚不明确 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | num | 返回值 | -400:参数错误<br />-101:未登录<br />-111:csrf校验失败<br />0:成功<br />1003402:修改投票状态失败 |
|
||||
| message | str | 错误信息 | 成功时为`"0"` |
|
||||
| ttl | num | `1` | |
|
||||
| data | null | 无 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
中断某个投票
|
||||
|
||||
```shell
|
||||
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote' \
|
||||
--data-urlencode 'interaction_id=120122595433984' \
|
||||
--data-urlencode 'room_id=1' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxx;bili_jct=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 弹幕投票主播侧界面
|
||||
|
||||
> https://live.bilibili.com/p/html/live-app-guessing-game/anchor_vote.html
|
||||
|
||||
直接访问此页面存在部分功能不可用的情况。
|
||||
|
||||
**URL查询参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| room_id | num | 直播间id | 必要 | 必须为自己的直播间 |
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user