添加获取直播间信息 (#593)

* 添加字段&优化格式

* 添加获取直播间信息
This commit is contained in:
7rikka
2023-01-19 17:14:08 +08:00
committed by GitHub
parent 2975adc5f3
commit 7ff8325be6

View File

@@ -6,6 +6,7 @@
- [获取房间页初始化信息](#获取房间页初始化信息)
- [获取主播信息](#获取主播信息)
- [批量查询直播间状态](#批量查询直播间状态)
- [获取直播间信息](#获取直播间信息)
---
@@ -16,23 +17,26 @@
*请求方式: GET*
**URL参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ----- | --------- |
|---------|-----|------|-----|-------|
| room_id | num | 直播间号 | 必要 | 可以为短号 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
|---------|-----|------|-----------------|
| code | num | 返回值 | 0成功<br />1不存在 |
| message | str | 错误信息 | |
| msg | str | 错误信息 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------ | ---- | -------- | --------------------------- |
|-------------------------|-----------|--------|-----------------------------|
| uid | num | 主播mid | |
| room_id | num | 直播间长号 | |
| short_id | num | 直播间短号 | 为0是无短号 |
@@ -42,7 +46,6 @@
| description | str | 描述 | |
| live_status | num | 直播状态 | 0未开播<br />1直播中<br />2轮播中 |
| area_id | num | 分区id | |
| area_name | str | 分区名称 | |
| parent_area_id | num | 父分区id | |
| parent_area_name | str | 父分区名称 | |
| old_area_id | num | 旧版分区id | |
@@ -57,6 +60,7 @@
| room_silent_type | str | 禁言状态 | |
| room_silent_level | num | 禁言等级 | |
| room_silent_second | num | 禁言时间 | 单位是秒 |
| area_name | str | 分区名称 | |
| pardants | str | 未知 | 未知 |
| area_pardants | str | 未知 | 未知 |
| hot_words | list(str) | 热词 | |
@@ -67,18 +71,23 @@
| pk_status | num | pk状态 | |
| pk_id | num | pk id | |
| battle_id | num | 未知 | |
| allow_change_area_time | num | | |
| allow_upload_cover_time | num | | |
| studio_info | obj | | |
`new_pendants`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------- | --------------------------- |
|--------------|-----|-----|-------------------|
| frame | obj | 头像框 | |
| mobile_frame | obj | 同上 | 手机版, 结构一致, 可能null |
| badge | obj | 大v | |
| mobile_badge | obj | 同上 | 手机版, 结构一致, 可能null |
`frame`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------- | --------------------------- |
|--------------|------|--------|-----|
| name | str | 名称 | |
| value | str | 值 | |
| position | num | 位置 | |
@@ -90,13 +99,21 @@
| use_old_area | bool | 是否旧分区号 | |
`badge`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------- | --------------------------- |
|----------|-----|-----|-------------------------------------------|
| name | str | 类型 | v_person: 个人认证(黄) <br> v_company: 企业认证(蓝) |
| position | num | 位置 | |
| value | str | 值 | |
| desc | str | 描述 | |
`studio_info`对象:
| 字段 | 类型 | 内容 | 备注 |
|-------------|-------|-----|-----|
| status | num | | |
| master_list | array | | |
**示例:**
查询直播间`room_id=1`信息
@@ -219,7 +236,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | ---- |
|-----|-----|---------|-----|-----|
| mid | num | 目标用户mid | 必要 | |
**json回复**
@@ -227,7 +244,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
|---------|-----|------|---------------------|
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
@@ -236,7 +253,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ---------------- | ------------------------ |
|----------------|-----|-----------|------------------|
| roomStatus | num | 直播间状态 | 0无房间<br />1有房间 |
| roundStatus | num | 轮播状态 | 0未轮播<br />1轮播 |
| live_status | num | 直播状态 | 0未开播<br />1直播中 |
@@ -291,7 +308,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld' \
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | ---- |
|-----|-----|------------|-----|-----|
| id | num | 目标直播间号(短号) | 必要 | |
**json回复**
@@ -299,7 +316,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld' \
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
|---------|-----|------|------------------------|
| code | num | 返回值 | 0成功<br />60004直播间不存在 |
| msg | str | 错误信息 | 默认为ok |
| message | str | 错误信息 | 默认为ok |
@@ -308,7 +325,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld' \
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------- | ------------------------ |
|--------------|------|--------------|------------------------------------|
| room_id | num | 直播间真实id | |
| short_id | num | 直播间id短号 | |
| uid | num | 主播用户mid | |
@@ -375,7 +392,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | ---- |
|-----|-----|---------|-----|-----|
| uid | num | 目标用户mid | 必要 | |
**json回复**
@@ -383,7 +400,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------ |
|---------|-----|------|------------------|
| code | num | 返回值 | 0成功<br />1参数错误 |
| msg | str | 错误信息 | 默认为空 |
| message | str | 错误信息 | 默认为空 |
@@ -392,7 +409,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ---------------- | ---------------- |
|----------------|-----|-----------|------------|
| info | obj | 主播信息 | |
| exp | obj | 经验等级 | |
| follower_num | num | 主播粉丝数 | |
@@ -406,7 +423,7 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
`info`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | ----------- | ------------------------------ |
|-----------------|-----|---------|-------------------------|
| uid | num | 主播mid | |
| uname | str | 主播用户名 | |
| face | str | 主播头像url | |
@@ -414,21 +431,22 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
| gender | num | 主播性别 | -1保密<br />0<br />1男 |
`info`中的`official_verify`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------ | ---------------------------------------- |
|------|-----|--------|------------------------------|
| type | num | 主播认证类型 | -1<br />0个人认证<br />1机构认证 |
| desc | str | 主播认证信息 | |
`exp`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------- | ---- |
|--------------|-----|------|-----|
| master_level | obj | 主播等级 | |
`exp`中的`master_level`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | ------------ | ---- |
|---------|-------|--------|-----|
| level | num | 当前等级 | |
| color | num | 等级框颜色 | |
| current | array | 当前等级信息 | |
@@ -437,21 +455,21 @@ curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \
`master_level`中的`current`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
|-----|-----|------|-----|
| 0 | num | 升级积分 | |
| 1 | num | 总积分 | |
`master_level`中的`next`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
|-----|-----|------|-----|
| 0 | num | 升级积分 | |
| 1 | num | 总积分 | |
`room_news`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------- | ---- |
|------------|-----|------|-----|
| content | str | 公告内容 | |
| ctime | str | 公告时间 | |
| ctime_text | str | 公告日期 | |
@@ -526,22 +544,21 @@ curl -G 'https://api.live.bilibili.com/live_user/v1/Master/info' \
**url参数 (GET方式)**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ----- | ---------------- | ------ | ---- |
|--------|-------|------------|-----|-----|
| uids[] | array | 要查询的主播 mid | 必要 | |
**正文参数 (POST方式)**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
|------|------|------------|-----|-----|
| uids | nums | 要查询的主播 mid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
|---------|-----|------|-------------------------|
| code | num | 返回值 | 0成功<br />-111csrf校验失败 |
| message | str | 错误信息 | 默认为success |
| msg | str | 错误信息 | 默认为success |
@@ -551,35 +568,35 @@ curl -G 'https://api.live.bilibili.com/live_user/v1/Master/info' \
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ------------ |
|-----|-----|-------|------------|
| uid | str | 直播间信息 | 实际字段为主播mid |
`uid`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ------------ |
|---------------------|-----|-----------|------------------------------|
| title | str | 直播间标题 | |
| room_id | num | 直播间房间号 | 直播间实际房间号 |
| uid | num | 主播mid | |
| online | num | 直播间在线人数 | |
| live_time | num | 直播持续时长 | |
| live_status | num | 直播间开播状态 | 0未开播<br />1正在直播<br />2轮播中 |
| short_id | num | 直播间房间号 | 直播间短房间号,常见于签约主播 |
| area | num | 直播间分区id | |
| area_name | str | 直播间分区名 | |
| area_v2_id | num | 直播间新版分区id | |
| area_v2_name | str | 直播间新版分区名 | |
| area_v2_parent_id | num | 直播间父分区id | |
| area_v2_parent_name | str | 直播间父分区名 | |
| broadcast_type | num | 直播类型 | 0:普通直播<br />1手机直播 |
| cover_from_user | str | 直播间封面url | |
| uname | str | 主播用户名 | |
| face | str | 主播头像url | |
| hidden_till | str | 直播间隐藏信息 | |
| keyframe | str | 直播间关键帧url | |
| live_status | num | 直播间开播状态 | 0未开播<br />1正在直播<br />2轮播中 |
| live_time | num | 直播持续时长 | |
| lock_till | str | 直播间封禁信息 | |
| online | num | 直播间在线人数 | |
| room_id | num | 直播间房间号 | 直播间实际房间号 |
| short_id | num | 直播间房间号 | 直播间短房间号,常见于签约主播 |
| tag_name | str | 直播间标签 | |
| tags | str | 直播间自定标签 | |
| title | str | 直播间标题 | |
| uid | num | 主播mid | |
| uname | str | 主播用户名 | |
| cover_from_user | str | 直播间封面url | |
| keyframe | str | 直播间关键帧url | |
| lock_till | str | 直播间封禁信息 | |
| hidden_till | str | 直播间隐藏信息 | |
| broadcast_type | num | 直播类型 | 0:普通直播<br />1手机直播 |
**示例:**
@@ -634,3 +651,321 @@ curl 'https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids' \
```
</details>
## 清晰度代码
| 代码 | 说明 |
|-------|-----|
| 30000 | 杜比 |
| 20000 | 4K |
| 10000 | 原画 |
| 400 | 蓝光 |
| 250 | 超清 |
| 150 | 高清 |
| 80 | 流畅 |
## 获取直播间信息
> https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo
*请求方式GET*
认证方式:无 (无需添加Cookie)
**url参数 (GET方式)**
| 参数名 | 类型 | 内容 | 必填 | 备注 |
|----------|-----|-------|-----|------------------------------------------------|
| room_id | num | 直播间id | 必要 | |
| protocol | str | 直播协议 | 必要 | 0http_stream<br/>1http_hls<br/>可多选, 使用英文逗号分隔 |
| format | str | 格式 | 必要 | 0flv<br/>1ts<br/>2fmp4<br/>可多选, 使用英文逗号分隔 |
| codec | str | 编码格式 | 必要 | 0AVC<br/>1HEVC<br/>可多选, 使用英文逗号分隔 |
| qn | num | 清晰度编码 | | 默认`150`<br/>[清晰度代码](#清晰度代码) |
| platform | str | `web` | | |
| ptype | num | `8` | | |
| dolby | num | `5` | | |
| panorama | num | `1` | | |
**json回复**
根对象:
| 字段名 | 类型 | 内容 | 备注 |
|---------|-----|------|-----------------------|
| code | num | 响应码 | 0成功<br/>1002002参数错误 |
| message | str | 0 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段名 | 类型 | 内容 | 备注 |
|-------------------|-------|-----------|---------------------------|
| room_id | num | 直播间id | |
| short_id | num | 直播间短id | |
| uid | num | 主播uid | |
| is_hidden | bool | 直播间是否被隐藏 | |
| is_locked | bool | 直播间是否被锁定 | |
| is_portrait | bool | 是否竖屏 | |
| live_status | num | 直播状态 | 0未开播<br/>1直播中<br/>2轮播中 |
| hidden_till | num | 隐藏结束时间 | |
| lock_till | num | 封禁结束时间 | 秒级时间戳 |
| encrypted | bool | 直播间为加密直播间 | |
| pwd_verified | bool | 是否通过密码验证 | 当`encrypted`为`true`时才有意义 |
| live_time | num | 本次开播时间 | 秒级时间戳 |
| room_shield | num | | |
| all_special_types | array | | |
| playurl_info | obj | 直播流信息 | |
`playurl_info`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|-----|-----|
| conf_json | str | | |
| playurl | obj | | |
`playurl`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-------|-------|-----|
| cid | num | 直播间id | |
| g_qn_desc | array | 清晰度列表 | |
| stream | array | 直播流信息 | |
| p2p_data | obj | | |
| dolby_qn | | | |
`g_qn_desc`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|-------|-----------------|
| qn | num | 清晰度代码 | [清晰度代码](#清晰度代码) |
| desc | str | 清晰度描述 | |
| hdr_desc | str | | |
| attr_desc | | | |
`stream`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|---------------|-------|------|-----|
| protocol_name | str | 协议名 | |
| format | array | 格式列表 | |
`format`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------|-------|------|-----|
| format_name | str | 格式名 | |
| codec | array | 编码列表 | |
`codec`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|------------|-------|-----------|-----------------|
| codec_name | str | 编码名 | |
| current_qn | num | 当前清晰度编码 | [清晰度代码](#清晰度代码) |
| accept_qn | array | 可用清晰度编码列表 | [清晰度代码](#清晰度代码) |
| base_url | str | 播放源路径 | |
| url_info | array | 域名信息列表 | |
| hdr_qn | null | | |
| dolby_type | num | | |
| attr_name | str | | |
`url_info`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|------------|-----|-------|-----|
| host | str | 域名 | |
| extra | str | URL参数 | |
| stream_ttl | num | | |
`p2p_data`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|------|-----|-----|
| p2p | bool | | |
| p2p_type | num | | |
| m_p2p | bool | | |
| m_servers | null | | |
**示例:**
查询room_id=3的直播间信息
```shell
curl -L -X GET 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?room_id=3&protocol=0,1&format=0,1,2&codec=0,1&qn=10000'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"room_id": 23058,
"short_id": 3,
"uid": 11153765,
"is_hidden": false,
"is_locked": false,
"is_portrait": false,
"live_status": 1,
"hidden_till": 0,
"lock_till": 0,
"encrypted": false,
"pwd_verified": true,
"live_time": 1671425336,
"room_shield": 1,
"all_special_types": [],
"playurl_info": {
"conf_json": "{\"cdn_rate\":10000,\"report_interval_sec\":150}",
"playurl": {
"cid": 23058,
"g_qn_desc": [
{
"qn": 30000,
"desc": "杜比",
"hdr_desc": "",
"attr_desc": null
},
{
"qn": 20000,
"desc": "4K",
"hdr_desc": "",
"attr_desc": null
},
{
"qn": 10000,
"desc": "原画",
"hdr_desc": "",
"attr_desc": null
},
{
"qn": 400,
"desc": "蓝光",
"hdr_desc": "HDR",
"attr_desc": null
},
{
"qn": 250,
"desc": "超清",
"hdr_desc": "HDR",
"attr_desc": null
},
{
"qn": 150,
"desc": "高清",
"hdr_desc": "",
"attr_desc": null
},
{
"qn": 80,
"desc": "流畅",
"hdr_desc": "",
"attr_desc": null
}
],
"stream": [
{
"protocol_name": "http_stream",
"format": [
{
"format_name": "flv",
"codec": [
{
"codec_name": "avc",
"current_qn": 10000,
"accept_qn": [
10000,
150
],
"base_url": "/live-bvc/462997/live_11153765_9369560.flv?",
"url_info": [
{
"host": "https://cn-hbcd-cu-02-20.bilivideo.com",
"extra": "expires=1674103815&pt=web&deadline=1674103815&len=0&oi=1963941079&platform=web&qn=10000&trid=1000061f434c07ac4f4184820bfb141e75e8&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=f494aa9e92e24943061fe5082494ec44&sk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1",
"stream_ttl": 3600
}
],
"hdr_qn": null,
"dolby_type": 0,
"attr_name": ""
}
]
}
]
},
{
"protocol_name": "http_hls",
"format": [
{
"format_name": "ts",
"codec": [
{
"codec_name": "avc",
"current_qn": 10000,
"accept_qn": [
10000,
150
],
"base_url": "/live-bvc/462997/live_11153765_9369560.m3u8?",
"url_info": [
{
"host": "https://cn-hbcd-cu-02-20.bilivideo.com",
"extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1003061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=4f9bcec18e3afdca04b31ffb285ec915&sk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1",
"stream_ttl": 3600
}
],
"hdr_qn": null,
"dolby_type": 0,
"attr_name": ""
}
]
},
{
"format_name": "fmp4",
"codec": [
{
"codec_name": "avc",
"current_qn": 10000,
"accept_qn": [
10000,
150
],
"base_url": "/live-bvc/462997/live_11153765_9369560/index.m3u8?",
"url_info": [
{
"host": "https://cn-hbcd-cu-02-20.bilivideo.com",
"extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1007061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=cc57dce528316d8389f2f34e7bd15f5c&sk=a99391b8b4d5779b2e32e41dbc989d2d&flvsk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&bvchls=1&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1",
"stream_ttl": 3600
},
{
"host": "https://c1--cn-gotcha208.bilivideo.com",
"extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1007061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha208&sign=2ff96adf5056c8dbee546955260fc2df&sk=a99391b8b4d5779b2e32e41dbc989d2d&p2p_type=1&src=57345&sl=1&free_type=0&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=2",
"stream_ttl": 3600
}
],
"hdr_qn": null,
"dolby_type": 0,
"attr_name": ""
}
]
}
]
}
],
"p2p_data": {
"p2p": true,
"p2p_type": 1,
"m_p2p": false,
"m_servers": null
},
"dolby_qn": null
}
}
}
}
```
</details>