diff --git a/README.md b/README.md
index 01d0f1d..5d5e8d0 100644
--- a/README.md
+++ b/README.md
@@ -259,6 +259,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接
- [ ] [直播流水](docs/live/live_bill.md)
- [ ] [礼物相关](docs/live/gift.md)
- [ ] [大航海/粉丝团](docs/live/guard.md)
+ - [ ] [直播回放](docs/live/live_replay.md)
- [ ] [活动](docs/activity)
- [ ] [活动列表](docs/activity/list.md)
- [ ] [活动主题信息](docs/activity/info.md)
diff --git a/docs/live/danmaku.md b/docs/live/danmaku.md
index 68b8309..abff259 100644
--- a/docs/live/danmaku.md
+++ b/docs/live/danmaku.md
@@ -408,10 +408,10 @@ curl 'https://api.live.bilibili.com/xlive/web-room/v1/dM/AjaxSetConfig' \
| bubble | num | (?) | 非必要 | 值为`0` |
| room\_type | num | (?) | 非必要 | `0` |
| jumpfrom | num | (?) | 非必要 | `0` |
-| reply\_mid | num | (?) | 非必要 | `0` |
+| reply\_mid | num | 要“@”的用户mid | 非必要 | 默认为`0` |
| reply\_attr | num | (?) | 非必要 | `0` |
-| reply\_uname | str | (?) | 非必要 | `""` |
-| replay\_dmid | str | (?) | 非必要 | `""` |
+| reply\_uname | str | 要“@”的用户名称 | 非必要 | 默认为`""`,提供reply\_mid时不需要提供 |
+| replay\_dmid | str | 要回复的弹幕id | 非必要 | 默认为`""` |
| statistics | str | (?) | 非必要 | `{"appId":100,"platform":5}` |
| csrf_token | str | 同csrf | 非必要 | |
diff --git a/docs/live/live_replay.md b/docs/live/live_replay.md
new file mode 100644
index 0000000..0bad582
--- /dev/null
+++ b/docs/live/live_replay.md
@@ -0,0 +1,1269 @@
+# 直播回放
+
+
+
+注: 直播回放相关接口较新,随时可能出现变化。
+
+## 获取直播回放列表
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorGetReplayList
+
+*请求方法: GET*
+
+认证方式: Cookie (SESSDATA)
+
+只能获取自己14天的回放,详细信息请查看[对应页面](https://link.bilibili.com/#/my-room/live-record)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| page | num | 页码 | 非必要 | 默认第1页 |
+| page_size | num | 每页内容数量 | 非必要 | 默认30项,最大30项 |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | 0:成功
-101:未登录 |
+| message | str | 提示信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| replay_info | arr | 回放信息列表 | 无结果时为`null` |
+| pagination | obj | 分页信息 | |
+| archive_flag | bool | (?) | 作用尚不明确 |
+| can\_edit | num | (?) | 作用尚不明确 |
+
+`data.replay_info` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| replay_id | num | 直播回放id | |
+| live_info | obj | 直播信息 | |
+| video_info | obj | 回放视频信息 | |
+| alarm_info | obj | 警报信息 | |
+| room_id | num | 直播间id | |
+| live_key | str | 标记直播场次的key | |
+| start_time | num | 直播开始秒时间戳 | 调用[开始直播](manage.md#开始直播)接口的时间 |
+| end_time | num | 直播结束秒时间戳 | 调用[关闭直播](manage.md#关闭直播)接口的时间 |
+
+`data.replay_info[i].live_info` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| title | str | 直播标题 | 直播结束时的标题 |
+| cover | str | 直播封面 | |
+| live_time | num | 直播时间 | 同`data.replay_info[i].start_time` |
+| live_type | num | 直播类型? | 作用尚不明确 |
+
+`data.replay_info[i].video_info` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| replay_status | num | 回放状态 | 作用尚不明确 |
+| estimated_time | str | 直播回放合成结束时间 | 未合成时为`"1970-01-01 08:00:00"` |
+| duration | num | 直播时长 | 单位秒 |
+| download_url | str | 下载链接片段 | 整场直播回放合成成功时存在
建议通过[请求整场直播回放下载链接](#请求整场直播回放下载链接)来获取下载链接 |
+| alert_code | num | 快速检查警告代码 | 整场直播回放合成失败时不存在 |
+| alert_message | str | 快速检查警告信息 | 整场直播回放合成失败时不存在 |
+
+`data.replay_info[i].alarm_info` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 回放合成警报代码 | |
+| message | str | 回放合成错误信息 | |
+| cur_time | num | 当前时间戳 | Unix秒时间戳 |
+| is_ban_publish | bool | 是否禁止发布? | |
+
+`data.pagination` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| page | num | 请求的页码 | |
+| page_size | num | 内容数量 | |
+| total | num | 总计内容数量 | |
+
+**示例:**
+
+获取自己直播回放列表的第1页,每页2项
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorGetReplayList?page=1&page_size=2' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "replay_info": [
+ {
+ "replay_id": 10707737,
+ "live_info": {
+ "title": "摆",
+ "cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "live_time": 1747509268,
+ "live_type": 1
+ },
+ "video_info": {
+ "replay_status": 2,
+ "estimated_time": "1970-01-01 08:00:00",
+ "duration": 1820,
+ "alert_code": 2,
+ "alert_message": "录像时长远小于开播时长,请关注直播时网络状况"
+ },
+ "alarm_info": {
+ "code": 2,
+ "message": "录像生成失败,请稍后再试",
+ "cur_time": 1747557808,
+ "is_ban_publish": false
+ },
+ "room_id": 18992371,
+ "live_key": "609043243693510451",
+ "start_time": 1747509268,
+ "end_time": 1747511088
+ },
+ {
+ "replay_id": 10707664,
+ "live_info": {
+ "title": "摆",
+ "cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "live_time": 1747508293,
+ "live_type": 1
+ },
+ "video_info": {
+ "replay_status": 2,
+ "estimated_time": "1970-01-01 08:00:00",
+ "duration": 206,
+ "alert_code": 2,
+ "alert_message": "录像时长远小于开播时长,请关注直播时网络状况"
+ },
+ "alarm_info": {
+ "code": 2,
+ "message": "录像生成失败,请稍后再试",
+ "cur_time": 1747557808,
+ "is_ban_publish": false
+ },
+ "room_id": 18992371,
+ "live_key": "609041817764368179",
+ "start_time": 1747508293,
+ "end_time": 1747508499
+ }
+ ],
+ "pagination": {
+ "page": 1,
+ "page_size": 2,
+ "total": 29
+ },
+ "archive_flag": false,
+ "can_edit": 1
+ }
+}
+```
+
+
+
+## 获取已发布片段的信息
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorGetVideoSliceList
+
+*请求方式: GET*
+
+认证方式: Cookie (SESSDATA)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| page | num | 页码 | 非必要 | 默认第1页 |
+| page_size | num | 每页内容数量 | 非必要 | 默认20项,最大20项 |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | 0:成功
-101:未登录 |
+| message | str | 提示信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| list | arr | 切片信息 | |
+| page | num | 请求的页码 | |
+| page_size | num | 内容数量 | |
+| total | num | 总计内容数量 | |
+
+`data.list` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| silce_id | num | 切片id | |
+| av_title | str | 切片标题 | |
+| av_cover | str | 切片封面 | |
+| av_status | num | 切片状态 | 1:发布中
2:已投稿
3:投稿失败 |
+| avid | num | 切片视频的avid | 状态为2时存在 |
+| ctime | str | 切片创建时间 | |
+| start_tm | str | 切片开始时间 | |
+| end_tm | str | 切片结束时间 | |
+| av_duration | num | 切片时长 | 状态为2且创作中心出现有效视频时长时存在 |
+| failed_reason | str | 失败原因 | 状态为3时存在,2024-09-01前发布失败的切片可能不存在 |
+| live_type | num | (?) | 作用尚不明确 |
+| cnt_play | num | 播放数 | 视频有播放时存在;若该页出现任意状态不为2的项也会不存在 |
+| cnt_danmaku | num | 弹幕数 | 视频有弹幕时存在;若该页出现任意状态不为2的项也会不存在 |
+
+**示例:**
+
+获取自己第1页的已发布片段信息,每页3项
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorGetVideoSliceList?page=1&page_size=3' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "list": [
+ {
+ "slice_id": 882357,
+ "av_title": "2025051720 error",
+ "av_cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "av_status": 1,
+ "ctime": "2025-05-18 18:13:13",
+ "start_tm": "2025-05-17 21:07:04",
+ "end_tm": "2025-05-17 21:16:00",
+ "live_type": 1
+ },
+ {
+ "slice_id": 879189,
+ "av_title": "2025051721 zzz 0",
+ "av_cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "av_status": 3,
+ "ctime": "2025-05-18 00:32:52",
+ "start_tm": "2025-05-17 21:07:34",
+ "end_tm": "2025-05-17 23:02:03",
+ "failed_reason": "duration_false",
+ "live_type": 1
+ },
+ {
+ "slice_id": 876259,
+ "av_title": "202505171449",
+ "av_cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "av_status": 2,
+ "avid": 114521830065531,
+ "ctime": "2025-05-17 14:49:18",
+ "start_tm": "2025-05-17 14:19:36",
+ "end_tm": "2025-05-17 14:23:48",
+ "av_duration": 341,
+ "live_type": 1
+ }
+ ],
+ "page": 1,
+ "page_size": 3,
+ "total": 347
+ }
+}
+```
+
+
+
+## 获取回放剪辑草稿列表
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetDraftList
+
+*请求方法: GET*
+
+认证方式: Cookie (SESSDATA)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| page | num | 页码 | 非必要 | 默认第1页 |
+| page_size | num | 每页内容数量 | 非必要 | 默认30项,最大30项 |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -101:未登录
0:成功 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| draft_info | arr | 草稿信息 | 无结果时为`null` |
+| pagination | obj | 分页信息 | |
+
+`data.draft_info` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| id | num | 回放剪辑id | |
+| title | str | 回放剪辑标题 | |
+| cover | str | 回放剪辑封面 | 有封面时存在;若不存在将使用 https://s1.hdslb.com/bfs/static/blive/blfe-link-center/static/img/default.187078d.png |
+| live\_key | str | 标记直播场次的key | |
+| ctime | str | 回放剪辑创建时间 | |
+| live_start_time | str | 直播开始时间 | |
+| live_end_time | str | 直播结束时间 | |
+| live_type | num | (?) | 作用尚不明确 |
+
+`data.pagination` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| page | num | 请求的页码 | |
+| page_size | num | 内容数量 | |
+| total | num | 总计内容数量 | |
+
+**示例:**
+
+请求自己的回放剪辑草稿列表
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetDraftList?page=1&page_size=12' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "draft_info": [
+ {
+ "id": 988275,
+ "title": "直播场次 2025-05-19 20:45:04",
+ "live_key": "609431465787395891",
+ "ctime": "2025-05-22 01:08:20",
+ "live_start_time": "2025-05-19 20:45:04",
+ "live_end_time": "2025-05-20 09:40:13",
+ "live_type": 1
+ },
+ {
+ "id": 987665,
+ "title": "直播场次 2025-05-19 20:45:04 切片",
+ "cover": "http://i0.hdslb.com/bfs/live/9bdf1df3d823734c59382120a9a7c10b177dbefd.png",
+ "live_key": "609431465787395891",
+ "ctime": "2025-05-21 20:28:48",
+ "live_start_time": "2025-05-19 20:45:04",
+ "live_end_time": "2025-05-20 09:40:13",
+ "live_type": 1
+ }
+ ],
+ "pagination": {
+ "page": 1,
+ "page_size": 30,
+ "total": 2
+ }
+ }
+}
+```
+
+
+
+## 删除某个回放剪辑草稿
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/DeleteSliceDraft
+
+*请求方法: POST*
+
+认证方式: Cookie (SESSDATA)
+
+鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
+
+**正文参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| draft_id | num | 回放剪辑id | 必要 | |
+| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -400:参数错误
-101:未登录
-111:csrf校验失败
0:成功
206:无可操作草稿 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | `0` | |
+| message | str | `""` | |
+
+**示例:**
+
+删除回放剪辑id为`988275`的草稿
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/DeleteSliceDraft' \
+ --data-urlencode 'draft_id=988275' \
+ --data-urlencode 'csrf=xxx'
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "code": 0,
+ "message": ""
+ }
+}
+```
+
+
+
+## 请求整场直播回放下载链接
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorVideoDownload
+
+*请求方法: POST*
+
+认证方式: Cookie (SESSDATA)
+
+鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
+
+未生成整场直播回放时将进行生成。
+
+**正文参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| record_id | num | 直播回放id | 必要(可选) | `record_id`和`live_key`必选其一 |
+| live_key | str | 标记直播场次的key | 必要(可选) | `record_id`和`live_key`必选其一 |
+| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -101:未登录
-111:csrf校验失败
0:成功
100:非法参数
210:回放id或场次key无效 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| record | obj | 回放状态 | |
+| download_url | str | 回放下载链接 | 完成时存在 |
+| download_url_list | arr | 回放下载链接列表 | 完成时存在 |
+
+`data.record` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| uid | num | 用户mid | |
+| record_id | num | 直播回放id | |
+| status | num | 回放状态 | |
+| estimated_time | num | 预计结束时间 | Unix秒时间戳 |
+| current_time | num | 当前时间 | Unix秒时间戳 |
+| merge_time | num | 开始合并时间 | Unix秒时间戳 |
+| toast | str | 提示信息 | 失败时存在 |
+
+`data.download_url_list` 数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| -- | --- | --- | --- |
+| 0 | str | 回放下载链接 | |
+
+**示例:**
+
+请求回放id为`10597910`的下载链接
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorVideoDownload' \
+ --data-urlencode 'record_id=10597910' \
+ --data-urlencode 'live_key=607942821532667699' \
+ --data-urlencode 'csrf=xxx' \
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "record": {
+ "uid": 438160221,
+ "record_id": 10597910,
+ "status": 30,
+ "estimated_time": 1747639543,
+ "current_time": 1747639106,
+ "merge_time": 1747638665
+ },
+ "download_url": "https://upos-sz-mirrorali.bilivideo.com/ugcever/n250519sa3hkpirw61hjskuit4d9fdsj.mp4?deadline=1747682306&gen=record2vod&os=upos&trid=da40b42594d5446da29cb0d2b2f25f45&uparams=deadline,gen,os,trid&upsig=c6ac5f218af40b2c120b3f5add2e4d6b&attname=直播回放_2025-05-13_20-49-04.mp4",
+ "download_url_list": [
+ "https://upos-sz-mirrorali.bilivideo.com/ugcever/n250519sa3hkpirw61hjskuit4d9fdsj.mp4?deadline=1747682306&gen=record2vod&os=upos&trid=da40b42594d5446da29cb0d2b2f25f45&uparams=deadline,gen,os,trid&upsig=c6ac5f218af40b2c120b3f5add2e4d6b&attname=直播回放_2025-05-13_20-49-04.mp4"
+ ]
+ }
+}
+```
+
+
+
+## 获取回放的信息
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoUidRecordsSubsect
+
+*请求方法: GET*
+
+认证方式: Cookie (SESSDATA)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| record_id | num | 直播回放id | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -400:参数错误
-101:未登录
0:成功 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | 失败时不可用 |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| list | arr | 回放信息列表 | |
+
+`data.list` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| uid | num | 用户mid | |
+| record_id | num | 直播回放id | |
+| title | str | 直播标题 | |
+| cover | str | 直播封面 | |
+| status | num | 回放状态 | |
+| start\_time | num | 直播开始时间 | Unix秒时间戳 |
+| end_time | num | 直播结束时间 | Unix秒时间戳 |
+
+**示例:**
+
+获取回放id为`10707664`的信息
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoUidRecordsSubsect?record_id=10707664' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "list": [
+ {
+ "uid": 438160221,
+ "record_id": 10707664,
+ "title": "摆",
+ "cover": "https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png",
+ "status": 2,
+ "start_time": 1747508293,
+ "end_time": 1747508499
+ }
+ ]
+ }
+}
+```
+
+
+
+## 轮询回放合成状态
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoUidRecord
+
+*请求方法: POST*
+
+认证方式: Cookie (SESSDATA)
+
+鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
+
+**正文参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| records | str | 直播回放id列表 | 必要 | 用`,`分隔 |
+| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -101:未登录
-400:参数错误
0:成功 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| list | arr | 查询结果 | 无效的id会被忽略 |
+
+`data.list` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| uid | num | 用户mid | |
+| record_id | num | 直播回放id | |
+| status | num | 回放状态 | |
+| current_time | num | 当前时间戳 | Unix秒时间戳 |
+| estimated_time | num | 预计结束时间戳 | 初次[请求回放下载链接](#请求整场直播回放下载链接)后存在 |
+| merge_time | num | 合成开始时间戳 | 初次[请求回放下载链接](#请求整场直播回放下载链接)后存在 |
+
+**示例:**
+
+查询各种回放id
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoUidRecord' \
+ --data-urlencode 'records=10727160,10597910,10687720,10230000,99999999' \
+ --data-urlencode 'csrf=xxx' \
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "list": [
+ {
+ "uid": 91089731,
+ "record_id": 10230000,
+ "status": 2,
+ "current_time": 1747641604
+ },
+ {
+ "uid": 438160221,
+ "record_id": 10597910,
+ "status": 30,
+ "estimated_time": 1747639543,
+ "current_time": 1747641604,
+ "merge_time": 1747638665
+ },
+ {
+ "uid": 438160221,
+ "record_id": 10687720,
+ "status": -30,
+ "estimated_time": 1747635525,
+ "current_time": 1747641604,
+ "merge_time": 1747635486,
+ "toast": "因直播过程中存在推流质量问题(网络波动或丢包),本场直播回放无法合成"
+ },
+ {
+ "uid": 3493299121817771,
+ "record_id": 10727160,
+ "status": 2,
+ "current_time": 1747641604
+ }
+ ]
+ }
+}
+```
+
+
+
+## 获取切片视频流
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStream
+
+*请求方法: GET*
+
+认证方式: Cookie (SESSDATA)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| live_key | str | 标记直播场次的key | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].live_key` |
+| start_time | num | 直播开始时间戳 | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].start_time` |
+| end_time | num | 直播结束时间戳 | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].end_time` |
+| web_location | str | (?) | 非必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -400:参数缺失
-101:未登录
0:成功
100:非法参数
202:场次无效 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| list | arr | 直播回放视频列表 | 如果该场回放没有视频流将为`null` |
+
+`data.list` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| start_time | num | 片段开始时间戳 | Unix秒时间戳 |
+| end_time | num | 片段结束时间戳 | Unix秒时间戳 |
+| stream | str | 直播回放视频流 | |
+| type | num | 类型? | 2:一般回放? |
+
+**示例:**
+
+获取某个场次的视频流
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetSliceStream?live_key=607113721045847859&start_time=1746863101&end_time=1746879299' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "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",
+ "type": 2
+ },
+ {
+ "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
+ }
+ ]
+ }
+}
+```
+
+
+
+## 获取直播会话数据
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetLiveSessionData
+
+*请求方法: GET*
+
+认证方式: Cookie (SESSDATA)
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| 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`(中国标准时间);取值对实际无影响 |
+| web_location | str | (?) | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -500:服务器错误
-101:未登录
0:成功
100:非法参数
202:场次无效 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| session_data | arr | 会话数据 | |
+| max_danmaku | num | 弹幕最多的时间戳 | Unix秒时间戳,没有则为`0` |
+| max_pcu | num | 进房最多的时间戳 | Unix秒时间戳,没有则为`0` |
+| max_value | num | (?) | 效果未知 |
+| high_light_data | arr | 高光时刻数据 | |
+| ass_url | str | ASS字幕链接 | 用作弹幕显示 |
+
+`data.session_data` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| ts | num | 采样时间 | Unix秒时间戳 |
+| value | num | 弹幕数量 | |
+
+`data.high_light_data` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| id | num | 高光id | |
+| type | num | 高光类型 | 1:弹幕
2:进房 |
+| start_time | num | 高光开始时间戳 | Unix秒时间戳 |
+| end_time | num | 高光结束时间戳 | Unix秒时间戳 |
+| title | str | 高光提示标题 | |
+| cover | str | (?) | 目前为`""` |
+| extra | str | (?) | 目前为`""` |
+
+**示例:**
+
+获取场次key为`607113721045847859`的会话数据
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetLiveSessionData?live_key=607113721045847859&start_tm=0000-01-01+00:00:00&end_tm=1970-01-01+00:00:00' \
+ -b 'SESSDATA=xxx'
+```
+
+
+查看响应示例:
+
+```jsonc
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "session_data": [
+ {
+ "ts": 1746863100,
+ "value": 0
+ },
+ {
+ "ts": 1746863160,
+ "value": 0
+ },
+ {
+ "ts": 1746863220,
+ "value": 0
+ },
+ {
+ "ts": 1746863280,
+ "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,
+ "value": 0
+ }
+ ],
+ "max_danmaku": 1746864660,
+ "max_pcu": 1746864660,
+ "max_value": 0,
+ "high_light_data": [
+ {
+ "id": 6226272,
+ "type": 1,
+ "start_time": 1746873300,
+ "end_time": 1746873480,
+ "title": "弹幕高光 Top 1",
+ "cover": "",
+ "extra": ""
+ },
+ {
+ "id": 6226274,
+ "type": 1,
+ "start_time": 1746873120,
+ "end_time": 1746873420,
+ "title": "弹幕高光 Top 2",
+ "cover": "",
+ "extra": ""
+ },
+ {
+ "id": 6226271,
+ "type": 2,
+ "start_time": 1746864600,
+ "end_time": 1746864780,
+ "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"
+ }
+}
+```
+
+
+
+## 获取某个时间的视频帧
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoKeyFrame
+
+*请求方法: POST*
+
+认证方式: Cookie (SESSDATA)
+
+鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+
+**正文参数( application/json ):**
+
+根对象:
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| live_key | str | 标记直播场次的key | 必要 | |
+| time_list | str | 秒时间戳列表,用`,`分隔 | 必要 | 时间间隔低于30秒将会导致只提供部分内容 |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -400:请求错误
-111:csrf校验失败
-101:未登录
0:成功 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| list | arr | 指定时间的视频帧列表 | 场次key无效时为`null` |
+
+`data.list` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| ts | num | 时间戳 | 对应请求的`time_list`其中某一个 |
+| url | str | 该时间的视频帧 | 该时间有视频时存在 |
+
+**示例:**
+
+获取某场直播的视频帧
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/GetAnchorVideoKeyFrame?csrf=xxx' \
+ -H 'Content-Type: application/json' \
+ -b 'SESSDATA=xxx;bili_jct=xxx' \
+ -d '{"live_key":"609431465787395891","time_list":"174758900,1747658930,1747658960"}'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data": {
+ "list": [
+ {
+ "ts": 174758900
+ },
+ {
+ "ts": 1747658930,
+ "url": "https://jssz-boss.hdslb.com/live2arc_anchor_video/live_438160221_32373699_20250519204900.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=y4zI4XTQzlOkmSKg%2F20250520%2Fjssz%2Fs3%2Faws4_request&X-Amz-Date=20250520T180202Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=8d42a3d5fd1995e5e2bf98d453a986bec48529a9ae97d5d7eedee8a59b22418a"
+ },
+ {
+ "ts": 1747658960,
+ "url": "https://jssz-boss.hdslb.com/live2arc_anchor_video/live_438160221_32373699_20250519205001.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=y4zI4XTQzlOkmSKg%2F20250520%2Fjssz%2Fs3%2Faws4_request&X-Amz-Date=20250520T180202Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=f4a3803d4147492ced14eefbb6953e772b886e195d51dbfac800e77320adeba2"
+ }
+ ]
+ }
+}
+```
+
+
+
+## 投稿直播回放片段
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorPublishVideoSlice
+
+*请求方法: POST*
+
+认证方式: Cookie (SESSDATA)
+
+鉴权方式: Cookie中`bili_jct`的值正确并与`csrf`相同
+
+**正文参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| live_key | str | 标记直播场次的key | 必要 | 必须为自己的live_key |
+| start_ts | num | 开始时间戳 | 必要 | 开始和结束时间目前相差不能大于2小时 |
+| end_ts | num | 结束时间戳 | 必要 | 开始和结束时间目前相差不能大于2小时 |
+| av_title | str | 切片标题 | 必要 | 不能与现有标题重复 |
+| av_cover | str | 切片封面URL | 必要 | 必须为`.hdslb.com`域名下的图片,否则合成结束时会出错 |
+| av_highlight | num | 高光绑定? | 非必要 | |
+| with_subtitle | num | 是否自动生成字幕? | 非必要 | 效果不明确 |
+| with_danmaku | num | 是否带弹幕? | 非必要 | 传递`1`时可能导致处于“发布中”状态时不在[获取已发布片段的信息](#获取已发布片段的信息)中显示 |
+| with_reserve | num | (?) | 非必要 | 作用尚不明确 |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | -111:csrf校验失败
-101:未登录
0:成功
4000:时长过长
4001:操作太快
4002:片段已投稿
4003:请选择精彩片段再投稿哦
4006:标题已使用 |
+| message | str | 错误信息 | |
+| ttl | num | `1` | |
+| data | obj | 信息本体 | 成功时有效 |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| video_slice_id | num | 切片id | |
+
+注: 若返回值出现4001不一定就是操作太快,不提供某些必要参数或某个参数不正确也会导致返回4001。
+
+**示例:**
+
+为某个场次投稿切片
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/anchorVideo/AnchorPublishVideoSlice' \
+ --data-urlencode 'live_key=609431465787395891' \
+ --data-urlencode 'start_ts=1747680306' \
+ --data-urlencode 'end_ts=1747687506' \
+ --data-urlencode 'av_title=2025051920' \
+ --data-urlencode 'av_cover=https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png' \
+ --data-urlencode 'av_highlight=0' \
+ --data-urlencode 'with_subtitle=0' \
+ --data-urlencode 'with_danmaku=0' \
+ --data-urlencode 'csrf=xxx' \
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data":{
+ "video_slice_id": 898374
+ }
+}
+```
+
+
+
+## 下载整场直播回放的流程
+
+此处的流程是从[直播回放](https://link.bilibili.com/#/my-room/live-record)的“下载回放”功能得出的。
+
+1. 先[请求整场直播回放下载链接](#请求整场直播回放下载链接)接口,让它开始合成回放;
+
+2. (可选)请求[获取回放的信息](#获取回放的信息)接口,生成合成进度页面;
+
+3. [轮询回放合成状态](#轮询回放合成状态),当状态变为`30`转到流程4,变为`-30`转到流程5;
+
+4. 再次[请求整场直播回放下载链接](#请求整场直播回放下载链接),获取下载链接并下载。
+
+5. 请求[获取直播回放列表](#获取直播回放列表),刷新页面并根据信息提示失败。
+
+## 直播回放片段发布页面
+
+通过此处的链接可以打开直播回放片段发布页面。
+
+> https://live.bilibili.com/web-cut/quick-publish.html (网页端)
+
+> https://live.bilibili.com/web-cut/quick-publish-mobile.html (移动端)
+
+注:移动端强制限制只能投稿15分钟的片段,网页端则看[投稿直播回放片段](#投稿直播回放片段)接口允许多长的时间。
+
+**url查询参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| start_time | num | 直播开始时间 | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].start_time` |
+| end_time | num | 直播结束时间 | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].end_time` |
+| live_key | str | 标记直播场次的key | 必要 | 对应[获取直播回放列表](#获取直播回放列表)的`data.replay_info[i].live_key` |
+| cover | str | 封面URL | 非必要 | 可以自定义封面,或者在[获取直播回放列表](#获取直播回放列表)使用直播封面 |
+
+**示例链接:**
+
+网页端: https://live.bilibili.com/web-cut/quick-publish.html?start_time=1747508293&end_time=1747508499&live_key=609041817764368179&cover=https%3A%2F%2Fi0.hdslb.com%2Fbfs%2Flive%2F59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png
+
+移动端: https://live.bilibili.com/web-cut/quick-publish-mobile.html?start_time=1747508293&end_time=1747508499&live_key=609041817764368179
+
+## 直播回放剪辑页面
+
+此链接用于打开直播回放轻剪辑页面,在点击[直播回放片段发布页面](#直播回放片段发布页面)的“高级剪辑工具”或某一个[回放剪辑草稿](#获取回放剪辑草稿列表)后自动打开。
+
+> https://live.bilibili.com/web-cut/index.html
+
+**url查询参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| start_time | num | 直播开始时间戳 | 必要 | 用于[获取切片视频流](#获取切片视频流) |
+| end_time | num | 直播结束时间戳 | 必要 | 用于[获取切片视频流](#获取切片视频流) |
+| live_key | str | 标记直播场次的key | 必要 | 用于[获取切片视频流](#获取切片视频流) |
+| draft_id | num | 回放剪辑id | 必要 | |
+
+**示例链接:** https://live.bilibili.com/web-cut/index.html?start_time=1747658704&end_time=1747705213&live_key=609431465787395891&draft_id=988275
diff --git a/docs/live/manage.md b/docs/live/manage.md
index 8150b28..6c28a51 100644
--- a/docs/live/manage.md
+++ b/docs/live/manage.md
@@ -274,7 +274,7 @@ curl 'https://api.live.bilibili.com/room/v1/Room/update' \
| -------- | ---- | ------------------------ | ------ | ----------------------------------- |
| room_id | num | 直播间id | 必要 | 必须为自己的直播间id |
| area_v2 | num | 直播分区id(子分区id) | 必要 | 详见[直播分区](live_area.md) |
-| platform | str | 直播平台 | 必要 | 直播姬(pc):pc_link
web在线直播:web_link
bililink:android_link |
+| platform | str | 直播平台 | 必要 | 直播姬(pc):pc_link
web在线直播:web_link(已下线)
bililink:android_link |
| csrf | str | CSRF Token(位于cookie) | 必要 | |
**json回复:**
@@ -283,7 +283,7 @@ curl 'https://api.live.bilibili.com/room/v1/Room/update' \
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
-| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
60024: 目标分区需要人脸认证
60013:非常抱歉,您所在的地区受实名认证限制无法开播
**(其他错误码有待补充)** |
+| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
60013:非常抱歉,您所在的地区受实名认证限制无法开播
60024: 目标分区需要人脸认证
60037: web 在线开播已下线
**(其他错误码有待补充)** |
| msg | str | 错误信息 | 默认为空 |
| message | str | 错误信息 | 默认为空 |
| data | obj | 信息本体 | |
@@ -296,7 +296,7 @@ curl 'https://api.live.bilibili.com/room/v1/Room/update' \
| status | str | 直播间状态 | `LIVE` |
| room_type | num | 0 | 作用尚不明确 |
| rtmp | obj | RTMP推流地址信息 | |
-| protocols | array | ??? | 作用尚不明确 |
+| protocols | array | 推流协议、地址、密钥等信息
其中地址、密钥与 `rtmp` 字段的内容是一致的 | 协议只见到过 `rtmp` |
| try_time | str | ??? | 作用尚不明确 |
| live_key | str | 标记直播场次的key | |
| sub_session_key | str | 信息变动标识 | |
@@ -314,23 +314,23 @@ curl 'https://api.live.bilibili.com/room/v1/Room/update' \
| addr | str | RTMP推流(发送)地址 | **重要** |
| code | str | RTMP推流参数(密钥) | **重要** |
| new_link | str | 获取CDN推流ip地址重定向信息的url | 没啥用 |
-| provider | str | ??? | 作用尚不明确 |
+| provider | str | 推流云服务节点厂商 | `txy`: 腾讯云 |
`data`中的`protocols`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------ | ------------ |
-| 0 | obj | ??? | 作用尚不明确 |
+| 0 | obj | 与 `rtmp` 字段在地址和密钥上相同的推流协议信息 | |
`data`中的`protocols`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------------------------------- | ------------ |
-| protocol | str | rtmp | 作用尚不明确 |
-| addr | str | RTMP推流(发送)地址 | |
-| code | str | RTMP推流参数(密钥) | |
+| protocol | str | rtmp | 推流协议 |
+| addr | str | RTMP推流(发送)地址 | 格式为 `rtmp://<推流节点>/live-bvc/` |
+| code | str | RTMP推流参数(密钥) | 格式为 `?streamname=live__<未知数字>&key=<密钥>&schedule=rtmp&pflag=<开播平台标志>` |
| new_link | str | 获取CDN推流ip地址重定向信息的url | |
-| provider | str | txy | 作用尚不明确 |
+| provider | str | 推流云服务节点厂商 | `txy`: 腾讯云 |
`data`中的`notice`对象:
@@ -480,6 +480,121 @@ curl 'https://api.live.bilibili.com/room/v1/Room/stopLive' \
+## 预更新直播间信息
+
+> https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo
+
+*请求方法: POST*
+
+认证方式:Cookie(SESSDATA)
+
+鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同
+
+**正文参数( application/x-www-form-urlencoded ):**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ----- | --- | ---- | ----- | --- |
+| csrf | str | CSRF Token(位于cookie) | 必要 | |
+| csrf_token | str | CSRF Token(位于cookie) | 必要 | |
+| platform | str | 平台标识 | 必要 | 似乎可随意提供
网页端: web |
+| mobi_app | str | 平台标识? | 必要 | 似乎可随意提供
网页端: web |
+| build | num | 构建标识? | 必要 | 建议取`1`,似乎可随意提供 |
+| cover | str | 直播封面链接 | 非必要 | 图片链接需要在`.hdslb.com`域名下 |
+| title | str | 直播间标题 | 非必要 | 参见[更新直播间信息](#更新直播间信息)的title参数 |
+| coverVertical | str | (?) | 非必要 | 作用尚不明确 |
+| liveDirectionType | num | (?) | 非必要 | `1` |
+| visit_id | str | (?) | 非必要 | `""` |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| code | num | 返回值 | 0: 成功
1: 错误
100402: 图片地址不合法 |
+| message | str | 错误信息 | 成功时为`"0"` |
+| ttl | num | `1` | |
+| data | obj | 内容本体 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| audit_info | obj | 审核信息 | |
+
+`data.audit_info`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| audit_title | str | 被审核的标题 | |
+| audit_title_status | num | 标题审核状态 | |
+| audit_title_reason | str | 标题审核提示 | |
+
+**示例:**
+
+更新直播间封面
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo' \
+ --data-urlencode 'platform=web' \
+ --data-urlencode 'mobi_app=web' \
+ --data-urlencode 'build=1' \
+ --data-urlencode 'cover=https://i0.hdslb.com/bfs/live/59fc254c1f51a962dbf69ae85e4920f2f6fb8dcd.png' \
+ --data-urlencode 'csrf=xxx' \
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data":{
+ "audit_info":{
+ "audit_title": "",
+ "audit_title_status": 0,
+ "audit_title_reason": ""
+ }
+ }
+}
+```
+
+
+
+使用此接口更新直播间标题
+
+```shell
+curl 'https://api.live.bilibili.com/xlive/app-blink/v1/preLive/UpdatePreLiveInfo' \
+ --data-urlencode 'platform=web' \
+ --data-urlencode 'mobi_app=web' \
+ --data-urlencode 'build=1' \
+ --data-urlencode 'title=你好你好,我是花火~咱们来找点乐子吧?小灰毛,不要害羞嘛,要大胆的来,一起欢愉吧' \
+ --data-urlencode 'csrf=xxx' \
+ -b 'SESSDATA=xxx;bili_jct=xxx'
+```
+
+
+查看响应示例:
+
+```json
+{
+ "code": 0,
+ "message": "0",
+ "ttl": 1,
+ "data":{
+ "audit_info":{
+ "audit_title": "你好你好,我是花火~咱们来找点乐子吧?小灰毛,不要害羞嘛,要大胆的来,一起欢愉吧",
+ "audit_title_status": 2,
+ "audit_title_reason": "先发后审"
+ }
+ }
+}
+```
+
+
## 更新直播间公告
diff --git a/docs/live/message_stream.md b/docs/live/message_stream.md
index 7d106df..a66673b 100644
--- a/docs/live/message_stream.md
+++ b/docs/live/message_stream.md
@@ -8,6 +8,8 @@
认证方式: Cookie(SESSDATA)
+鉴权方式:[Wbi 签名](../misc/sign/wbi.md)
+
可以选择进行认证,若未认证视作未登录,将会受到限制,详见后续内容。
**URL参数:**
@@ -15,6 +17,12 @@
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | ---- |
| id | num | 直播间真实id | 必要 | |
+| type | num | (?) | 非必要 | 作用尚不明确 |
+| web_location | str | (?) | 非必要 | 作用尚不明确 |
+| w_rid | str | Wbi 签名 | 必要 | 详见 [Wbi 签名](../misc/sign/wbi.md) |
+| wts | num | 当前时间戳 | 必要 | 详见 [Wbi 签名](../misc/sign/wbi.md) |
+
+注: 从2025年5月26日开始正式强制要求Wbi签名。
**JSON回复:**
@@ -50,11 +58,10 @@
**示例:**
-获得直播间 `14047` 的信息流认证秘钥
+获得直播间 `1017` 的信息流认证秘钥
```shell
-curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \
---url-query 'id=14047'
+curl 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?id=1017&type=0&web_location=444.8&w_rid=cf24f88ea0cbb61e7b29aed0c070187d&wts=1748266797'
```
@@ -65,30 +72,42 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \
"code": 0,
"message": "0",
"ttl": 1,
- "data": {
+ "data":{
"group": "live",
"business_id": 0,
"refresh_row_factor": 0.125,
"refresh_rate": 100,
"max_delay": 5000,
- "token": "IFfrzJxUd-K6mBPLGCpu-Z9QAz1V3KzIxde_-tCzvah05fYgfXjBWyuqRywF8Ov2w-MGQWt7l80pLiZEsfx3OPEDsXSRaJlzihV0hTXYwkiJvRmzMH3JjfAjdzlvI8sytUCrIbezBgbr_grGPd4ENTEknvu165L-ocW_cyql1e-L_EE=",
- "host_list": [
+ "token": "gZ2Pp2T4rIc2HfD0e53FHhQAwKWjb6-QDD84AcxXi8sk3S89XcdvPWOgClZIMZ5mESr19-JKTOFxayX4IjeSQuckWqohE5Y0aHn-agpc2uU7aPXW3-Xmra3QEKljMZS5fM3q2vCf2XcAsjc8Xup7MVAc8SLWWXhQz0s7f1alCkaJBAIPA-i2nS39Ri4O",
+ "host_list":[
{
- "host": "hw-sg-live-comet-02.chat.bilibili.com",
+ "host": "zj-cn-live-comet.chat.bilibili.com",
"port": 2243,
- "wss_port": 443,
+ "wss_port": 2245,
"ws_port": 2244
},
{
- "host": "hw-sg-live-comet-01.chat.bilibili.com",
+ "host": "zj-cn-live-comet.chat.bilibili.com",
"port": 2243,
- "wss_port": 443,
+ "wss_port": 2245,
+ "ws_port": 2244
+ },
+ {
+ "host": "bd-sz-live-comet-14.chat.bilibili.com",
+ "port": 2243,
+ "wss_port": 2245,
+ "ws_port": 2244
+ },
+ {
+ "host": "bd-bj-live-comet-09.chat.bilibili.com",
+ "port": 2243,
+ "wss_port": 2245,
"ws_port": 2244
},
{
"host": "broadcastlv.chat.bilibili.com",
"port": 2243,
- "wss_port": 443,
+ "wss_port": 2245,
"ws_port": 2244
}
]
@@ -104,7 +123,7 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \
**注: 特别的**, WS 与 WSS 连接地址带有路径 `/sub`, 如 `wss://broadcastlv.chat.bilibili.com:443/sub`.
-**再注:** B 站更新了隐私政策, 连接建立后, 若该连接认证时传入信息来自未登录用户, 会提示 `为保护用户隐私,未注册登陆用户将无法查看他人昵称`, 随后部分数据包(如“弹幕”、“进场或关注消息”)的用户 mid 都为 `0`, 用户名部分也使用 `*` 保护, 部分房间受到豁免, 参见 [#732](https://github.com/SocialSisterYi/bilibili-API-collect/issues/732)
+**再注:** B 站更新了隐私政策, 连接建立后, 若该连接认证时传入信息来自未登录用户, 会提示 `为保护用户隐私,未注册登陆用户将无法查看他人昵称`, 随后部分数据包(如“弹幕”、“用户交互消息”)的用户 mid 都为 `0`, 用户名部分也使用 `*` 保护, 部分房间受到豁免, 参见 [#732](https://github.com/SocialSisterYi/bilibili-API-collect/issues/732)
操作流程 (伪代码):
@@ -380,7 +399,7 @@ while (!s.isclosed()) {
见下方 JSONC
-```json
+```jsonc
{
"send_from_me": false, // 是否由该接收消息的用户发送
"mode": 0, // 弹幕模式 (info[0][1])
@@ -706,7 +725,7 @@ while (!s.isclosed()) {
| -------- | ---- | -------- | ---- |
| id | num | 事件 ID | |
| status | num | 状态 | |
-| type | num | 事件类型 | 102:弹幕
103:
104:送礼
105:分享
106:点赞 |
+| type | num | 事件类型 | 101:投票
102:弹幕
103:关注
104:送礼
105:分享
106:点赞 |
| data | str | 事件数据 | 一个JSON字符串 |
| dmsource | num | | |
@@ -716,6 +735,49 @@ while (!s.isclosed()) {
温馨提示: 要记得先解析`data.data`内的JSON字符串,不要直接使用哦。
+`data.data(101)` 对象: (投票)
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| question | str | 投票问题 | |
+| options | obj | 投票详细选项 | |
+| vote_id | num | 投票id | |
+| cnt | num | 弹幕计数 | |
+| duration | num | 持续时间 | 单位毫秒 |
+| left_duration | num | 剩余时间 | 单位毫秒 |
+| fade_duration | num | (?) | |
+| waiting_duration | num | (?) | |
+| result | num | 投票倾向状态 | |
+| result_text | str | 投票倾向提示 | |
+| component | str | 投票链接 | |
+| natural_die_duration | num | (?) | |
+| my_vote | num | (?) | |
+| component_anchor | str | 投票控制链接 | |
+| audit_reason | str | 审核结果 | |
+| combo | obj | 投票状态展示 | |
+
+`data.data(101).options` 数组中对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| idx | num | 选项索引 | |
+| desc | str | 选项内容 | |
+| cnt | num | 票数 | |
+| percent | num | 显示占比 | |
+
+`data.data(101).combo` 数组中对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| id | num | 标识id | 同`data.data.options`数组中对象的`idx` |
+| status | num | 状态 | 同`data.status` |
+| content | str | 投票选项内容 | |
+| cnt | str | 弹幕计数 | |
+| guide | str | (?) | 空字符串 |
+| left_duration | num | 剩余时间 | |
+| fade_duration | num | (?) | |
+| prefix_icon | str | 投票选项图标 | |
+
`data.data(102)` 对象: (弹幕)
| 字段 | 类型 | 内容 | 备注 |
@@ -737,6 +799,17 @@ while (!s.isclosed()) {
| left_duration | num | 左移时长 | |
| fade_duration | num | 淡化时长 | |
+`data.data(103)` 对象: (关注)
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| fade\_duration | num | | |
+| cnt | num | 关注计数 | |
+| card_appear_interval | num | | |
+| suffix\_text | str | 提示文本 | `人关注了主播` |
+| reset\_cnt | num | | |
+| display\_flag | num | | |
+
`data.data(104)` 对象: (送礼)
| 字段 | 类型 | 内容 | 备注 |
@@ -777,6 +850,21 @@ while (!s.isclosed()) {
查看正文示例:
+type===101
+
+```json
+{
+ "cmd": "DM_INTERACTION",
+ "data": {
+ "data": "{\"question\":\"投票\",\"options\":[{\"idx\":1,\"desc\":\"赞成\",\"cnt\":0,\"percent\":0.5},{\"idx\":2,\"desc\":\"弃权\",\"cnt\":0,\"percent\":0.5}],\"vote_id\":98014370742272,\"cnt\":0,\"duration\":60000,\"left_duration\":60000,\"fade_duration\":1000,\"waiting_duration\":-1,\"result\":1,\"result_text\":\"平局\",\"component\":\"https://live.bilibili.com/p/html/live-app-guessing-game/vote.html?is_live_half_webview=1\\u0026hybrid_half_ui=1,3,100p,245,0,0,30,100,12,0;2,2,375,100p,0,0,30,100,12,0;3,3,100p,245,0,0,30,100,12,0;4,2,375,100p,0,0,30,100,12,0;5,3,100p,70p,0,0,30,100,12,0;6,3,100p,70p,0,0,30,100,12,0;7,3,100p,70p,0,0,30,100,12,0;8,3,100p,70p,0,0,30,100,12,0\",\"natural_die_duration\":30000,\"my_vote\":0,\"component_anchor\":\"https://live.bilibili.com/p/html/live-app-guessing-game/anchor_vote.html?pc_ui=390,428,0,3\\u0026is_live_half_webview=1\\u0026hybrid_half_ui=1,3,100p,448,0,0,30,0,12,0;2,2,375,100p,0,0,30,0,12,0;3,3,100p,448,0,0,30,0,12,0;4,2,375,100p,0,0,30,0,12,0;5,3,100p,448,0,0,30,0,12,0;6,2,320,100p,0,0,30,0,12,0;7,2,320,100p,0,0,30,0,12,0;8,2,320,100p,0,0,30,0,12,0#/\",\"audit_reason\":\"您提交的弹幕投票未审核通过,请修改\",\"combo\":[{\"id\":1,\"status\":2,\"content\":\"赞成\",\"cnt\":0,\"guide\":\"\",\"left_duration\":60000,\"fade_duration\":0,\"prefix_icon\":\"http://i0.hdslb.com/bfs/dm/7d7e3682c9116aa3503418abe3cde6b45ed2e91e.png\"},{\"id\":2,\"status\":2,\"content\":\"弃权\",\"cnt\":0,\"guide\":\"\",\"left_duration\":60000,\"fade_duration\":0,\"prefix_icon\":\"http://i0.hdslb.com/bfs/dm/f83c7280b2a90b4f58a68fd8c594ea7d5667e3cb.png\"}]}",
+ "dmscore": 36,
+ "id": 98014370742272,
+ "status": 2,
+ "type": 101
+ }
+}
+```
+
type===102
```json
@@ -806,6 +894,21 @@ type===102
}
```
+type===103
+
+```json
+{
+ "cmd": "DM_INTERACTION",
+ "data": {
+ "data": "{\"fade_duration\":10000,\"cnt\":6,\"card_appear_interval\":0,\"suffix_text\":\"人关注了主播\",\"reset_cnt\":0,\"display_flag\":1}",
+ "dmscore": 36,
+ "id": 94362402889728,
+ "status": 4,
+ "type": 103
+ }
+}
+```
+
type===104
```json
@@ -853,9 +956,9 @@ type===106
-#### 进场或关注消息 (INTERACT_WORD)
+#### 用户交互消息 (INTERACT_WORD)
-注: 有用户进入直播间或关注主播时触发
+注: 有用户进入直播间、关注主播、分享直播间时触发
**JSON消息:**
@@ -2901,6 +3004,7 @@ type===106
| priority | num | 优先级? | |
| basemap_url | str | 进场特效背景 URL | APP 端 |
| show_avatar | num | 是否显示用户头像 | 1: 显示
0: 不显示 |
+| effective_time | num | ? | |
| web_basemap_url | str | 进场特效背景 URL | 网页端 |
| web_effective_time | num | 进场特效生存时间 | 网页端 |
| web_effect_close | num | ? | |
@@ -2916,6 +3020,13 @@ type===106
| web_dynamic_url_webp | str | ? | |
| web_dynamic_url_apng | str | ? | |
| mobile_dynamic_url_webp | str | ? | |
+| wealthy_info | obj | 荣耀等级信息 | |
+| new_style | num | ? | |
+| is_mystery | bool | ? | |
+| uinfo | obj | 用户信息 | |
+| full_cartoon_id | num | ? | |
+| priority_level | num | ? | |
+| wealth_style_info | obj | 荣耀等级样式信息 | |
**示例:**
@@ -2924,37 +3035,181 @@ type===106
```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": "ENTRY_EFFECT",
+ "data": {
+ "id": 380,
+ "uid": 31382283,
+ "target_id": 12892411,
+ "mock_effect": 0,
+ "face": "https://i0.hdslb.com/bfs/face/876e30e89faa5672858cc17bdb357362ec96bc29.jpg",
+ "privilege_type": 0,
+ "copy_writing": "<%WYCBat%> 来了",
+ "copy_color": "#F7F7F7",
+ "highlight_color": "#FFFFFF",
+ "priority": 1,
+ "basemap_url": "",
+ "show_avatar": 0,
+ "effective_time": 0,
+ "web_basemap_url": "https://i0.hdslb.com/bfs/live/mlive/19e7564ed9d466b02f341abfa979c6e38c2ffffb.png",
+ "web_effective_time": 4,
+ "web_effect_close": 1,
+ "web_close_time": 900,
+ "business": 6,
+ "copy_writing_v2": "<%WYCBat%> 来了",
+ "icon_list": [],
+ "max_delay_time": 7,
+ "trigger_time": 1748545763327647435,
+ "identities": 1,
+ "effect_silent_time": 0,
+ "effective_time_new": 0,
+ "web_dynamic_url_webp": "",
+ "web_dynamic_url_apng": "",
+ "mobile_dynamic_url_webp": "",
+ "wealthy_info": {
+ "uid": 0,
+ "level": 17,
+ "level_total_score": 0,
+ "cur_score": 0,
+ "upgrade_need_score": 0,
+ "status": 0,
+ "dm_icon_key": ""
+ },
+ "new_style": 1,
+ "is_mystery": false,
+ "uinfo": {
+ "uid": 31382283,
+ "base": {
+ "name": "WYCBat",
+ "face": "https://i0.hdslb.com/bfs/face/876e30e89faa5672858cc17bdb357362ec96bc29.jpg",
+ "name_color": 0,
+ "is_mystery": false,
+ "risk_ctrl_info": null,
+ "origin_info": null,
+ "official_info": null,
+ "name_color_str": ""
+ },
+ "medal": null,
+ "wealth": {
+ "level": 17,
+ "dm_icon_key": ""
+ },
+ "title": null,
+ "guard": {
+ "level": 0,
+ "expired_str": ""
+ },
+ "uhead_frame": null,
+ "guard_leader": null
+ },
+ "full_cartoon_id": 1802,
+ "priority_level": 0,
+ "wealth_style_info": {
+ "url": "https://i0.hdslb.com/bfs/live/b6f2bf3e27f22b3039594842f0005b05a0dc5dae.png"
+ }
+ }
+}
+```
+
+
+
+#### 必须接受的用户进场特效 (ENTRY_EFFECT_MUST_RECEIVE)
+
+注: 在部分主播进入自己的直播间时下发。
+
+结构与 [用户进场特效 (ENTRY_EFFECT)](#用户进场特效-ENTRY_EFFECT) 完全相同。
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "ENTRY_EFFECT_MUST_RECEIVE",
+ "data": {
+ "id": 135,
+ "uid": 438160221,
+ "target_id": 438160221,
+ "mock_effect": 0,
+ "face": "https://i0.hdslb.com/bfs/face/member/noface.jpg",
+ "privilege_type": 0,
+ "copy_writing": "<%weatfe%> 来了",
+ "copy_color": "#000000",
+ "highlight_color": "#FFF100",
+ "priority": 1,
+ "basemap_url": "https://i0.hdslb.com/bfs/live/mlive/da6933ea70f31c4df63f4b68b735891284888357.png",
+ "show_avatar": 1,
+ "effective_time": 1,
+ "web_basemap_url": "https://i0.hdslb.com/bfs/live/mlive/da6933ea70f31c4df63f4b68b735891284888357.png",
+ "web_effective_time": 2,
+ "web_effect_close": 0,
+ "web_close_time": 900,
+ "business": 3,
+ "copy_writing_v2": "<%weatfe%> 来了",
+ "icon_list": [],
+ "max_delay_time": 7,
+ "trigger_time": 1746031259272981482,
+ "identities": 1,
+ "effect_silent_time": 0,
+ "effective_time_new": 0,
+ "web_dynamic_url_webp": "",
+ "web_dynamic_url_apng": "",
+ "mobile_dynamic_url_webp": "",
+ "wealthy_info": null,
+ "new_style": 0,
+ "is_mystery": false,
+ "uinfo": {
+ "uid": 438160221,
+ "base": {
+ "name": "weatfe",
+ "face": "https://i0.hdslb.com/bfs/face/member/noface.jpg",
+ "name_color": 0,
+ "is_mystery": false,
+ "risk_ctrl_info": null,
+ "origin_info": null,
+ "official_info": null,
+ "name_color_str": ""
+ },
+ "medal": {
+ "name": "粉丝团",
+ "level": 11,
+ "color_start": 9272486,
+ "color_end": 9272486,
+ "color_border": 9272486,
+ "color": 9272486,
+ "id": 2956282,
+ "typ": 0,
+ "is_light": 1,
+ "ruid": 438160221,
+ "guard_level": 0,
+ "score": 16000,
+ "guard_icon": "",
+ "honor_icon": "",
+ "v2_medal_color_start": "#596FE099",
+ "v2_medal_color_end": "#596FE099",
+ "v2_medal_color_border": "#596FE099",
+ "v2_medal_color_text": "#FFFFFFFF",
+ "v2_medal_color_level": "#000B7099",
+ "user_receive_count": 0
+ },
+ "wealth": {
+ "level": 5,
+ "dm_icon_key": ""
+ },
+ "title": null,
+ "guard": {
+ "level": 0,
+ "expired_str": ""
+ },
+ "uhead_frame": null,
+ "guard_leader": null
+ },
+ "full_cartoon_id": 0,
+ "priority_level": 0,
+ "wealth_style_info": {
+ "url": "https://i0.hdslb.com/bfs/live/24f6ef867c3905064136f5c4e33a8d423d41ebdd.png"
+ }
+ }
}
```
@@ -3470,6 +3725,123 @@ type===106
+#### 礼物星球信息 (WIDGET_WISH_INFO)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `WIDGET_WISH_INFO` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| sid | num | (?) | |
+| wish | arr | 礼物需求信息 | |
+| jump_url | str | 用户端礼物星球界面 | |
+| wish_status | num | 礼物星球状态 | |
+| card_text | str | 卡片提示文本 | |
+| modal_text | str | 需求标题 | |
+| button_text | str | 按钮文本 | |
+| show_time | num | 显示时间 | 单位秒 |
+| ts | num | 发送时间戳 | Unix秒时间戳 |
+| tid | num | (?) | |
+| wish_status_info | arr | 状态对照信息 | |
+| wish_name | str | 礼物星球名称 | |
+
+`data.wish` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| gift_id | num | 礼物id | |
+| target_num | num | 需求数量 | |
+| gift_img | str | 礼物图片URL | |
+| gift_price | num | 礼物金瓜子标价 | CNY×1000 |
+| gift_name | str | 礼物名称 | |
+| wish_status | num | 该礼物达成状态 | |
+
+`data.wish_status_info` 数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| wish_status_msg | str | 状态提示信息 | |
+| wish_status_img | str | 状态图片URL | |
+| wish_status | str | 状态 | |
+| wish_status_desc | str | 状态描述 | 不一定存在 |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "WIDGET_WISH_INFO",
+ "data": {
+ "sid": 658537,
+ "wish": [
+ {
+ "gift_id": 31036,
+ "target_num": 1,
+ "gift_img": "https://s1.hdslb.com/bfs/live/8b40d0470890e7d573995383af8a8ae074d485d9.png",
+ "gift_price": 100,
+ "gift_name": "小花花",
+ "wish_status": 1
+ },
+ {
+ "gift_id": 30758,
+ "target_num": 1,
+ "gift_img": "https://s1.hdslb.com/bfs/live/3ddb10b055b9d1826829ec0fad93ab56484d4a90.png",
+ "gift_price": 100,
+ "gift_name": "这个好诶",
+ "wish_status": 1
+ },
+ {
+ "gift_id": 31039,
+ "target_num": 1,
+ "gift_img": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png",
+ "gift_price": 100,
+ "gift_name": "牛哇牛哇",
+ "wish_status": 1
+ }
+ ],
+ "jump_url": "https://live.bilibili.com/p/html/bilili-page-gift-wishes-mix-planet/user.html?is_live_half_webview=1&hybrid_half_ui=1,3,100p,70p,0,0,30,100,15,0;2,2,375,100p,0,0,30,100,15,0;3,3,100p,70p,0,0,30,100,15,0;4,2,375,100p,0,0,30,100,15,0;5,3,100p,70p,0,0,30,100,15,0;6,3,100p,70p,0,0,30,100,15,0;7,3,100p,70p,0,0,30,100,15,0;8,3,100p,70p,0,0,30,100,15,0",
+ "wish_status": 1,
+ "card_text": "主播今日心愿还未完成",
+ "modal_text": "今日心愿礼物",
+ "button_text": "去助力",
+ "show_time": 5,
+ "ts": 1746257134,
+ "tid": 6585370000,
+ "wish_status_info": [
+ {
+ "wish_status_msg": "礼物星球待点亮",
+ "wish_status_img": "https://i0.hdslb.com/bfs/live/e507f8b101289b2ce6741880a28304215a65f5bf.png",
+ "wish_status": -1
+ },
+ {
+ "wish_status_msg": "今日心愿暂未达成",
+ "wish_status_img": "https://i0.hdslb.com/bfs/live/e507f8b101289b2ce6741880a28304215a65f5bf.png",
+ "wish_status": 1
+ },
+ {
+ "wish_status_msg": "今日心愿已达成",
+ "wish_status_img": "https://i0.hdslb.com/bfs/live/e507f8b101289b2ce6741880a28304215a65f5bf.png",
+ "wish_status": 2,
+ "wish_status_desc": "已完成"
+ }
+ ],
+ "wish_name": "心愿礼物"
+ }
+}
+```
+
+
+
#### 下播的直播间 (STOP_LIVE_ROOM_LIST)
注: 估计是更新关注的主播直播状态的
@@ -4388,6 +4760,63 @@ type===106
+#### 语音连麦开关 (VOICE_JOIN_SWITCH)
+
+在直播姬开关连麦功能时下发。
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `VOICE_JOIN_SWITCH` | |
+| data | obj | 信息本体 | |
+| room_id | num | 直播间id | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| room_id | num | 直播间id | |
+| room_status | num | 连麦开关状态 | |
+| root_status | num | 连麦开关状态 | |
+
+**示例:**
+
+
+查看消息示例:
+
+开:
+
+```json
+{
+ "cmd": "VOICE_JOIN_SWITCH",
+ "data": {
+ "room_id": 1899237171,
+ "room_status": 1,
+ "root_status": 1
+ },
+ "room_id": 1899237171
+}
+```
+
+关:
+
+```json
+{
+ "cmd": "VOICE_JOIN_SWITCH",
+ "data": {
+ "room_id": 1899237171,
+ "room_status": 0,
+ "root_status": 0
+ },
+ "room_id": 1899237171
+}
+```
+
+
+
#### 邀请视频连线 (VIDEO_CONNECTION_JOIN_START)
**示例:**
@@ -4526,12 +4955,47 @@ type===106
+#### ??? (PLAYTOGETHER_ICON_CHANGE)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `PLAYTOGETHER_ICON_CHANGE` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| area_id | num | 直播分区id | |
+| has_perm | num | | |
+| show_count | num | | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "PLAYTOGETHER_ICON_CHANGE",
+ "data": {
+ "area_id": 40,
+ "has_perm": 0,
+ "show_count": 0
+ }
+}
+```
+
+
+
#### 直播小助手? (ANCHOR_BROADCAST)
第一次达到了某种条件下发。
-已知当在一个分区(中途不能切换)开播时长达到150、180、200、300分钟可能下发,直播间初次被分享1~2次时下发。
-
**JSON消息:**
根对象:
@@ -4790,3 +5254,473 @@ type===106
```
+
+#### 有人购买主播推荐商品 (GOTO_BUY_FLOW)
+
+用户昵称会打星号(`*`)显示。
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `GOTO_BUY_FLOW` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| text | str | 去购买提示 | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "GOTO_BUY_FLOW",
+ "data": {
+ "text": "回**正在去买"
+ }
+}
+```
+
+
+
+#### 热抢提示 (HOT_BUY_NUM)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `HOT_BUY_NUM` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| num | num | 热抢数量 | |
+| goods_id | str | 商品id | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "HOT_BUY_NUM",
+ "data": {
+ "num": 81,
+ "goods_id": "1817875296579985408"
+ }
+}
+```
+
+
+
+#### 荣耀等级通知 (WEALTH_NOTIFY)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `WEALTH_NOTIFY` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| flag | num | 标志? | |
+| info | obj | 信息 | |
+
+`data.info`:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| effect_key | num | (?) | |
+| has_items_changed | num | (?) | |
+| level | num | 达到的等级 | |
+| send_time | num | 发送时间 | UNIX 毫秒时间戳 |
+| status | num | 状态? | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "WEALTH_NOTIFY",
+ "data": {
+ "flag": 3,
+ "info": {
+ "effect_key": 1073,
+ "has_items_changed": 1,
+ "level": 5,
+ "send_time": 1743337942833,
+ "status": 1
+ }
+ }
+}
+```
+
+
+
+#### ??? (USER_PANEL_RED_ALARM)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `USER_PANEL_RED_ALARM` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| module | str | (?) | |
+| alarm_num | num | (?) | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "USER_PANEL_RED_ALARM",
+ "data": {
+ "module": "user_head_dot",
+ "alarm_num": 1
+ }
+}
+```
+
+
+
+#### ??? (GIFT_BOARD_RED_DOT)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `GIFT_BOARD_RED_DOT` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| categoryL1 | str | (?) | 作用尚不明确 |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "GIFT_BOARD_RED_DOT",
+ "data": {
+ "categoryL1": "3"
+ }
+}
+```
+
+
+
+#### 粉丝勋章更新 (MESSAGEBOX_USER_MEDAL_CHANGE)
+
+升级或点亮时下发。
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `MESSAGEBOX_USER_MEDAL_CHANGE` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| type | num | 提示类型 | 1:升级
2:点亮 |
+| uid | num | 用户mid | |
+| up_uid | num | 主播mid | |
+| medal_level | num | 粉丝勋章等级 | |
+| medal_name | str | 粉丝勋章名称 | |
+| medal_color_start | num | 十进制粉丝勋章起始颜色 | |
+| medal_color_end | num | 十进制粉丝勋章结束颜色 | |
+| medal_color_border | num | 十进制粉丝勋章边框颜色 | |
+| is_lighted | num | 是否点亮? | 1:点亮? |
+| is_lighted_v2 | bool | 是否点亮v2? | |
+| guard_level | num | 大航海等级 | |
+| unlock | num | (?) | |
+| unlock_level | num | (?) | |
+| multi_unlock_level | str | (?) | |
+| upper_bound_content | str | 提示内容 | |
+| uinfo_medal | obj | 粉丝勋章信息 | 参见 [指定用户的所有粉丝勋章信息](../user/medals.md#指定用户的所有粉丝勋章信息) `data.list[n].uinfo_medal` 对象 |
+| effect_id | num | (?) | |
+
+`data.uinfo_medal` 对象:
+
+参见 [指定用户的所有粉丝勋章信息](../user/medals.md#指定用户的所有粉丝勋章信息) json回复的 `data.list[n].uinfo_medal` 对象。
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "MESSAGEBOX_USER_MEDAL_CHANGE",
+ "data": {
+ "type": 2,
+ "uid": 438160221,
+ "up_uid": 407045223,
+ "medal_level": 3,
+ "medal_name": "研究猿",
+ "medal_color_start": 6067854,
+ "medal_color_end": 6067854,
+ "medal_color_border": 6067854,
+ "is_lighted": 1,
+ "is_lighted_v2": true,
+ "guard_level": 0,
+ "unlock": 0,
+ "unlock_level": 0,
+ "multi_unlock_level": "",
+ "upper_bound_content": "",
+ "uinfo_medal": {
+ "name": "研究猿",
+ "level": 3,
+ "color_start": 6067854,
+ "color_end": 6067854,
+ "color_border": 6067854,
+ "color": 0,
+ "id": 0,
+ "typ": 0,
+ "is_light": 1,
+ "ruid": 407045223,
+ "guard_level": 0,
+ "score": 0,
+ "guard_icon": "",
+ "honor_icon": "",
+ "v2_medal_color_start": "#5762A799",
+ "v2_medal_color_end": "#5762A799",
+ "v2_medal_color_border": "#5762A799",
+ "v2_medal_color_text": "#FFFFFFFF",
+ "v2_medal_color_level": "#000B7099",
+ "user_receive_count": 0
+ },
+ "effect_id": 1861
+ }
+}
+```
+
+
+
+#### 获得粉丝勋章 (MESSAGEBOX_USER_GAIN_MEDAL)
+
+获得时下发。
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `MESSAGEBOX_USER_GAIN_MEDAL` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| type | num | 类型 | 0 |
+| uid | num | 用户mid | |
+| up_uid | num | 主播uid | |
+| medal_id | num | 勋章id | |
+| medal_name | str | 勋章名称 | |
+| medal_level | num | 勋章等级 | |
+| medal_color | num | 勋章颜色 | |
+| medal_color_start | num | 十进制勋章起始颜色 | |
+| medal_color_end | num | 十进制勋章结束颜色 | |
+| medal_color_border | num | 十进制勋章边框颜色 | |
+| msg_title | str | 消息标题 | |
+| msg_content | str | 消息内容 | |
+| normal_color | num | (?) | |
+| highlight_color | num | (?) | |
+| intimacy | num | 当前亲密度 | |
+| next_intimacy | num | 升级所需亲密度 | |
+| today_feed | num | 今日亲密度 | |
+| day_limit | num | 今日亲密度上限 | |
+| is_wear | num | (?) | |
+| guard_level | num | 大航海等级 | |
+| is_received | num | (?) | |
+| is_lighted | num | 是否点亮? | 1:点亮? |
+| is_lighted_v2 | bool | 是否点亮v2? | |
+| toast | str | 提示 | |
+| fan_name | str | 粉丝名称 | |
+| uinfo_medal | obj | 粉丝勋章信息 | 参见 [指定用户的所有粉丝勋章信息](../user/medals.md#指定用户的所有粉丝勋章信息) `data.list[n].uinfo_medal` 对象 |
+
+`data.uinfo_medal` 对象:
+
+参见 [指定用户的所有粉丝勋章信息](../user/medals.md#指定用户的所有粉丝勋章信息) json回复的 `data.list[n].uinfo_medal` 对象。
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "MESSAGEBOX_USER_GAIN_MEDAL",
+ "data": {
+ "type": 0,
+ "uid": 438160221,
+ "up_uid": 11602644,
+ "medal_id": 19252517,
+ "medal_name": "广药",
+ "medal_level": 1,
+ "medal_color": 6067854,
+ "medal_color_start": 6067854,
+ "medal_color_end": 6067854,
+ "medal_color_border": 6067854,
+ "msg_title": "恭喜你获得【WuGuangYao】的粉丝勋章~",
+ "msg_content": "获得100点亲密度\n你的粉丝勋章达到1级",
+ "normal_color": 7697781,
+ "highlight_color": 16478873,
+ "intimacy": 100,
+ "next_intimacy": 201,
+ "today_feed": 100,
+ "day_limit": 2000,
+ "is_wear": 0,
+ "guard_level": 0,
+ "is_received": 1,
+ "is_lighted": 1,
+ "is_lighted_v2": true,
+ "toast": "成功入团并关注主播,得1级大礼包",
+ "fan_name": "weatfe",
+ "uinfo_medal": {
+ "name": "广药",
+ "level": 1,
+ "color_start": 6067854,
+ "color_end": 6067854,
+ "color_border": 6067854,
+ "color": 6067854,
+ "id": 19252517,
+ "typ": 0,
+ "is_light": 1,
+ "ruid": 11602644,
+ "guard_level": 0,
+ "score": 0,
+ "guard_icon": "",
+ "honor_icon": "",
+ "v2_medal_color_start": "#5762A799",
+ "v2_medal_color_end": "#5762A799",
+ "v2_medal_color_border": "#5762A799",
+ "v2_medal_color_text": "#FFFFFFFF",
+ "v2_medal_color_level": "#000B7099",
+ "user_receive_count": 0
+ }
+ }
+}
+```
+
+
+
+#### 粉丝团戳一戳礼物通知 (FANS_CLUB_POKE_GIFT_NOTICE)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `FANS_CLUB_POKE_GIFT_NOTICE` | |
+| data | obj | 信息本体 | |
+
+`data` 对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| icon | str | 图标 | |
+| uface | str | 头像 | |
+| bg_img_url | str | 背景图片 | |
+| text | str | 提示文本 | |
+| highlight_text | str | 高亮文本? | |
+| button_text | str | 按钮文本 | |
+| display_duration | num | 显示时间? | |
+| room_id | num | 房间号 | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "FANS_CLUB_POKE_GIFT_NOTICE",
+ "data": {
+ "icon": "https://i0.hdslb.com/bfs/live/37a2fe03f2af95928c67cbac889e10dab6f7d42a.png",
+ "uface": "https://i0.hdslb.com/bfs/face/member/noface.jpg",
+ "bg_img_url": "https://i0.hdslb.com/bfs/live/fbe99002b5914157d783f8e07f021e2fd6ba5c1b.png",
+ "text": "主播戳了戳你~投喂礼物获5倍亲密度加成",
+ "highlight_text": "5倍亲密度加成",
+ "button_text": "去投喂",
+ "display_duration": 8,
+ "room_id": 1899237171
+ }
+}
+```
+
+
+
+#### ??? (master_qn_strategy_chg)
+
+**JSON消息:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| cmd | str | `master_qn_strategy_chg` | |
+| data | str | 信息本体 | JSON文本 |
+
+`data` JSON解析后对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --- | --- | --- | --- |
+| mtime | num | (?) | Unix秒时间戳 |
+| scatter | arr | (?) | |
+
+**示例:**
+
+
+查看消息示例:
+
+```json
+{
+ "cmd": "master_qn_strategy_chg",
+ "data": "{\"mtime\":1744380444,\"scatter\":[0,300]}"
+}
+```
+
+