Merge remote-tracking branch 'upstream/master' into patch-1
This commit is contained in:
commit
9fb40928ee
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
mkdocs/html/
|
||||
/.vuepress/.cache/
|
||||
/.vuepress/.temp/
|
||||
/.vuepress/dist/
|
||||
@ -6,3 +5,4 @@ mkdocs/html/
|
||||
.idea/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
*.swp
|
||||
|
||||
@ -243,12 +243,14 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接
|
||||
- [x] [播放 & 下载地址(视频流)](docs/cheese/videostream_url.md)
|
||||
- [ ] [直播](docs/live)
|
||||
- [ ] [直播间基本信息](docs/live/info.md)
|
||||
- [ ] [直播推荐](docs/live/recommend.md)
|
||||
- [ ] [直播分区](docs/live/live_area.md)
|
||||
- [ ] [直播间管理](docs/live/manage.md)
|
||||
- [ ] 直播间操作
|
||||
- [ ] [直播视频流](docs/live/live_stream.md)
|
||||
- [ ] [直播信息流](docs/live/message_stream.md)
|
||||
- [ ] [直播红包](docs/live/redpocket.md)
|
||||
- [ ] [直播间表情包](docs/live/emoticons.md)
|
||||
- [ ] [直播间用户实用 API](docs/live/user.md)
|
||||
- [x] [直播间禁言相关](docs/live/silent_user_manage.md)
|
||||
- [ ] [关注UP直播情况](docs/live/follow_up_live.md)
|
||||
@ -384,6 +386,7 @@ OR Aifadian:[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE)
|
||||
- [bloomrpc/bloomrpc](https://github.com/bloomrpc/bloomrpc): GUI Client for GRPC Services
|
||||
- [grpc/grpc](https://github.com/grpc/grpc): The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
|
||||
- [glideapps/quicktype](https://github.com/glideapps/quicktype): quicktype generates strongly-typed models and serializers from JSON, JSON Schema, TypeScript, and GraphQL queries, making it a breeze to work with JSON type-safely in many programming languages. 一键生成多种语言的JSON反序列化所需类,以便于快速反序列化,有网页版
|
||||
- [SessionHu/json-apidoc-gen](https://github.com/SessionHu/json-apidoc-gen): Simple CLI tool for generating BAC document template
|
||||
|
||||
<style scoped>
|
||||
.shields a {
|
||||
|
||||
@ -20,6 +20,8 @@
|
||||
|
||||
**JSON回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --- | --- | --- | --- |
|
||||
| code | int | 返回值 | 0: 成功 |
|
||||
@ -180,3 +182,55 @@ curl -G 'https://app.bilibili.com/x/v2/version/fawkes/upgrade' \
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 拼接最新版本下载地址
|
||||
|
||||
> https://api.bilibili.com/x/web-frontend/getappversion
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
**URL参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ---- | ---- | ---- | ---- | ---- |
|
||||
| target | string | 目标平台 | 目测仅 `pc_electron`, 错误的值会导致返回 `HTTP 404` |
|
||||
| cdn_url | string | CDN URL | 任意字符串, 默认 `https://dl.hdslb.com/mobile/fixed/bili_win/bili_win-install.exe` |
|
||||
|
||||
**JSON回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| code | number | 返回值 | 0: 成功<br />-1: need target |
|
||||
| message | string | 错误消息 | 成功时无此项 |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| cdn_url | string | CDN URL | 内容同请求参数 `cdn_url` |
|
||||
| sole_cdn_url | string | 带版本的 CDN URL | `cdn_url + "?v=" + 最新版本` |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/web-frontend/getappversion' \
|
||||
--url-query 'target=pc_electron' \
|
||||
--url-query 'cdn_url=https://dl.hdslb.com/mobile/fixed/bili_win/bili_win-install.exe'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"cdn_url": "https://dl.hdslb.com/mobile/fixed/bili_win/bili_win-install.exe",
|
||||
"sole_cdn_url": "https://dl.hdslb.com/mobile/fixed/bili_win/bili_win-install.exe?v=1.16.1-2"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
@ -357,7 +357,7 @@ curl -G 'https://member.bilibili.com/x2/creative/web/seasons' \
|
||||
|
||||
注: 有人工审核
|
||||
|
||||
**正文参数:**
|
||||
**正文参数 (application/x-www-form-urlencoded):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | -------- | ------ | ---- |
|
||||
@ -728,3 +728,191 @@ curl -X POST 'https://member.bilibili.com/x2/creative/web/season/del' \
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 获取合集小节中的视频
|
||||
|
||||
> https://member.bilibili.com/x2/creative/web/season/section
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
可以在给合集排序时使用, 可以获取别人的
|
||||
|
||||
**URL 参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----- | --- | ---- | ----- | --- |
|
||||
| id | num | 合集 ID | 必要 | |
|
||||
|
||||
**JSON 回复:**
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ---- |
|
||||
| code | num | 返回值 | 0:成功 |
|
||||
| message | str | 错误信息 | |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------- | ---- | ------------ | ---- |
|
||||
| section | obj | 小节信息 | |
|
||||
| episodes | arr | 小节中的视频 | |
|
||||
|
||||
`data` 对象中的 `section` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------- | ---- | ------------ | ---- |
|
||||
| id | num | 小节 ID | |
|
||||
| type | num | 小节类型 | |
|
||||
| seasonId | num | 合集 ID | |
|
||||
| title | str | 小结标题 | |
|
||||
| order | str | 排序编号? | |
|
||||
| isEnd | num | 是否已完结? | 0: 未完结 |
|
||||
| state | num | 合集状态? | 0: 正常显示<br />-6: 正在审核 |
|
||||
| partState | num | 合集分段状态? | 0 |
|
||||
| rejectReason | str | 合集拒绝原因? | |
|
||||
| ctime | num | 创建时间 | |
|
||||
| mtime | num | 修改时间 | |
|
||||
| epCount | num | 小节视频总数 | |
|
||||
| cover | num | 合集封面 | |
|
||||
| show | num | 是否公开? | 1: 公开 |
|
||||
| has_charging_pay | num | 是否充电付费? | 0: 否 |
|
||||
| Episodes | null | | |
|
||||
| has_pugv_pay | num | 是否 PUGV 付费? | 0: 否 |
|
||||
|
||||
`data` 对象中的 `episodes`数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------- | ---- | ------------ | ---- |
|
||||
| id | num | 合集内视频 ID | |
|
||||
| title | str | 视频标题 | |
|
||||
| aid | num | 视频 aid | |
|
||||
| bvid | str | 视频 bvid | |
|
||||
| cid | num | 视频 cid | |
|
||||
| seasonId | num | 合集 ID | |
|
||||
| sectionId | num | 小节 ID | |
|
||||
| order | num | 排序编号 | |
|
||||
| videoTitle | str | 视频标题 | |
|
||||
| archiveTitle | str | 看起来也是标题 | |
|
||||
| archiveState | num | 0 | |
|
||||
| rejectReason | str | 拒绝理由? | |
|
||||
| state | num | 0 | |
|
||||
| cover | str | 封面 URL | |
|
||||
| is_free | num | 是否免费? | 0: 免费 |
|
||||
| aid_owner | bool | 是否视频所有者 | true:是所有者 |
|
||||
| charging_pay | num | 充电付费? | 0: 否 |
|
||||
|
||||
|
||||
**示例:**
|
||||
|
||||
获取合集小节 176088 的视频
|
||||
|
||||
```shell
|
||||
curl -G --url 'https://member.bilibili.com/x2/creative/web/season/section' \
|
||||
--url-query 'id=176088' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
会返回全部的,由于很长,这里只保留三个作为例子
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"section": {
|
||||
"id": 176088,
|
||||
"type": 1,
|
||||
"seasonId": 152812,
|
||||
"title": "正片",
|
||||
"order": 1,
|
||||
"state": 0,
|
||||
"partState": 0,
|
||||
"rejectReason": "",
|
||||
"ctime": 1643250822,
|
||||
"mtime": 1739466002,
|
||||
"epCount": 112,
|
||||
"cover": "http://i1.hdslb.com/bfs/archive/4439a182b142d92a169609e6e14e7217b3e14e0d.jpg",
|
||||
"has_charging_pay": 0,
|
||||
"Episodes": null,
|
||||
"show": 1,
|
||||
"has_pugv_pay": 0
|
||||
},
|
||||
"episodes": [
|
||||
{
|
||||
"id": 109100674,
|
||||
"title": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
|
||||
"aid": 113997323963614,
|
||||
"bvid": "BV14BNfeSE5c",
|
||||
"cid": 28376042631,
|
||||
"seasonId": 152812,
|
||||
"sectionId": 176088,
|
||||
"order": 1,
|
||||
"videoTitle": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
|
||||
"archiveTitle": "「开箱评测」三星Note8 EMR2笔对比公版Wacom笔 套娃笔首选 10寸 RK PX30 Wacom 电子书 天喻墨学 M2 M3",
|
||||
"archiveState": 0,
|
||||
"rejectReason": "",
|
||||
"state": 0,
|
||||
"cover": "",
|
||||
"is_free": 0,
|
||||
"aid_owner": true,
|
||||
"charging_pay": 0,
|
||||
"member_first": 0,
|
||||
"pugv_pay": 0
|
||||
},
|
||||
{
|
||||
"id": 108733886,
|
||||
"title": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
|
||||
"aid": 113982291576104,
|
||||
"bvid": "BV1YyNvetEbX",
|
||||
"cid": 28325121446,
|
||||
"seasonId": 152812,
|
||||
"sectionId": 176088,
|
||||
"order": 2,
|
||||
"videoTitle": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
|
||||
"archiveTitle": "「开箱评测」拆解 椭圆形的第三方AirTag GRTSZ S2 Tag",
|
||||
"archiveState": 0,
|
||||
"rejectReason": "",
|
||||
"state": 0,
|
||||
"cover": "",
|
||||
"is_free": 0,
|
||||
"aid_owner": true,
|
||||
"charging_pay": 0,
|
||||
"member_first": 0,
|
||||
"pugv_pay": 0
|
||||
},
|
||||
{
|
||||
"id": 106045797,
|
||||
"title": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
|
||||
"aid": 113892936122993,
|
||||
"bvid": "BV1ZFFKeTEkr",
|
||||
"cid": 28087484764,
|
||||
"seasonId": 152812,
|
||||
"sectionId": 176088,
|
||||
"order": 3,
|
||||
"videoTitle": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
|
||||
"archiveTitle": "「开箱评测」这帕姆怎么射不出来呢! 星穹铁道 KFC联动 财神帕姆 太可爱了",
|
||||
"archiveState": 0,
|
||||
"rejectReason": "",
|
||||
"state": 0,
|
||||
"cover": "",
|
||||
"is_free": 0,
|
||||
"aid_owner": true,
|
||||
"charging_pay": 0,
|
||||
"member_first": 0,
|
||||
"pugv_pay": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
@ -110,7 +110,7 @@ curl 'https://comment.bilibili.com/144541892.xml'
|
||||
| 2 | 弹幕字号 | int32 | 18:小<br />25:标准<br />36:大 |
|
||||
| 3 | 弹幕颜色 | int32 | 十进制RGB888值 |
|
||||
| 4 | 弹幕发送时间 | int32 | 时间戳 |
|
||||
| 5 | 弹幕池类型 | int32 | 0:普通池<br />1:字幕池<br />2:特殊池(代码/BAS弹幕) |
|
||||
| 5 | 弹幕池类型 | int32 | 0: 普通池<br />1: 字幕池<br />2: 特殊池 (代码/BAS弹幕)<br />3: 互动池?|
|
||||
| 6 | 发送者mid的HASH | string | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id |
|
||||
| 7 | 弹幕dmid | int64 | 唯一 可用于操作参数 |
|
||||
| 8 | 弹幕的屏蔽等级 | int32 | 0-10,低于用户设定等级的弹幕将被屏蔽<br />(新增,下方样例未包含) |
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
请求方式:`GET`
|
||||
|
||||
是否需要登录:`否`
|
||||
认证方式:Cookie(SESSDATA)
|
||||
|
||||
## URL参数
|
||||
|
||||
@ -1140,4 +1140,4 @@ curl -L -X GET 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?hos
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
</details>
|
||||
|
||||
@ -141,6 +141,7 @@ curl -G 'https://api.bilibili.com/x/v3/fav/folder/info' \
|
||||
| up_mid | num | 目标用户mid | 必要 | |
|
||||
| type | num | 目标内容属性 | 非必要 | 默认为全部<br />0:全部<br />2:视频稿件 |
|
||||
| rid | num | 目标内容id | 非必要 | 视频稿件:视频稿件avid |
|
||||
| web_location | str | 333.1387 | 非必要| |
|
||||
|
||||
**json回复:**
|
||||
|
||||
@ -176,7 +177,7 @@ curl -G 'https://api.bilibili.com/x/v3/fav/folder/info' \
|
||||
| id | num | 收藏夹mlid(完整id) | 收藏夹原始id+创建者mid尾号2位 |
|
||||
| fid | num | 收藏夹原始id | |
|
||||
| mid | num | 创建者mid | |
|
||||
| attr | num | 属性位 | |
|
||||
| attr | num | 收藏夹属性 | 二进制位属性<br />详细说明见下表 |
|
||||
| title | str | 收藏夹标题 | |
|
||||
| fav_state | num | 目标id是否存在于该收藏夹 | 存在于该收藏夹:1<br />不存在于该收藏夹:0 |
|
||||
| media_count | num | 收藏夹内容数量 | |
|
||||
@ -185,8 +186,8 @@ curl -G 'https://api.bilibili.com/x/v3/fav/folder/info' \
|
||||
|
||||
| 位 | 内容 | 备注 |
|
||||
| --------------- | ---------------- | -------------------------------- |
|
||||
| 0 | 是否为默认收藏夹 | 0:默认收藏夹<br />1:其他收藏夹 |
|
||||
| 1 | 私有收藏夹 | 0:公开<br />1:私有 |
|
||||
| 0 | 私有收藏夹 | 0:公开<br />1:私有 |
|
||||
| 1 | 是否为默认收藏夹 | 0:默认收藏夹<br />1:其他收藏夹 |
|
||||
| 其他有待补充... | | |
|
||||
|
||||
**示例:**
|
||||
@ -304,7 +305,7 @@ curl -G 'https://api.bilibili.com/x/v3/fav/folder/created/list-all' \
|
||||
| id | num | 收藏夹ml | |
|
||||
| fid | num | 原始收藏夹mlid | 去除两位mid尾号 |
|
||||
| mid | num | 创建用户mid | |
|
||||
| attr | num | 收藏夹属性 | 转换成8-bit二进制处理<br />详细说明见下表 |
|
||||
| attr | num | 收藏夹属性 | [同上 attr](#获取指定用户创建的所有收藏夹信息) |
|
||||
| title | str | 收藏夹标题 | |
|
||||
| cover | str | 收藏夹封面图片url | |
|
||||
| upper | obj | 收藏夹创建用户信息 | |
|
||||
@ -316,12 +317,6 @@ curl -G 'https://api.bilibili.com/x/v3/fav/folder/created/list-all' \
|
||||
| fav_state | num | 0 | 作用尚不明确 |
|
||||
| media_count | num | 收藏夹总计视频数 | |
|
||||
|
||||
`attr`属性二进制值表:
|
||||
|
||||
| 其他有待补充... | 1:默认收藏夹 | 0:公开性 |
|
||||
| --------------- | -------------------------------- | -------------------- |
|
||||
| | 0:默认收藏夹<br />1:其他收藏夹 | 0:公开<br />1:私有 |
|
||||
|
||||
`data`中的`list`数组中的对象中的`upper`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
|----- |--- |------- |----- |--- |
|
||||
| keyword | str | 关键词 | 不必要 | |
|
||||
| key_word | str | 关键词 | 不必要 | |
|
||||
| ps | int | 每页返回数据的最大值 | 不必要 | |
|
||||
| pn | int | 当前页数 | 不必要 | |
|
||||
|
||||
@ -137,11 +137,11 @@
|
||||
|
||||
**示例:**
|
||||
|
||||
搜索关键词为 `2233`, 然而没有结果:
|
||||
搜索关键词为 `2233`:
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/garb/v2/mall/home/search' \
|
||||
--data-urlencode 'keyword=2233' \
|
||||
--data-urlencode 'key_word=2233' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
@ -154,10 +154,464 @@ curl -G 'https://api.bilibili.com/x/garb/v2/mall/home/search' \
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"list": null,
|
||||
"list": [
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2024拜年纪-2233拜年画册",
|
||||
"group_id": 70,
|
||||
"group_name": "2024拜年纪-2233拜年画册",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "1395313",
|
||||
"dlc_act_id": "279",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "256",
|
||||
"dlc_lottery_sale_quantity": "313028",
|
||||
"dlc_lottery_type": "1",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1707458400",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "http://i0.hdslb.com/bfs/archive/f96a8cf6866ccef8f54de4773acf0cb07b915ac6.png",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 490,
|
||||
"price_bp_forever": 490,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "31万+",
|
||||
"total_count_desc": "已售31万+份",
|
||||
"tag": "",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=279\u0026hybrid_set_header=2\u0026lottery_id=256",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2024 BML\u0026BW 2233收藏集-2233福利卡池",
|
||||
"group_id": 70,
|
||||
"group_name": "2024 BML\u0026BW 2233收藏集-2233福利卡池",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "4376",
|
||||
"dlc_act_id": "102962",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "1",
|
||||
"dlc_lottery_id": "102966",
|
||||
"dlc_lottery_sale_quantity": "2677",
|
||||
"dlc_lottery_type": "2",
|
||||
"dlc_sale_end_time": "1729828800",
|
||||
"dlc_sale_mode": "2",
|
||||
"dlc_sale_start_time": "1721876400",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/4a374316b1e9a07cffeccbdeff585c472dcdcc26.png",
|
||||
"sale_bp_forever_raw": "0",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": null,
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "2千+",
|
||||
"total_count_desc": "已发放2千+份",
|
||||
"tag": "限时DLC",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=102962\u0026hybrid_set_header=2\u0026lottery_id=102966",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2233·幻境序曲-长夜",
|
||||
"group_id": 70,
|
||||
"group_name": "2233·幻境序曲-长夜",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "228065",
|
||||
"dlc_act_id": "102161",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "103087",
|
||||
"dlc_lottery_sale_quantity": "71200",
|
||||
"dlc_lottery_type": "2",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1722139200",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/f7e4f434ba6b93434b9e60df3c57a07552af4ca1.png",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 490,
|
||||
"price_bp_forever": 490,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "7万+",
|
||||
"total_count_desc": "已售7万+份",
|
||||
"tag": "DLC池",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=102161\u0026hybrid_set_header=2\u0026lottery_id=103087",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2233·群星闪耀时-双子座",
|
||||
"group_id": 70,
|
||||
"group_name": "2233·群星闪耀时-双子座",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "1164544",
|
||||
"dlc_act_id": "113",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "16",
|
||||
"dlc_lottery_sale_quantity": "572712",
|
||||
"dlc_lottery_type": "1",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1686196800",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "http://i0.hdslb.com/bfs/archive/ed35d12a3dce7764d6cb5b02cb4a459373472522.jpg",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 90,
|
||||
"price_bp_forever": 90,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "57万+",
|
||||
"total_count_desc": "已售57万+份",
|
||||
"tag": "",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=113\u0026hybrid_set_header=2\u0026lottery_id=16",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 39389,
|
||||
"name": "2233人生百戏-花木兰",
|
||||
"group_id": 70,
|
||||
"group_name": "2233人生百戏-花木兰",
|
||||
"part_id": 6,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"desc": "为从军设妙计女扮男装,涉千山越万水亲赴戎机。2233人生百戏·花木兰装扮上线啦!本套装包括动态卡片、点赞动效和表情包,永久购买还能成为认证粉丝,领取粉丝专属装扮!",
|
||||
"fan_desc": "人生百戏-花木兰",
|
||||
"fan_id": "人生百戏-花木兰",
|
||||
"fan_item_ids": "39335,39384,39353,39354",
|
||||
"fan_mid": "35365327",
|
||||
"fan_no_color": "#eb3d3e",
|
||||
"fan_recommend_desc": "为从军设妙计女扮男装,涉千山越万水亲赴戎机。",
|
||||
"fan_recommend_jump_type": "url",
|
||||
"fan_recommend_jump_value": "https://space.bilibili.com/35365327?spm_id_from=333.337.0.0",
|
||||
"fan_share_image": "https://i0.hdslb.com/bfs/garb/item/5ddd3f72ef2a938e9125851f488068012b841ad4.jpg",
|
||||
"gray_rule": "true",
|
||||
"gray_rule_type": "all",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/item/e21ec12047bcd93e6afb8e52a68eb9835cd54a23.jpg",
|
||||
"image_cover_color": "#d8b796",
|
||||
"is_hide": "false",
|
||||
"item_id_card": "39334",
|
||||
"item_id_emoji": "39352",
|
||||
"item_id_thumbup": "39336",
|
||||
"open_platform_vip_discount": "true",
|
||||
"owner_uid": "647193094",
|
||||
"rank_investor_show": "false",
|
||||
"realname_auth": "false",
|
||||
"sale_bp_forever_raw": "5000",
|
||||
"sale_bp_pm_raw": "800",
|
||||
"sale_buy_num_limit": "100",
|
||||
"sale_quantity": "20000",
|
||||
"sale_quantity_limit": "true",
|
||||
"sale_region_ip_limit": "全球",
|
||||
"sale_reserve_switch": "false",
|
||||
"sale_time_begin": "1666868400",
|
||||
"sale_type": "pay",
|
||||
"suit_card_type": "big_img",
|
||||
"type": "ip"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "open_platform_vip_discount",
|
||||
"time_limit": true,
|
||||
"time_left": 417469277,
|
||||
"tag": "大会员平台折扣",
|
||||
"price_bp_month": 640,
|
||||
"price_bp_forever": 4000,
|
||||
"type_month": "open_platform_vip_discount",
|
||||
"tag_month": "大会员平台折扣",
|
||||
"time_limit_month": true,
|
||||
"time_left_month": 417469277
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -61550323,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 8650,
|
||||
"sale_count_desc": "1万+",
|
||||
"total_count_desc": "已售1万+份",
|
||||
"tag": "",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/suit/detail?navhide=1\u0026id=39389",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 4259,
|
||||
"name": "2233白色情人节",
|
||||
"group_id": 70,
|
||||
"group_name": "2233白色情人节",
|
||||
"part_id": 6,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"desc": "shot你的心——无论是谁都拥有爱的权利,快换上白色情人节专属装扮来遇见心里的那个ta吧!本套装包括头像挂件、动态卡片、点赞动效和表情包,永久购买还能成为认证粉丝,领取粉丝专属装扮!",
|
||||
"fan_desc": "白色情人节",
|
||||
"fan_id": "2233白色情人节",
|
||||
"fan_item_ids": "4257,4230,4256,4255,4253,4254",
|
||||
"fan_mid": "174501086",
|
||||
"fan_no_color": "#f85574",
|
||||
"fan_recommend_desc": "平淡日常中迎来浪漫的节日,象征爱情的丘比特们悄悄来到少女们身边,用爱之箭觉醒了懵懂悸动的心。新鲜的玫瑰,闪耀光泽的草莓,白色情人节这天为你准备不一样的惊喜。",
|
||||
"fan_recommend_jump_type": "url",
|
||||
"fan_recommend_jump_value": "https://b23.tv/54WVWS",
|
||||
"fan_share_image": "https://i0.hdslb.com/bfs/garb/item/30e3f1b234dd33a2a5446dd7d05b31835ac74d4b.jpg",
|
||||
"gray_rule": "true",
|
||||
"gray_rule_type": "all",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/item/a8d60a7d4f1f5a5de667b307736f701cb39c0741.jpg",
|
||||
"image_cover_color": "#a3a8ec",
|
||||
"image_cover_long": "https://i0.hdslb.com/bfs/garb/item/5ac3bb024d42ff0f26de07ce974351d62587c6ea.jpg",
|
||||
"image_desc": "https://i0.hdslb.com/bfs/garb/item/cfe753a010d124a95fb311c372a5be69d82c8e13.jpg",
|
||||
"is_hide": "false",
|
||||
"item_id_card": "4231",
|
||||
"item_id_emoji": "4252",
|
||||
"item_id_pendant": "4229",
|
||||
"item_id_thumbup": "4232",
|
||||
"open_platform_vip_discount": "true",
|
||||
"owner_uid": "647193094",
|
||||
"rank_investor_show": "true",
|
||||
"realname_auth": "false",
|
||||
"sale_bp_forever_raw": "5900",
|
||||
"sale_bp_pm_raw": "800",
|
||||
"sale_buy_num_limit": "100",
|
||||
"sale_quantity": "52000",
|
||||
"sale_quantity_limit": "true",
|
||||
"sale_region_ip_limit": "全球",
|
||||
"sale_reserve_switch": "false",
|
||||
"sale_time_begin": "1615694400",
|
||||
"sale_type": "pay",
|
||||
"suit_card_type": "big_img",
|
||||
"type": "ip"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "open_platform_vip_discount",
|
||||
"time_limit": true,
|
||||
"time_left": 417469277,
|
||||
"tag": "大会员平台折扣",
|
||||
"price_bp_month": 640,
|
||||
"price_bp_forever": 4720,
|
||||
"type_month": "open_platform_vip_discount",
|
||||
"tag_month": "大会员平台折扣",
|
||||
"time_limit_month": true,
|
||||
"time_left_month": 417469277
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -112724323,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "5万+",
|
||||
"total_count_desc": "已售5万+份",
|
||||
"tag": "粉丝套装已售罄",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/suit/detail?navhide=1\u0026id=4259",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2233·少女日记-蔚蓝幻想曲",
|
||||
"group_id": 70,
|
||||
"group_name": "2233·少女日记-蔚蓝幻想曲",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "100310",
|
||||
"dlc_act_id": "103244",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "103885",
|
||||
"dlc_lottery_sale_quantity": "16563",
|
||||
"dlc_lottery_type": "2",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1727236800",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "http://i0.hdslb.com/bfs/archive/a04b3e9ef354493a0890a9197412f1c77e01ba0f.jpg",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 490,
|
||||
"price_bp_forever": 490,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "1万+",
|
||||
"total_count_desc": "已售1万+份",
|
||||
"tag": "DLC池",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=103244\u0026hybrid_set_header=2\u0026lottery_id=103885",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2233·少女日记-十四岁生日",
|
||||
"group_id": 70,
|
||||
"group_name": "2233·少女日记-十四岁生日",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "100310",
|
||||
"dlc_act_id": "103244",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "103247",
|
||||
"dlc_lottery_sale_quantity": "83747",
|
||||
"dlc_lottery_type": "1",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1723780800",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/9c338eb4841cad917665140cc08c7d14b5c7e0bf.png",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 490,
|
||||
"price_bp_forever": 490,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "8万+",
|
||||
"total_count_desc": "已售8万+份",
|
||||
"tag": "",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=103244\u0026hybrid_set_header=2\u0026lottery_id=103247",
|
||||
"sales_mode": 0
|
||||
},
|
||||
{
|
||||
"item_id": 0,
|
||||
"name": "2024 BML\u0026BW 2233收藏集-BML\u0026BW2024",
|
||||
"group_id": 70,
|
||||
"group_name": "2024 BML\u0026BW 2233收藏集-BML\u0026BW2024",
|
||||
"part_id": 0,
|
||||
"state": "active",
|
||||
"properties": {
|
||||
"book_amount": "4376",
|
||||
"dlc_act_id": "102962",
|
||||
"dlc_act_status": "2",
|
||||
"dlc_is_free": "0",
|
||||
"dlc_lottery_id": "102963",
|
||||
"dlc_lottery_sale_quantity": "1699",
|
||||
"dlc_lottery_type": "1",
|
||||
"dlc_sale_end_time": "2114406245",
|
||||
"dlc_sale_mode": "1",
|
||||
"dlc_sale_start_time": "1721876400",
|
||||
"dlc_surplus_stock": "0",
|
||||
"image_cover": "https://i0.hdslb.com/bfs/garb/6c2d68faf143c33b484b110e2221ab15a0a1f85c.png",
|
||||
"sale_bp_forever_raw": "990",
|
||||
"type": "dlc_act"
|
||||
},
|
||||
"current_activity": null,
|
||||
"next_activity": {
|
||||
"type": "first_draw_discount",
|
||||
"time_limit": false,
|
||||
"time_left": -1728418723,
|
||||
"tag": "大会员首抽",
|
||||
"price_bp_month": 490,
|
||||
"price_bp_forever": 490,
|
||||
"type_month": "",
|
||||
"tag_month": "",
|
||||
"time_limit_month": false,
|
||||
"time_left_month": 0
|
||||
},
|
||||
"current_sources": null,
|
||||
"finish_sources": null,
|
||||
"sale_left_time": -1728418723,
|
||||
"sale_time_end": -1728418723,
|
||||
"sale_surplus": 0,
|
||||
"sale_count_desc": "1千+",
|
||||
"total_count_desc": "已售1千+份",
|
||||
"tag": "",
|
||||
"jump_link": "https://www.bilibili.com/h5/mall/digital-card/home?-Abrowser=live\u0026act_id=102962\u0026hybrid_set_header=2\u0026lottery_id=102963",
|
||||
"sales_mode": 0
|
||||
}
|
||||
],
|
||||
"pn": 1,
|
||||
"ps": 20,
|
||||
"total": 0
|
||||
"total": 187
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@ -120,7 +120,7 @@
|
||||
| cid | num | 观看到的对象id | 稿件视频&剧集(当`business=archive`或`business=pgc`时):视频cid<br />文集(当`business=article-list`时):文章cvid |
|
||||
| part | str | 观看到的视频分 P 标题 | 仅用于稿件视频 |
|
||||
| business | str | 业务类型 | **见请求参数** |
|
||||
| dt | num | 记录查看的平台代码 | 1 3 5 7:手机端<br />2:web端<br />4 6:pad端<br />33:TV端<br />0:其他 |
|
||||
| dt | num | 记录查看的平台代码 | 1 3 5 7:手机端<br />2:web端<br />4 6:pad端<br />9: 智能音箱/游戏机33:TV端<br />0:其他 |
|
||||
|
||||
**示例:**
|
||||
|
||||
|
||||
927
docs/live/emoticons.md
Normal file
927
docs/live/emoticons.md
Normal file
@ -0,0 +1,927 @@
|
||||
# 直播间表情
|
||||
|
||||
## 获取直播间的表情包
|
||||
|
||||
> https://api.live.bilibili.com/xlive/web-ucenter/v2/emoticon/GetEmoticons
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
**URL 参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| -------- | ------ | ---------- | ------ | ---- |
|
||||
| platform | string | 平台 | 必要 | 已知: `pc``android` `ios` |
|
||||
| room_id | number | 直播间长号 | 必要 | 只支持 `room_id` 不支持 `short_id` |
|
||||
|
||||
**JSON 回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ------ | -------- | ---- |
|
||||
| code | number | 返回值 | 0: 成功 |
|
||||
| message | string | 错误消息 | 默认为 0 |
|
||||
| ttl | number | 1 | |
|
||||
| data | object | 信息本体 | 见下 |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------ | -------- | ---------- | ---- |
|
||||
| data | object[] | 表情包数据 | 套了个娃 |
|
||||
| fans_brand | number | 品牌标识? | |
|
||||
| purchase_url | null? | 购买链接? | |
|
||||
|
||||
`data.data[]` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------------------- | -------- | --------- | ---- |
|
||||
| current_cover | string | 封面 URL | |
|
||||
| emoticons | object[] | 表情列表 | |
|
||||
| pkg_descript | string | 文字描述 | |
|
||||
| pkg_id | number | 包 ID | |
|
||||
| pkg_name | string | 包名称 | |
|
||||
| pkg_perm | number | 使用权限? | |
|
||||
| pkg_type | number | 包类型 | |
|
||||
| recently_used_emoticons | unknown[] | 最近使用的表情 | |
|
||||
| top_show | object | 顶部展示信息? | |
|
||||
| top_show_recent | object | 最近使用的顶部展示信息? | |
|
||||
| unlock_identity | number | 解锁所需身份标识? | |
|
||||
| unlock_need_gift | number | 解锁所需礼物? | |
|
||||
|
||||
`data.data[].emoticons[]` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------- | ------ | ---- | ---- |
|
||||
| bulge_display | number | 突出展示? | |
|
||||
| descript | string | 描述 | |
|
||||
| emoji | string | 触发关键词? | |
|
||||
| emoticon_id | number | 表情 ID | |
|
||||
| emoticon_unique | string | 表情唯一标识 | |
|
||||
| emoticon_value_type | number | 表情值类型? | |
|
||||
| height | number | 表情图片高度 | |
|
||||
| identity | number | 身份限制标识? | |
|
||||
| in_player_area | number | 播放器区域内展示? | |
|
||||
| is_dynamic | number | 是否为动态表情? | |
|
||||
| perm | number | 使用权限? | |
|
||||
| unlock_need_gift | number | 解锁需求礼物? | |
|
||||
| unlock_need_level | number | 解锁需求等级? | |
|
||||
| unlock_show_color | string | 解锁展示颜色? | |
|
||||
| unlock_show_image | string | 解锁展示图片? | |
|
||||
| unlock_show_text | string | 解锁展示文字? | |
|
||||
| url | string | 表情图片 URL | |
|
||||
| width | number | 表情图片宽度 | |
|
||||
|
||||
`data.data[].top_show` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------- | ------ | ---- | ---- |
|
||||
| top_left | object | | 左上 |
|
||||
| top_right | object | | 右上 |
|
||||
|
||||
`data.data[].top_show.top_left` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ----- | ------ | ----- | ---- |
|
||||
| image | string | 图片? | |
|
||||
| text | string | 文字 | |
|
||||
|
||||
`data.data[].top_show.top_right` 对象:
|
||||
|
||||
同 `data.data[].top_show.top_left` 对象
|
||||
|
||||
`data.data[].top_show_recent` 对象:
|
||||
|
||||
同 `data.data[].top_show` 对象
|
||||
|
||||
`data.data[].top_show_recent.top_left` 对象:
|
||||
|
||||
同 `data.data[].top_show.top_left` 对象
|
||||
|
||||
`data.data[].top_show_recent.top_right` 对象:
|
||||
|
||||
同 `data.data[].top_show.top_left` 对象
|
||||
|
||||
**示例:**
|
||||
|
||||
获取直播间 `14047` 的表情包, 平台为 `android`
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.live.bilibili.com/xlive/web-ucenter/v2/emoticon/GetEmoticons' \
|
||||
--url-query 'room_id=14047' \
|
||||
--url-query 'platform=android' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"data": [
|
||||
{
|
||||
"current_cover": "http://i0.hdslb.com/bfs/live/39b7667c2601e4da8019472f5e3df1f2278278b6.png",
|
||||
"emoticons": [
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "啊",
|
||||
"emoticon_id": 331,
|
||||
"emoticon_unique": "official_331",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/cbf2746062242e77bdcb9eb08edbf9b151fe0c2e.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "冲鸭",
|
||||
"emoticon_id": 332,
|
||||
"emoticon_unique": "official_332",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/dea7fbbc1c3d3c80f4c7b27263e13460f21874e4.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "upup",
|
||||
"emoticon_id": 348,
|
||||
"emoticon_unique": "official_348",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/38d84a4cd2f40069202ee13bbdca5b23d29710fb.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "星星向龙",
|
||||
"emoticon_id": 343,
|
||||
"emoticon_unique": "official_343",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/a69423be39b0f2a87dc74f2e44ead70de0eb0d4f.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "欧皇驾到",
|
||||
"emoticon_id": 335,
|
||||
"emoticon_unique": "official_335",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/650399e68d0d93df4b3f9e95e7437e83be7fbb1a.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "这个好耶",
|
||||
"emoticon_id": 345,
|
||||
"emoticon_unique": "official_345",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/2ce08b31618d3ad0d34877bf949ef0089a0438b7.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "泰裤辣",
|
||||
"emoticon_id": 339,
|
||||
"emoticon_unique": "official_339",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/82c38fc930ae764b4c6215f544bf8e1dba73b51c.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "闪避技能",
|
||||
"emoticon_id": 337,
|
||||
"emoticon_unique": "official_337",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/fa3febe6c62f3bcd042953141930d96fb8451e60.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "稳住能赢",
|
||||
"emoticon_id": 342,
|
||||
"emoticon_unique": "official_342",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/b3495aaa935b045bfc2e1d52738ea7b124e0d552.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "中奖喷雾",
|
||||
"emoticon_id": 346,
|
||||
"emoticon_unique": "official_346",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/c3cfa182d16564301d39e4c7e4c186dfb9fabf96.png",
|
||||
"width": 200
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "赞",
|
||||
"emoticon_id": 147,
|
||||
"emoticon_unique": "official_147",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/bbd9045570d0c022a984c637e406cb0e1f208aa9.png",
|
||||
"width": 150
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "妙啊",
|
||||
"emoticon_id": 109,
|
||||
"emoticon_unique": "official_109",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/7b7a2567ad1520f962ee226df777eaf3ca368fbc.png",
|
||||
"width": 138
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "有点东西",
|
||||
"emoticon_id": 113,
|
||||
"emoticon_unique": "official_113",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/39e518474a3673c35245bf6ef8ebfff2c003fdc3.png",
|
||||
"width": 186
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "很有精神",
|
||||
"emoticon_id": 150,
|
||||
"emoticon_unique": "official_150",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/e91cbe30b2db1e624bd964ad1f949661501f42f8.png",
|
||||
"width": 201
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "泪目",
|
||||
"emoticon_id": 103,
|
||||
"emoticon_unique": "official_103",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/aa93b9af7ba03b50df23b64e9afd0d271955cd71.png",
|
||||
"width": 144
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "赢麻了",
|
||||
"emoticon_id": 128,
|
||||
"emoticon_unique": "official_128",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/1d4c71243548a1241f422e90cd8ba2b75c282f6b.png",
|
||||
"width": 156
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "钝角",
|
||||
"emoticon_id": 133,
|
||||
"emoticon_unique": "official_133",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/38cf68c25d9ff5d364468a062fc79571db942ff3.png",
|
||||
"width": 153
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "干杯",
|
||||
"emoticon_id": 149,
|
||||
"emoticon_unique": "official_149",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/8fedede4028a72e71dae31270eedff5f706f7d18.png",
|
||||
"width": 162
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "2333",
|
||||
"emoticon_id": 124,
|
||||
"emoticon_unique": "official_124",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/a98e35996545509188fe4d24bd1a56518ea5af48.png",
|
||||
"width": 183
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "打call",
|
||||
"emoticon_id": 146,
|
||||
"emoticon_unique": "official_146",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/fa1eb4dce3ad198bb8650499830560886ce1116c.png",
|
||||
"width": 195
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "多谢款待",
|
||||
"emoticon_id": 148,
|
||||
"emoticon_unique": "official_148",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/4609dad97c0dfa61f8da0b52ab6fff98e0cf1e58.png",
|
||||
"width": 207
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "awsl",
|
||||
"emoticon_id": 102,
|
||||
"emoticon_unique": "official_102",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/328e93ce9304090f4035e3aa7ef031d015bbc915.png",
|
||||
"width": 162
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "鸡汤来咯",
|
||||
"emoticon_id": 137,
|
||||
"emoticon_unique": "official_137",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/b371151503978177b237afb85185b0f5431d0106.png",
|
||||
"width": 198
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "雀食",
|
||||
"emoticon_id": 118,
|
||||
"emoticon_unique": "official_118",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/7251dc7df587388a3933743bf38394d12a922cd7.png",
|
||||
"width": 159
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "禁止套娃",
|
||||
"emoticon_id": 108,
|
||||
"emoticon_unique": "official_108",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/6a644577437d0bd8a314990dd8ccbec0f3b30c92.png",
|
||||
"width": 204
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "暗中观察",
|
||||
"emoticon_id": 104,
|
||||
"emoticon_unique": "official_104",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/18af5576a4582535a3c828c3ae46a7855d9c6070.png",
|
||||
"width": 156
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "保熟吗",
|
||||
"emoticon_id": 105,
|
||||
"emoticon_unique": "official_105",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/0e28444c8e2faef3169e98e1a41c487144d877d4.png",
|
||||
"width": 162
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "比心",
|
||||
"emoticon_id": 106,
|
||||
"emoticon_unique": "official_106",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/1ba5126b10e5efe3e4e29509d033a37f128beab2.png",
|
||||
"width": 132
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "咸鱼翻身",
|
||||
"emoticon_id": 110,
|
||||
"emoticon_unique": "official_110",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/7db4188c050f55ec59a1629fbc5a53661e4ba780.png",
|
||||
"width": 180
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "mua",
|
||||
"emoticon_id": 111,
|
||||
"emoticon_unique": "official_111",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/08f1aebaa4d9c170aa79cbafe521ef0891bdf2b5.png",
|
||||
"width": 165
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "来了来了",
|
||||
"emoticon_id": 115,
|
||||
"emoticon_unique": "official_115",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/61e790813c51eab55ebe0699df1e9834c90b68ba.png",
|
||||
"width": 168
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "贴贴",
|
||||
"emoticon_id": 116,
|
||||
"emoticon_unique": "official_116",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/88b49dac03bfd5d4cb49672956f78beb2ebd0d0b.png",
|
||||
"width": 162
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "牛牛牛",
|
||||
"emoticon_id": 117,
|
||||
"emoticon_unique": "official_117",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/343f7f7e87fa8a07df63f9cba6b776196d9066f0.png",
|
||||
"width": 168
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "颠个勺",
|
||||
"emoticon_id": 119,
|
||||
"emoticon_unique": "official_119",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/625989e78079e3dc38d75cb9ac392fe8c1aa4a75.png",
|
||||
"width": 195
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "好家伙",
|
||||
"emoticon_id": 122,
|
||||
"emoticon_unique": "official_122",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/c2650bf9bbc79b682a4b67b24df067fdd3e5e9ca.png",
|
||||
"width": 165
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "下次一定",
|
||||
"emoticon_id": 125,
|
||||
"emoticon_unique": "official_125",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/cc2652cef69b22117f1911391567bd2957f27e08.png",
|
||||
"width": 177
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "不上Ban",
|
||||
"emoticon_id": 126,
|
||||
"emoticon_unique": "official_126",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/eff44c1fc03311573e8817ca8010aca72404f65c.png",
|
||||
"width": 231
|
||||
},
|
||||
{
|
||||
"bulge_display": 0,
|
||||
"descript": "",
|
||||
"emoji": "上热榜",
|
||||
"emoticon_id": 134,
|
||||
"emoticon_unique": "official_134",
|
||||
"emoticon_value_type": 0,
|
||||
"height": 60,
|
||||
"identity": 99,
|
||||
"in_player_area": 1,
|
||||
"is_dynamic": 1,
|
||||
"perm": 1,
|
||||
"unlock_need_gift": 0,
|
||||
"unlock_need_level": 0,
|
||||
"unlock_show_color": "",
|
||||
"unlock_show_image": "",
|
||||
"unlock_show_text": "",
|
||||
"url": "http://i0.hdslb.com/bfs/live/83d5b9cdaaa820c2756c013031d34dac1fd4156b.png",
|
||||
"width": 168
|
||||
}
|
||||
],
|
||||
"pkg_descript": "官方表情(系统)",
|
||||
"pkg_id": 1,
|
||||
"pkg_name": "通用表情",
|
||||
"pkg_perm": 1,
|
||||
"pkg_type": 1,
|
||||
"recently_used_emoticons": [],
|
||||
"top_show": {
|
||||
"top_left": {
|
||||
"image": "",
|
||||
"text": "通用表情"
|
||||
},
|
||||
"top_right": {
|
||||
"image": "",
|
||||
"text": ""
|
||||
}
|
||||
},
|
||||
"top_show_recent": {
|
||||
"top_left": {
|
||||
"image": "",
|
||||
"text": ""
|
||||
},
|
||||
"top_right": {
|
||||
"image": "",
|
||||
"text": ""
|
||||
}
|
||||
},
|
||||
"unlock_identity": 0,
|
||||
"unlock_need_gift": 0
|
||||
}
|
||||
],
|
||||
"fans_brand": 1,
|
||||
"purchase_url": null
|
||||
},
|
||||
"message": "0",
|
||||
"ttl": 1
|
||||
}
|
||||
```
|
||||
</details>
|
||||
@ -152,7 +152,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 | 直播平台 | 必要 | web端:<br />bililink:android_link |
|
||||
| platform | str | 直播平台 | 必要 | 直播姬(pc):pc_link<br />web端:<br />bililink:android_link |
|
||||
| csrf | str | CSRF Token(位于cookie) | 必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
717
docs/live/recommend.md
Normal file
717
docs/live/recommend.md
Normal file
@ -0,0 +1,717 @@
|
||||
# 直播推荐
|
||||
|
||||
## 主页获取直播推荐
|
||||
|
||||
> https://api.live.bilibili.com/xlive/web-interface/v1/webMain/getMoreRecList
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
**URL 参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------------ | ------ | ---------- | ------ | ---- |
|
||||
| platform | string | 平台类型 | 必要 | 默认为 `web`, 实测可为任意非空串 |
|
||||
| web_location | string | `333.1007` | 非必要 | |
|
||||
|
||||
**JSON 回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ------ | -------- | ---- |
|
||||
| code | number | 返回值 | 0: 成功 |
|
||||
| message | string | 错误信息 | 默认为 `0` |
|
||||
| ttl | number | 1 | |
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------------- | ------ | ------------- | -------- |
|
||||
| recommend_room_list | Array | 推荐房间列表 | 套了个娃 |
|
||||
| top_room_id | number | 置顶直播间号? | |
|
||||
|
||||
`data` 对象中 `recommend_room_list` 数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ---------------------- | -------------- | ---------------- | ---- |
|
||||
| head_box | object \| null | 头像框 | 无则为 `null` |
|
||||
| area_v2_id | number | 分区 ID | |
|
||||
| area_v2_parent_id | number | 父分区 ID | |
|
||||
| area_v2_name | string | 分区名称 | |
|
||||
| area_v2_parent_name | string | 父分区名称 | |
|
||||
| broadcast_type | number | 广播类型? | |
|
||||
| cover | string | 封面 URL | |
|
||||
| link | string | 直播间链接 | 仅 `pathname` 与 `query` 部分 |
|
||||
| online | number | 观看人数 | |
|
||||
| pendant_Info | object | ??? | 作用尚不明确 |
|
||||
| roomid | number | 直播间 ID | |
|
||||
| title | string | 直播间标题 | |
|
||||
| uname | string | 主播用户名 | |
|
||||
| face | string | 主播头像 URL | |
|
||||
| verify | object | 认证信息 | 参见 [用户基本信息](../user/info.md) |
|
||||
| uid | number | 主播用户 mid | |
|
||||
| keyframe | string | 关键帧 URL | |
|
||||
| is_auto_play | number | 是否自动播放? | |
|
||||
| head_box_type | number | 头像框类型? | |
|
||||
| flag | number | 标记? | 作用尚不明确 |
|
||||
| session_id | string | 会话 ID? | 格式为: 本次请求相同的小写无分隔 UUID + 下划线 + 大写以连字符分隔的 UUID |
|
||||
| show_callback | string | 展示回调 URL? | |
|
||||
| click_callback | string | 点击回调 URL? | |
|
||||
| special_id | number | 特殊 ID? | 作用尚不明确 |
|
||||
| watched_show | object | 观看展示 | 见下 |
|
||||
| is_nft | number | 是否为 NFT 头像? | |
|
||||
| nft_dmark | string | ??? | 作用尚不明确 |
|
||||
| is_ad | boolean | 是否为广告 | |
|
||||
| ad_transparent_content | unknown | ??? | 作用尚不明确 |
|
||||
| show_ad_icon | boolean | 显示广告图标 | |
|
||||
| status | boolean | 状态? | 作用尚不明确 |
|
||||
| followers | number | 0 | 作用尚不明确 |
|
||||
|
||||
`recommend_room_list` 数组中的对象中的 `watched_show` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------- | ------- | -------- | ---- |
|
||||
| switch | boolean | ??? | 作用尚不明确 |
|
||||
| num | number | 看过人数 | |
|
||||
| text_small | string | 小文本 | xxx |
|
||||
| text_large | string | 大文本 | xxx人看过 |
|
||||
| icon | string | 图标 URL | 浅色线条眼睛图标 |
|
||||
| icon_location | number | 0 | |
|
||||
| icon_web | string | 图标 URL | 深色线条眼睛图标 (Web 端) |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.live.bilibili.com/xlive/web-interface/v1/webMain/getMoreRecList' \
|
||||
--url-query 'platform=web'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"recommend_room_list": [
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 237,
|
||||
"area_v2_parent_id": 6,
|
||||
"area_v2_name": "怀旧游戏",
|
||||
"area_v2_parent_name": "单机游戏",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/34aedc9409c0abaf622fdb9c6137896b8a9f95d0.jpg",
|
||||
"link": "/923833?hotRank=0",
|
||||
"online": 262700,
|
||||
"pendant_Info": {},
|
||||
"roomid": 923833,
|
||||
"title": "融合版斗蛐蛐s3.5赛季!",
|
||||
"uname": "沉默寡言白河愁",
|
||||
"face": "https://i0.hdslb.com/bfs/face/14169798ca31108e4441e790c14b24706def67a3.jpg",
|
||||
"verify": {
|
||||
"role": 1,
|
||||
"desc": "bilibili 知名游戏UP主、直播高能主播",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 34646754,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071535000000923833okbn8y.jpg",
|
||||
"is_auto_play": 1,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_9A44BEBD-CAEB-46AD-8FD7-B91BA8471EAA",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_9A44BEBD-CAEB-46AD-8FD7-B91BA8471EAA&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=923833&parent_id=6&area_id=237&page=0&position=1&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_9A44BEBD-CAEB-46AD-8FD7-B91BA8471EAA&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=923833&parent_id=6&area_id=237&page=0&position=1&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 30460,
|
||||
"text_small": "3.0万",
|
||||
"text_large": "3.0万人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "大乱斗乱斗之王",
|
||||
"value": "https://i0.hdslb.com/bfs/live/fc28a2a4123154012e0ce3da1273de5f17e81b24.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 817,
|
||||
"area_v2_parent_id": 5,
|
||||
"area_v2_name": "男声电台",
|
||||
"area_v2_parent_name": "电台",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/b15e3a1045321a7ffa7da08a47a276ca37557ef1.jpg",
|
||||
"link": "/32190922?hotRank=0",
|
||||
"online": 45487,
|
||||
"pendant_Info": {
|
||||
"2": {
|
||||
"type": "mobile_index_badge",
|
||||
"name": "福佑嘉年",
|
||||
"position": 2,
|
||||
"text": "省级亚军",
|
||||
"bg_color": "#FB9E60",
|
||||
"bg_pic": "http://i0.hdslb.com/bfs/live/13819a59895263cb25cc2ead3fecfaa3e864aac8.png",
|
||||
"pendant_id": 1750,
|
||||
"priority": 200,
|
||||
"created_at": 1738512313
|
||||
}
|
||||
},
|
||||
"roomid": 32190922,
|
||||
"title": "我想我们会幸福美满",
|
||||
"uname": "黑羊Klein",
|
||||
"face": "https://i2.hdslb.com/bfs/face/307c62a8b30a6dcfc02e9670e5dc10d0ecec6921.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 1989648419,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071536000032190922ma6cnx.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 1,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_178A3B8F-86C1-4831-9DBB-9788C2445752",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_178A3B8F-86C1-4831-9DBB-9788C2445752&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=32190922&parent_id=5&area_id=817&page=0&position=2&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_178A3B8F-86C1-4831-9DBB-9788C2445752&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=32190922&parent_id=5&area_id=817&page=0&position=2&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 491,
|
||||
"text_small": "491",
|
||||
"text_large": "491人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 654,
|
||||
"area_v2_parent_id": 2,
|
||||
"area_v2_name": "诛仙世界",
|
||||
"area_v2_parent_name": "网游",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/fdad2cfb408510df56a01af66254f630ee4b86b8.jpg",
|
||||
"link": "/25959685?hotRank=0",
|
||||
"online": 2151,
|
||||
"pendant_Info": {},
|
||||
"roomid": 25959685,
|
||||
"title": "免费接所有职业,死灵渊!只要收益",
|
||||
"uname": "哦-是大一啊",
|
||||
"face": "https://i1.hdslb.com/bfs/face/f83290ab5667f9c1ed778fb9c7c9cf6bf7624d4e.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 361517464,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071535000025959685tx1grb.jpg",
|
||||
"is_auto_play": 1,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_FB0DABE2-6A09-4EB7-8D2B-A4F892243A96",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_FB0DABE2-6A09-4EB7-8D2B-A4F892243A96&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=25959685&parent_id=2&area_id=654&page=0&position=3&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_FB0DABE2-6A09-4EB7-8D2B-A4F892243A96&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=25959685&parent_id=2&area_id=654&page=0&position=3&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 269,
|
||||
"text_small": "269",
|
||||
"text_large": "269人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "钻石传说",
|
||||
"value": "https://i0.hdslb.com/bfs/live/2007dc239982e909a3c9971c27968e5c0a872917.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 192,
|
||||
"area_v2_parent_id": 5,
|
||||
"area_v2_name": "聊天电台",
|
||||
"area_v2_parent_name": "电台",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/22f1fcac8d9764901005ae5867a8c6b589b93ac5.jpg",
|
||||
"link": "/31169918?hotRank=0",
|
||||
"online": 27764,
|
||||
"pendant_Info": {},
|
||||
"roomid": 31169918,
|
||||
"title": "东北最后的温柔",
|
||||
"uname": "关关-苏苏冠",
|
||||
"face": "https://i2.hdslb.com/bfs/face/14f5102417107a6535c11ec9ad99050f7d712a17.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 3537120278874479,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071532000031169918qep44l.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 1,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_3E272538-AA76-4953-BF21-5BB19ECFEE28",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_3E272538-AA76-4953-BF21-5BB19ECFEE28&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=31169918&parent_id=5&area_id=192&page=0&position=4&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_3E272538-AA76-4953-BF21-5BB19ECFEE28&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=31169918&parent_id=5&area_id=192&page=0&position=4&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 297,
|
||||
"text_small": "297",
|
||||
"text_large": "297人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 82,
|
||||
"area_v2_parent_id": 2,
|
||||
"area_v2_name": "剑网3",
|
||||
"area_v2_parent_name": "网游",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/user_cover/9551fbb571b35bac3702c47e955177f17cab5cd2.jpg",
|
||||
"link": "/2849730?hotRank=0",
|
||||
"online": 4008,
|
||||
"pendant_Info": {},
|
||||
"roomid": 2849730,
|
||||
"title": "午间陪伴花间刷币",
|
||||
"uname": "o诡墨o",
|
||||
"face": "https://i1.hdslb.com/bfs/face/43ab308f836eb352aa4d541b55aafab2fa4435aa.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 71574442,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071535000002849730qo0792.jpg",
|
||||
"is_auto_play": 1,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_4BAFD91A-DDED-4655-BE47-064A6152BF9B",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_4BAFD91A-DDED-4655-BE47-064A6152BF9B&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=2849730&parent_id=2&area_id=82&page=0&position=5&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_4BAFD91A-DDED-4655-BE47-064A6152BF9B&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=2849730&parent_id=2&area_id=82&page=0&position=5&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 204,
|
||||
"text_small": "204",
|
||||
"text_large": "204人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "迷梦幻境头像框",
|
||||
"value": "https://i0.hdslb.com/bfs/garb/open/d272c8cdb2ab737f5aa3c1cf5a27db274e0ce034.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 744,
|
||||
"area_v2_parent_id": 9,
|
||||
"area_v2_name": "虚拟Singer",
|
||||
"area_v2_parent_name": "虚拟主播",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/6e68e5c4f3d720e6f14952174be848383b879dad.jpg",
|
||||
"link": "/21603945?hotRank=0",
|
||||
"online": 10606,
|
||||
"pendant_Info": {},
|
||||
"roomid": 21603945,
|
||||
"title": "听歌碎碎念!~",
|
||||
"uname": "Minicatty",
|
||||
"face": "https://i0.hdslb.com/bfs/face/812d9ea6f3420d5c58ff455408275563f03fb861.jpg",
|
||||
"verify": {
|
||||
"role": 7,
|
||||
"desc": "bilibili 直播高能主播",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 423902976,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe02071535000021603945pekr70.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 2,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_56778C3F-4B14-4C78-8DF8-53721196E8D8",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_56778C3F-4B14-4C78-8DF8-53721196E8D8&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=21603945&parent_id=9&area_id=744&page=0&position=6&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_56778C3F-4B14-4C78-8DF8-53721196E8D8&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=21603945&parent_id=9&area_id=744&page=0&position=6&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 235,
|
||||
"text_small": "235",
|
||||
"text_large": "235人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 80,
|
||||
"area_v2_parent_id": 2,
|
||||
"area_v2_name": "吃鸡行动",
|
||||
"area_v2_parent_name": "网游",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/fa7292a8741a40a612a1c466da58b7f9cc08f363.jpg",
|
||||
"link": "/22976905?hotRank=0",
|
||||
"online": 8536,
|
||||
"pendant_Info": {},
|
||||
"roomid": 22976905,
|
||||
"title": "全是细节!",
|
||||
"uname": "菠萝鸽",
|
||||
"face": "https://i1.hdslb.com/bfs/face/f073d24cbb992b4589825896de3fb9bc559ba180.jpg",
|
||||
"verify": {
|
||||
"role": 1,
|
||||
"desc": "bilibili 知名游戏UP主、直播高能主播",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 1849164526,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe020715350000229769056wy0mu.jpg",
|
||||
"is_auto_play": 1,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_CE3B32EC-E84D-4545-A693-97882454E0ED",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_CE3B32EC-E84D-4545-A693-97882454E0ED&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=22976905&parent_id=2&area_id=80&page=0&position=7&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_CE3B32EC-E84D-4545-A693-97882454E0ED&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=22976905&parent_id=2&area_id=80&page=0&position=7&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 919,
|
||||
"text_small": "919",
|
||||
"text_large": "919人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 646,
|
||||
"area_v2_parent_id": 10,
|
||||
"area_v2_name": "生活杂谈",
|
||||
"area_v2_parent_name": "生活",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/833e4d5449bcb4e425eb6399e0ef71f06903d083.jpg",
|
||||
"link": "/21291747?hotRank=0",
|
||||
"online": 38125,
|
||||
"pendant_Info": {},
|
||||
"roomid": 21291747,
|
||||
"title": "哪吒抢了封神票房?",
|
||||
"uname": "陈哥惜命天涯",
|
||||
"face": "https://i1.hdslb.com/bfs/face/d2c7e9c9b918ec969b2e15a5f2194bae3acd966e.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 286563388,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe0207153000002129174742tpke.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_63BEC7F6-172E-46FC-BBAD-8CD3547AE6C1",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_63BEC7F6-172E-46FC-BBAD-8CD3547AE6C1&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=21291747&parent_id=10&area_id=646&page=0&position=8&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_63BEC7F6-172E-46FC-BBAD-8CD3547AE6C1&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=21291747&parent_id=10&area_id=646&page=0&position=8&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 3107,
|
||||
"text_small": "3107",
|
||||
"text_large": "3107人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "Lirin兔耳娘 收藏集",
|
||||
"value": "https://i2.hdslb.com/bfs/garb/open/41e2a2e3693f49e0b721c443fd784aa533456c49.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 745,
|
||||
"area_v2_parent_id": 9,
|
||||
"area_v2_name": "虚拟Gamer",
|
||||
"area_v2_parent_name": "虚拟主播",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/b444bc87fbe1b346184f061efaffff21b24371f1.jpg",
|
||||
"link": "/23797026?hotRank=0",
|
||||
"online": 13294,
|
||||
"pendant_Info": {},
|
||||
"roomid": 23797026,
|
||||
"title": "日v 萌新玩玩三角洲♡",
|
||||
"uname": "樱咲奈央_Official",
|
||||
"face": "https://i2.hdslb.com/bfs/face/163330968a4a5fc8f31e9da9e919bbc258ecf40c.jpg",
|
||||
"verify": {
|
||||
"role": 7,
|
||||
"desc": "bilibili直播高能主播",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 1880188304,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe020715310000237970260gnmn1.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 2,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_691E1F11-4960-4707-92EF-0F0D996E434C",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_691E1F11-4960-4707-92EF-0F0D996E434C&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=23797026&parent_id=9&area_id=745&page=0&position=9&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_691E1F11-4960-4707-92EF-0F0D996E434C&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=23797026&parent_id=9&area_id=745&page=0&position=9&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 999,
|
||||
"text_small": "999",
|
||||
"text_large": "999人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": null,
|
||||
"area_v2_id": 624,
|
||||
"area_v2_parent_id": 10,
|
||||
"area_v2_name": "电子榨菜",
|
||||
"area_v2_parent_name": "生活",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/user_cover/a8a7681eaf20e43e16444e502106a436eb0e454c.jpg",
|
||||
"link": "/1831473323?hotRank=0",
|
||||
"online": 6510,
|
||||
"pendant_Info": {},
|
||||
"roomid": 1831473323,
|
||||
"title": "粤语片-法证1",
|
||||
"uname": "曦曦每天都开心呀",
|
||||
"face": "https://i1.hdslb.com/bfs/face/aa2112252080ec2298ea51b129c842fea7ed58f5.jpg",
|
||||
"verify": {
|
||||
"role": 0,
|
||||
"desc": "",
|
||||
"type": -1
|
||||
},
|
||||
"uid": 1434707683,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe020715350018314733230k1dhu.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 0,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_947BC1A4-E0F4-4ECE-AE40-9D9817848F9A",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_947BC1A4-E0F4-4ECE-AE40-9D9817848F9A&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=1831473323&parent_id=10&area_id=624&page=0&position=10&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_947BC1A4-E0F4-4ECE-AE40-9D9817848F9A&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=1831473323&parent_id=10&area_id=624&page=0&position=10&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 1446,
|
||||
"text_small": "1446",
|
||||
"text_large": "1446人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "帕里",
|
||||
"value": "https://i0.hdslb.com/bfs/garb/item/7c9cd30bfab66e9490d8a03fc48754cdb12b4901.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 745,
|
||||
"area_v2_parent_id": 9,
|
||||
"area_v2_name": "虚拟Gamer",
|
||||
"area_v2_parent_name": "虚拟主播",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/bd898138564a7e892e05dd1ff9cf9c34bdd9cb5b.jpg",
|
||||
"link": "/42512?hotRank=0",
|
||||
"online": 11612,
|
||||
"pendant_Info": {},
|
||||
"roomid": 42512,
|
||||
"title": "【文明7】使臣,你去死一下,然后我发兵",
|
||||
"uname": "优礼子Ghaast",
|
||||
"face": "https://i0.hdslb.com/bfs/face/e3f05d5b7bf56c57f55026676da71cc487d93988.jpg",
|
||||
"verify": {
|
||||
"role": 7,
|
||||
"desc": "bilibili直播高能主播",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 6141432,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe020715350000000425126wxphk.jpg",
|
||||
"is_auto_play": 0,
|
||||
"head_box_type": 2,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_0517EBF3-EE5C-4967-A77A-9DB3F89A58A8",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_0517EBF3-EE5C-4967-A77A-9DB3F89A58A8&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=42512&parent_id=9&area_id=745&page=0&position=11&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_0517EBF3-EE5C-4967-A77A-9DB3F89A58A8&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=42512&parent_id=9&area_id=745&page=0&position=11&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 1998,
|
||||
"text_small": "1998",
|
||||
"text_large": "1998人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
},
|
||||
{
|
||||
"head_box": {
|
||||
"name": "百人舰队主播头像",
|
||||
"value": "https://i0.hdslb.com/bfs/vc/071eb10548fe9bc482ff69331983d94192ce9507.png",
|
||||
"desc": ""
|
||||
},
|
||||
"area_v2_id": 102,
|
||||
"area_v2_parent_id": 2,
|
||||
"area_v2_name": "最终幻想14",
|
||||
"area_v2_parent_name": "网游",
|
||||
"broadcast_type": 0,
|
||||
"cover": "https://i0.hdslb.com/bfs/live/new_room_cover/9370e1bbda854c8ac3b9a2a9a6e960106f307580.jpg",
|
||||
"link": "/1897222?hotRank=0",
|
||||
"online": 80052,
|
||||
"pendant_Info": {
|
||||
"1": {
|
||||
"type": "mobile_index_badge",
|
||||
"name": "百人成就",
|
||||
"position": 1,
|
||||
"text": "",
|
||||
"bg_color": "#FB9E60",
|
||||
"bg_pic": "https://i0.hdslb.com/bfs/live/539ce26c45cd4019f55b64cfbcedc3c01820e539.png",
|
||||
"pendant_id": 426,
|
||||
"priority": 1,
|
||||
"created_at": 1738857680
|
||||
}
|
||||
},
|
||||
"roomid": 1897222,
|
||||
"title": "鸟区pvp",
|
||||
"uname": "猫姐姐nya",
|
||||
"face": "https://i1.hdslb.com/bfs/face/acc5559db9494af780b05fbf05c158995c48d023.jpg",
|
||||
"verify": {
|
||||
"role": 1,
|
||||
"desc": "bilibili 知名游戏UP主",
|
||||
"type": 0
|
||||
},
|
||||
"uid": 41377819,
|
||||
"keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe020715360000018972225sqtbh.jpg",
|
||||
"is_auto_play": 1,
|
||||
"head_box_type": 1,
|
||||
"flag": 0,
|
||||
"session_id": "4b58e9bf85ef0539525f1c7b1467a5b8_93F5FBE6-4F84-40C9-AEA1-149E9D5D366E",
|
||||
"group_id": 1000217,
|
||||
"show_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_93F5FBE6-4F84-40C9-AEA1-149E9D5D366E&group_id=1000217&biz=live&event_id=live_card_show&rule_key=&special_id=0&roomid=1897222&parent_id=2&area_id=102&page=0&position=12&platform=web",
|
||||
"click_callback": "https://live-trace.bilibili.com/xlive/data-interface/v1/index/log?sessionID=4b58e9bf85ef0539525f1c7b1467a5b8_93F5FBE6-4F84-40C9-AEA1-149E9D5D366E&group_id=1000217&biz=live&event_id=live_card_click&rule_key=&special_id=0&roomid=1897222&parent_id=2&area_id=102&page=0&position=12&platform=web",
|
||||
"special_id": 0,
|
||||
"watched_show": {
|
||||
"switch": true,
|
||||
"num": 2930,
|
||||
"text_small": "2930",
|
||||
"text_large": "2930人看过",
|
||||
"icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png",
|
||||
"icon_location": 0,
|
||||
"icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png"
|
||||
},
|
||||
"is_nft": 0,
|
||||
"nft_dmark": "",
|
||||
"is_ad": false,
|
||||
"ad_transparent_content": null,
|
||||
"show_ad_icon": false,
|
||||
"status": false,
|
||||
"followers": 0
|
||||
}
|
||||
],
|
||||
"top_room_id": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
@ -18,6 +18,7 @@
|
||||
| tuid | str | 要禁言的uid | 必要 | |
|
||||
| msg | str | 要禁言的弹幕内容 | 非必要 | |
|
||||
| mobile_app | str | web | 必要 | 定值"web"即可 |
|
||||
| hour | num | 禁言时长 | 必要 | -1为永久,0为本场直播 |
|
||||
| csrf_token | str | CSRF Token | 必要 | cookie中的bili_jct字段 |
|
||||
| csrf | str | CSRF Token | 必要 | cookie中的bili_jct字段 |
|
||||
| visit_id | str | 不明 | 非必要 | |
|
||||
@ -72,7 +73,7 @@ curl -X POST 'https://api.live.bilibili.com/xlive/web-ucenter/v1/banned/AddSilen
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ---------- | --- | ---------- | --- | ------------------ |
|
||||
| room_id | str | 直播间Id | 必要 | |
|
||||
| ps1 | str | 列表页码 | 必要 | |
|
||||
| ps | str | 列表页码 | 必要 | |
|
||||
| csrf_token | str | CSRF Token | 必要 | cookie中的bili_jct字段 |
|
||||
| csrf | str | CSRF Token | 必要 | cookie中的bili_jct字段 |
|
||||
| visit_id | str | 不明 | 非必要 | |
|
||||
|
||||
@ -181,7 +181,7 @@ $.ajax({
|
||||
|
||||
</details>
|
||||
|
||||
## 直播签到
|
||||
## ~~直播签到(已下线)~~
|
||||
|
||||
> https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign
|
||||
|
||||
@ -200,6 +200,23 @@ _请求方式:GET_
|
||||
| message | str | 错误信息 | 默认为当日签到奖励内容 |
|
||||
| data | obj | 信息本体 | 默认为空 |
|
||||
|
||||
(目前已下线)
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例(下线后):</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 1,
|
||||
"message": "签到活动已下线,无法使用。",
|
||||
"ttl": 1,
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
## 本月直播签到信息
|
||||
|
||||
> https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/WebGetSignInfo
|
||||
|
||||
@ -138,14 +138,14 @@ curl 'https://api.bilibili.com/x/member/web/exp/reward' \
|
||||
|
||||
## 查询每日投币获得经验数
|
||||
|
||||
>https://www.bilibili.com/plus/account/exp.php
|
||||
> ~~https://www.bilibili.com/plus/account/exp.php~~ (已失效)
|
||||
>
|
||||
> https://api.bilibili.com/x/web-interface/coin/today/exp
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:仅可Cookie(SESSDATA)
|
||||
|
||||
鉴权方式:Cookie中`DedeUserID`存在且不为0
|
||||
|
||||
该接口实时更新,未发现延迟
|
||||
|
||||
**json回复:**
|
||||
@ -156,13 +156,13 @@ curl 'https://api.bilibili.com/x/member/web/exp/reward' \
|
||||
| ------- | ---- | -------------------- | ----------- |
|
||||
| code | num | 返回值 | 0:成功 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| number | num | 每日投币所奖励的经验 | 上限为50 |
|
||||
| data | num | 每日投币所奖励的经验 | 上限为50 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl 'https://www.bilibili.com/plus/account/exp.php' \
|
||||
-b 'SESSDATA=xxx;DedeUserID=1'
|
||||
curl 'https://api.bilibili.com/x/web-interface/coin/today/exp' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
@ -172,7 +172,8 @@ curl 'https://www.bilibili.com/plus/account/exp.php' \
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"number": 20
|
||||
"ttl": 1,
|
||||
"data": 20
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@ -30,6 +30,8 @@
|
||||
|
||||
*请求方式: POST*
|
||||
|
||||
鉴权方式: 请求头 `Referer` 为空或 `.bilibili.com` 子域下任意页
|
||||
|
||||
**URL参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
@ -279,21 +281,16 @@ async function getBiliTicket(csrf) {
|
||||
'context[ts]': ts,
|
||||
csrf: csrf || ''
|
||||
});
|
||||
try {
|
||||
const response = await fetch(`${url}?${params.toString()}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'
|
||||
}
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
const response = await fetch(`${url}?${params.toString()}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'
|
||||
}
|
||||
const data = await response.json();
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw error;
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
|
||||
(async () => {
|
||||
@ -301,7 +298,7 @@ async function getBiliTicket(csrf) {
|
||||
const ticketResponse = await getBiliTicket(''); // use empty CSRF here
|
||||
console.log(ticketResponse);
|
||||
} catch (e) {
|
||||
console.error('Failed to get BiliTicket:', error);
|
||||
console.error('Failed to get BiliTicket:', e);
|
||||
}
|
||||
})();
|
||||
```
|
||||
|
||||
@ -380,178 +380,185 @@ bar=514&baz=1919810&foo=114&wts=1684805578&w_rid=bb97e15f28edf445a0e4420d36f0157
|
||||
|
||||
### Golang
|
||||
|
||||
需要 `github.com/tidwall/gjson` 作为依赖
|
||||
无第三方库
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
var (
|
||||
mixinKeyEncTab = []int{
|
||||
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
|
||||
33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
|
||||
61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
|
||||
36, 20, 34, 44, 52,
|
||||
}
|
||||
cache sync.Map
|
||||
lastUpdateTime time.Time
|
||||
"bytes"
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
urlStr := "https://api.bilibili.com/x/space/wbi/acc/info?mid=1850091"
|
||||
newUrlStr, err := signAndGenerateURL(urlStr)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s", err)
|
||||
return
|
||||
}
|
||||
req, err := http.NewRequest("GET", newUrlStr, nil)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s", err)
|
||||
return
|
||||
}
|
||||
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
|
||||
req.Header.Set("Referer", "https://www.bilibili.com/")
|
||||
response, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
fmt.Printf("Request failed: %s", err)
|
||||
return
|
||||
}
|
||||
defer response.Body.Close()
|
||||
body, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to read response: %s", err)
|
||||
return
|
||||
}
|
||||
fmt.Println(string(body))
|
||||
u, err := url.Parse("https://api.bilibili.com/x/space/wbi/acc/info?mid=1850091")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("orig: %s\n", u.String())
|
||||
err = Sign(u)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("signed: %s\n", u.String())
|
||||
|
||||
// 获取 wbi 时未修改 header
|
||||
// 但实际使用签名后的 url 时发现风控较为严重
|
||||
}
|
||||
|
||||
func signAndGenerateURL(urlStr string) (string, error) {
|
||||
urlObj, err := url.Parse(urlStr)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgKey, subKey := getWbiKeysCached()
|
||||
query := urlObj.Query()
|
||||
params := map[string]string{}
|
||||
for k, v := range query {
|
||||
params[k] = v[0]
|
||||
}
|
||||
newParams := encWbi(params, imgKey, subKey)
|
||||
for k, v := range newParams {
|
||||
query.Set(k, v)
|
||||
}
|
||||
urlObj.RawQuery = query.Encode()
|
||||
newUrlStr := urlObj.String()
|
||||
return newUrlStr, nil
|
||||
// Sign 为链接签名
|
||||
func Sign(u *url.URL) error {
|
||||
return wbiKeys.Sign(u)
|
||||
}
|
||||
|
||||
func encWbi(params map[string]string, imgKey, subKey string) map[string]string {
|
||||
mixinKey := getMixinKey(imgKey + subKey)
|
||||
currTime := strconv.FormatInt(time.Now().Unix(), 10)
|
||||
params["wts"] = currTime
|
||||
|
||||
// Sort keys
|
||||
keys := make([]string, 0, len(params))
|
||||
for k := range params {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
// Remove unwanted characters
|
||||
for k, v := range params {
|
||||
v = sanitizeString(v)
|
||||
params[k] = v
|
||||
}
|
||||
|
||||
// Build URL parameters
|
||||
query := url.Values{}
|
||||
for _, k := range keys {
|
||||
query.Set(k, params[k])
|
||||
}
|
||||
queryStr := query.Encode()
|
||||
|
||||
// Calculate w_rid
|
||||
hash := md5.Sum([]byte(queryStr + mixinKey))
|
||||
params["w_rid"] = hex.EncodeToString(hash[:])
|
||||
return params
|
||||
// Update 无视过期时间更新
|
||||
func Update() error {
|
||||
return wbiKeys.Update()
|
||||
}
|
||||
|
||||
func getMixinKey(orig string) string {
|
||||
var str strings.Builder
|
||||
for _, v := range mixinKeyEncTab {
|
||||
if v < len(orig) {
|
||||
str.WriteByte(orig[v])
|
||||
}
|
||||
}
|
||||
return str.String()[:32]
|
||||
func Get() (wk WbiKeys, err error) {
|
||||
if err = wk.update(false); err != nil {
|
||||
return WbiKeys{}, err
|
||||
}
|
||||
return wbiKeys, nil
|
||||
}
|
||||
|
||||
func sanitizeString(s string) string {
|
||||
unwantedChars := []string{"!", "'", "(", ")", "*"}
|
||||
for _, char := range unwantedChars {
|
||||
s = strings.ReplaceAll(s, char, "")
|
||||
}
|
||||
return s
|
||||
var wbiKeys WbiKeys
|
||||
|
||||
type WbiKeys struct {
|
||||
Img string
|
||||
Sub string
|
||||
Mixin string
|
||||
lastUpdateTime time.Time
|
||||
}
|
||||
|
||||
func updateCache() {
|
||||
if time.Since(lastUpdateTime).Minutes() < 10 {
|
||||
return
|
||||
}
|
||||
imgKey, subKey := getWbiKeys()
|
||||
cache.Store("imgKey", imgKey)
|
||||
cache.Store("subKey", subKey)
|
||||
lastUpdateTime = time.Now()
|
||||
// Sign 为链接签名
|
||||
func (wk *WbiKeys) Sign(u *url.URL) (err error) {
|
||||
if err = wk.update(false); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
values := u.Query()
|
||||
|
||||
values = removeUnwantedChars(values, '!', '\'', '(', ')', '*') // 必要性存疑?
|
||||
|
||||
values.Set("wts", strconv.FormatInt(time.Now().Unix(), 10))
|
||||
|
||||
// [url.Values.Encode] 内会对参数排序,
|
||||
// 且遍历 map 时本身就是无序的
|
||||
hash := md5.Sum([]byte(values.Encode() + wk.Mixin)) // Calculate w_rid
|
||||
values.Set("w_rid", hex.EncodeToString(hash[:]))
|
||||
u.RawQuery = values.Encode()
|
||||
return nil
|
||||
}
|
||||
|
||||
func getWbiKeysCached() (string, string) {
|
||||
updateCache()
|
||||
imgKeyI, _ := cache.Load("imgKey")
|
||||
subKeyI, _ := cache.Load("subKey")
|
||||
return imgKeyI.(string), subKeyI.(string)
|
||||
// Update 无视过期时间更新
|
||||
func (wk *WbiKeys) Update() (err error) {
|
||||
return wk.update(true)
|
||||
}
|
||||
|
||||
func getWbiKeys() (string, string) {
|
||||
client := &http.Client{}
|
||||
req, err := http.NewRequest("GET", "https://api.bilibili.com/x/web-interface/nav", nil)
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating request: %s", err)
|
||||
return "", ""
|
||||
}
|
||||
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
|
||||
req.Header.Set("Referer", "https://www.bilibili.com/")
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
fmt.Printf("Error sending request: %s", err)
|
||||
return "", ""
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Printf("Error reading response: %s", err)
|
||||
return "", ""
|
||||
}
|
||||
json := string(body)
|
||||
imgURL := gjson.Get(json, "data.wbi_img.img_url").String()
|
||||
subURL := gjson.Get(json, "data.wbi_img.sub_url").String()
|
||||
imgKey := strings.Split(strings.Split(imgURL, "/")[len(strings.Split(imgURL, "/"))-1], ".")[0]
|
||||
subKey := strings.Split(strings.Split(subURL, "/")[len(strings.Split(subURL, "/"))-1], ".")[0]
|
||||
return imgKey, subKey
|
||||
// update 按需更新
|
||||
func (wk *WbiKeys) update(purge bool) error {
|
||||
if !purge && time.Since(wk.lastUpdateTime) < time.Hour {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 测试下来不用修改 header 也能过
|
||||
resp, err := http.Get("https://api.bilibili.com/x/web-interface/nav")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
nav := Nav{}
|
||||
err = json.Unmarshal(body, &nav)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nav.Code != 0 && nav.Code != -101 { // -101 未登录时也会返回两个 key
|
||||
return fmt.Errorf("unexpected code: %d, message: %s", nav.Code, nav.Message)
|
||||
}
|
||||
img := nav.Data.WbiImg.ImgUrl
|
||||
sub := nav.Data.WbiImg.SubUrl
|
||||
if img == "" || sub == "" {
|
||||
return fmt.Errorf("empty image or sub url: %s", body)
|
||||
}
|
||||
|
||||
// https://i0.hdslb.com/bfs/wbi/7cd084941338484aae1ad9425b84077c.png
|
||||
imgParts := strings.Split(img, "/")
|
||||
subParts := strings.Split(sub, "/")
|
||||
|
||||
// 7cd084941338484aae1ad9425b84077c.png
|
||||
imgPng := imgParts[len(imgParts)-1]
|
||||
subPng := subParts[len(subParts)-1]
|
||||
|
||||
// 7cd084941338484aae1ad9425b84077c
|
||||
wbiKeys.Img = strings.TrimSuffix(imgPng, ".png")
|
||||
wbiKeys.Sub = strings.TrimSuffix(subPng, ".png")
|
||||
|
||||
wbiKeys.mixin()
|
||||
wbiKeys.lastUpdateTime = time.Now()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (wk *WbiKeys) mixin() {
|
||||
var mixin [32]byte
|
||||
wbi := wk.Img + wk.Sub
|
||||
for i := range mixin { // for i := 0; i < len(mixin); i++ {
|
||||
mixin[i] = wbi[mixinKeyEncTab[i]]
|
||||
}
|
||||
wk.Mixin = string(mixin[:])
|
||||
}
|
||||
|
||||
var mixinKeyEncTab = [...]int{
|
||||
46, 47, 18, 2, 53, 8, 23, 32,
|
||||
15, 50, 10, 31, 58, 3, 45, 35,
|
||||
27, 43, 5, 49, 33, 9, 42, 19,
|
||||
29, 28, 14, 39, 12, 38, 41, 13,
|
||||
37, 48, 7, 16, 24, 55, 40, 61,
|
||||
26, 17, 0, 1, 60, 51, 30, 4,
|
||||
22, 25, 54, 21, 56, 59, 6, 63,
|
||||
57, 62, 11, 36, 20, 34, 44, 52,
|
||||
}
|
||||
|
||||
func removeUnwantedChars(v url.Values, chars ...byte) url.Values {
|
||||
b := []byte(v.Encode())
|
||||
for _, c := range chars {
|
||||
b = bytes.ReplaceAll(b, []byte{c}, nil)
|
||||
}
|
||||
s, err := url.ParseQuery(string(b))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
type Nav struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Ttl int `json:"ttl"`
|
||||
Data struct {
|
||||
WbiImg struct {
|
||||
ImgUrl string `json:"img_url"`
|
||||
SubUrl string `json:"sub_url"`
|
||||
} `json:"wbi_img"`
|
||||
|
||||
// ......
|
||||
} `json:"data"`
|
||||
}
|
||||
```
|
||||
|
||||
@ -1108,9 +1115,9 @@ mod tests {
|
||||
需要 [Alamofire](https://github.com/Alamofire/Alamofire) 和 [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) 库
|
||||
|
||||
```swift
|
||||
import Foundation
|
||||
import CommonCrypto
|
||||
import Alamofire
|
||||
import CommonCrypto
|
||||
import Foundation
|
||||
import SwiftyJSON
|
||||
|
||||
func biliWbiSign(param: String, completion: @escaping (String?) -> Void) {
|
||||
@ -1124,35 +1131,39 @@ func biliWbiSign(param: String, completion: @escaping (String?) -> Void) {
|
||||
let currTime = round(Date().timeIntervalSince1970)
|
||||
params["wts"] = currTime
|
||||
params = params.sorted { $0.key < $1.key }.reduce(into: [:]) { $0[$1.key] = $1.value }
|
||||
params = params.mapValues { String(describing: $0).filter { !"!'()*".contains($0) } }
|
||||
params = params.mapValues { value in
|
||||
if let doubleValue = value as? Double, doubleValue.truncatingRemainder(dividingBy: 1) == 0 {
|
||||
return String(Int(doubleValue)).filter { !"!'()*".contains($0) }
|
||||
}
|
||||
return String(describing: value).filter { !"!'()*".contains($0) }
|
||||
}
|
||||
let query = params.map { "\($0.key)=\($0.value)" }.joined(separator: "&")
|
||||
let wbiSign = calculateMD5(string: query + mixinKey)
|
||||
params["w_rid"] = wbiSign
|
||||
return params
|
||||
}
|
||||
|
||||
func getWbiKeys(completion: @escaping (Result<(imgKey: String, subKey: String), Error>) -> Void) {
|
||||
let headers: HTTPHeaders = [
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
||||
"Referer": "https://www.bilibili.com/"
|
||||
]
|
||||
func getWbiKeys(completion: @escaping (Result<(imgKey: String, subKey: String), Error>) -> Void) {
|
||||
let headers: HTTPHeaders = [
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
|
||||
"Referer": "https://www.bilibili.com/"
|
||||
]
|
||||
|
||||
AF.request("https://api.bilibili.com/x/web-interface/nav", headers: headers).responseJSON { response in
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
let json = JSON(value)
|
||||
let imgURL = json["data"]["wbi_img"]["img_url"].string ?? ""
|
||||
let subURL = json["data"]["wbi_img"]["sub_url"].string ?? ""
|
||||
let imgKey = imgURL.components(separatedBy: "/").last?.components(separatedBy: ".").first ?? ""
|
||||
let subKey = subURL.components(separatedBy: "/").last?.components(separatedBy: ".").first ?? ""
|
||||
completion(.success((imgKey, subKey)))
|
||||
case .failure(let error):
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
AF.request("https://api.bilibili.com/x/web-interface/nav", headers: headers).responseJSON { response in
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
let json = JSON(value)
|
||||
let imgURL = json["data"]["wbi_img"]["img_url"].string ?? ""
|
||||
let subURL = json["data"]["wbi_img"]["sub_url"].string ?? ""
|
||||
let imgKey = imgURL.components(separatedBy: "/").last?.components(separatedBy: ".").first ?? ""
|
||||
let subKey = subURL.components(separatedBy: "/").last?.components(separatedBy: ".").first ?? ""
|
||||
completion(.success((imgKey, subKey)))
|
||||
case .failure(let error):
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func calculateMD5(string: String) -> String {
|
||||
let data = Data(string.utf8)
|
||||
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
|
||||
@ -1174,7 +1185,7 @@ func biliWbiSign(param: String, completion: @escaping (String?) -> Void) {
|
||||
case .success(let keys):
|
||||
let spdParam = param.components(separatedBy: "&")
|
||||
var spdDicParam = [String: String]()
|
||||
spdParam.forEach { pair in
|
||||
for pair in spdParam {
|
||||
let components = pair.components(separatedBy: "=")
|
||||
if components.count == 2 {
|
||||
spdDicParam[components[0]] = components[1]
|
||||
@ -1191,6 +1202,22 @@ func biliWbiSign(param: String, completion: @escaping (String?) -> Void) {
|
||||
}
|
||||
}
|
||||
|
||||
// 使用示例
|
||||
biliWbiSign(param: "bar=514&foo=114&zab=1919810") {
|
||||
signedQuery in
|
||||
if let signedQuery = signedQuery {
|
||||
print("签名后的参数: \(signedQuery)")
|
||||
} else {
|
||||
print("签名失败")
|
||||
}
|
||||
}
|
||||
|
||||
RunLoop.main.run()//程序类型为命令行程序时需要添加这行代码
|
||||
|
||||
```
|
||||
|
||||
```text
|
||||
签名后的参数: bar=514&wts=1741082093&foo=114&zab=1919810&w_rid=04775bb3debbb45bab86a93a1c08d12a
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -67,7 +67,8 @@ curl 'https://api.bilibili.com/x/web-interface/search/default'
|
||||
|
||||
## 获取热搜列表
|
||||
|
||||
> https://api.bilibili.com/x/web-interface/search/square
|
||||
> https://api.bilibili.com/x/web-interface/wbi/search/square
|
||||
> ~~https://api.bilibili.com/x/web-interface/search/square~~
|
||||
|
||||
*请求方式: GET*
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
# 检查昵称是否可注册
|
||||
|
||||
## 检查昵称
|
||||
## ~~检查昵称(已失效)~~
|
||||
|
||||
<details>
|
||||
<summary>查看折叠内容</summary>
|
||||
|
||||
> https://passport.bilibili.com/web/generic/check/nickname
|
||||
|
||||
@ -131,3 +134,12 @@ curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
</details>
|
||||
|
||||
目前该接口无论参数,稳定返回:
|
||||
```json
|
||||
{
|
||||
"code": 0
|
||||
}
|
||||
```
|
||||
|
||||
@ -476,8 +476,8 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/coins' \
|
||||
| access_key | str | APP 登录 Token | APP 方式必要 | |
|
||||
| rid | num | 稿件 avid | 必要 | |
|
||||
| type | num | 必须为2 | 必要 | |
|
||||
| add_media_ids | nums | 需要加入的收藏夹 mlid | 非必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
|
||||
| del_media_ids | nums | 需要取消的收藏夹 mlid | 非必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
|
||||
| add_media_ids | nums | 需要加入的收藏夹 mlid | 必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
|
||||
| del_media_ids | nums | 需要取消的收藏夹 mlid | 必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
|
||||
| csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
@ -553,8 +553,8 @@ curl 'https://api.bilibili.com/medialist/gateway/coll/resource/deal' \
|
||||
| ------------- | ---- | ---------------------------------- | ------------ | ------------------------------ |
|
||||
| rid | num | 稿件 avid | 必要 | |
|
||||
| type | num | 必须为2 | 必要 | |
|
||||
| add_media_ids | nums | 需要加入的收藏夹 mlid | 非必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
|
||||
| del_media_ids | nums | 需要取消的收藏夹 mlid | 非必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
|
||||
| add_media_ids | nums | 需要加入的收藏夹 mlid | 必要(可选) | 同时添加多个,用`,`(%2C)分隔 |
|
||||
| del_media_ids | nums | 需要取消的收藏夹 mlid | 必要(可选) | 同时取消多个,用`,`(%2C)分隔 |
|
||||
| csrf | str | CSRF Token (即 Cookie 中 bili_jct) | 必要 | |
|
||||
| platform | str | 平台标识? | 非必要 | web端: web |
|
||||
| eab_x | num | 1 | 非必要 | 作用尚不明确 |
|
||||
@ -584,15 +584,15 @@ curl 'https://api.bilibili.com/medialist/gateway/coll/resource/deal' \
|
||||
|
||||
**示例:**
|
||||
|
||||
将视频 `av1906473802` 添加到收藏夹 `1164192068` 中
|
||||
将视频 `av2` 添加到收藏夹 `645769214` 中
|
||||
|
||||
```shell
|
||||
curl -sX POST "https://api.bilibili.com/x/v3/fav/resource/deal" \
|
||||
--data-urlencode "rid=1906473802" \
|
||||
--data-urlencode "type=2" \
|
||||
curl -X POST "https://api.bilibili.com/x/v3/fav/resource/deal" \
|
||||
--data-urlencode "rid=2" \
|
||||
--data-urlencode "type=2" \
|
||||
--data-urlencode "csrf=xxx" \
|
||||
--data-urlencode "add_media_ids=1164192068" \
|
||||
-b "SESSDATA=xxx; bili_jct=xxx"
|
||||
--data-urlencode "add_media_ids=1428261914" \
|
||||
-b "SESSDATA=xxx"
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
@ -351,7 +351,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/archive/related' \
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
|--------------------------|------|--------------------|-------------------------------------------|
|
||||
| av_feature | null | | |
|
||||
| business_info | obj | 商业推广信息 | 无为null, 此处无参考意义 |
|
||||
| business_info | obj | 商业推广信息 | 无为null<br />对于推广内容,视频信息会在这个dict的"archive"属性下 |
|
||||
| bvid | str | 视频bvid | |
|
||||
| cid | num | 稿件cid | |
|
||||
| dislike_switch | num | 1 | 显示不感兴趣开关? |
|
||||
|
||||
@ -179,7 +179,8 @@ curl 'https://api.bilibili.com/x/click-interface/web/heartbeat' \
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
该接口亦被用于计算播放量, 播放量更新不是实时的
|
||||
该接口亦被用于计算播放量, 播放量更新不是实时的<br />
|
||||
该接口使用似乎存在 200 播放限制, **请勿滥用!**
|
||||
|
||||
**URL参数:**
|
||||
|
||||
|
||||
@ -8,6 +8,8 @@
|
||||
|
||||
*请求方式: GET*
|
||||
|
||||
认证方式:Cookie(SESSDATA)
|
||||
|
||||
鉴权方式:[Wbi 签名](../misc/sign/wbi.md)
|
||||
|
||||
**url参数:**
|
||||
@ -27,7 +29,7 @@
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
|---------|-----|------|--------------------------|
|
||||
| code | num | 返回值 | 0: 成功<br />-400:请求错误<br /> -403: 访问权限不足 |
|
||||
| code | num | 返回值 | 0: 成功<br />-101: 账号未登录<br />-400:请求错误<br /> -403: 访问权限不足 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 数据本体 | |
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
| 6 | 240P 极速 | 仅 MP4 格式支持<br />仅`platform=html5`时有效 |
|
||||
| 16 | 360P 流畅 | |
|
||||
| 32 | 480P 清晰 | |
|
||||
| 64 | 720P 高清 | WEB 端默认值<br />B站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址<br />**无 720P 时则为 720P60** |
|
||||
| 64 | 720P 高清 | WEB 端默认值<br />~~B站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址~~<br />**无 720P 时则为 720P60** |
|
||||
| 74 | 720P60 高帧率 | 登录认证 |
|
||||
| 80 | 1080P 高清 | TV 端与 APP 端默认值<br />登录认证 |
|
||||
| 112 | 1080P+ 高码率 | 大会员认证 |
|
||||
@ -117,6 +117,7 @@
|
||||
| type | str | | 非必要 | 目前为空 |
|
||||
| platform | str | | 非必要 | pc:web播放(默认值,视频流存在 referer鉴权)<br />html5:移动端 HTML5 播放(仅支持 MP4 格式,无 referer 鉴权可以直接使用`video`标签播放) |
|
||||
| high_quality | num | 是否高画质 | 非必要 | platform=html5时,此值为1可使画质为1080p |
|
||||
| try_look | num | 未登录高画质 | 非必要 | 为 `1` 时可以不登录拉到 `64` 和 `80` 清晰度 |
|
||||
|
||||
**json回复:**
|
||||
|
||||
|
||||
@ -12,14 +12,19 @@
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
鉴权方式: 请求头 `User-Agent` 非敏感字符串
|
||||
|
||||
获取稿件内容质量,近期的数据前100个稿件,动态更新。
|
||||
|
||||
**url参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | ----------- | ------ | ------------------------------------- |
|
||||
| tid | num | 目标分区tid | 非必要 | 可参考[视频分区一览](../video/video_zone.md#视频分区一览),只支持主分区 |
|
||||
| type | str | 未知 | 非必要 | 默认为:all,且为目前唯一已知值。怀疑为稿件类型,但没有找到其他值佐证。 |
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------------ | ------ | ------------ | ------ | ------------------------------------- |
|
||||
| rid | number | 目标分区 tid | 非必要 | 默认为 0 (全站), 详细参见 [视频分区一览](../video/video_zone.md#视频分区一览), 仅支持主分区 |
|
||||
| type | string | 排行榜类型 | 非必要 | 全部: all<br />新人: rokkie<br />原创: origin |
|
||||
| web_location | string | 333.934 | 非必要 | |
|
||||
| w_rid | string | WBI 签名 | 非必要 | 参见 [WBI 签名](../misc/sign/wbi.md) |
|
||||
| wts | number | Unix 时间戳 | 非必要 | 参见 [WBI 签名](../misc/sign/wbi.md) |
|
||||
|
||||
**json回复:**
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user