添加【关注列表】排序参数 添加【互动弹幕获取】相关接口
This commit is contained in:
@@ -72,8 +72,8 @@ PS:所有http协议地址均可使用https,文档中为了统一写作`http`
|
|||||||
- 状态数
|
- 状态数
|
||||||
- 操作
|
- 操作
|
||||||
- [视频弹幕](danmaku)
|
- [视频弹幕](danmaku)
|
||||||
- [protobuf实时弹幕](danmaku/danmaku_proto.md)×
|
- [protobuf实时弹幕](danmaku/danmaku_proto.md)√
|
||||||
- protobuf云推荐弹幕
|
- [protobuf弹幕元数据(BAS弹幕/互动弹幕)](danmaku/danmaku_view.md)√
|
||||||
- [xml实时弹幕](danmaku/danmaku_xml.md)√
|
- [xml实时弹幕](danmaku/danmaku_xml.md)√
|
||||||
- [xml历史弹幕](danmaku/history.md)√
|
- [xml历史弹幕](danmaku/history.md)√
|
||||||
- [快照](danmaku/snapshot.md)√
|
- [快照](danmaku/snapshot.md)√
|
||||||
@@ -81,6 +81,7 @@ PS:所有http协议地址均可使用https,文档中为了统一写作`http`
|
|||||||
- 高级弹幕
|
- 高级弹幕
|
||||||
- 屏蔽管理
|
- 屏蔽管理
|
||||||
- 智能防挡弹幕
|
- 智能防挡弹幕
|
||||||
|
- 弹幕个人配置修改
|
||||||
- [专栏](article)
|
- [专栏](article)
|
||||||
- 分区
|
- 分区
|
||||||
- [基本信息](article/info.md)×
|
- [基本信息](article/info.md)×
|
||||||
|
|||||||
@@ -8,12 +8,16 @@
|
|||||||
|
|
||||||
认证方式:Cookie(SESSDATA)或APP
|
认证方式:Cookie(SESSDATA)或APP
|
||||||
|
|
||||||
|
此接口与漫画弹幕相同
|
||||||
|
|
||||||
|
`mode=6`的逆向弹幕与`mode=8`的代码弹幕不可发送
|
||||||
|
|
||||||
**正文参数( application/x-www-form-urlencoded ):**
|
**正文参数( application/x-www-form-urlencoded ):**
|
||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
|
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
|
||||||
| access_key | str | APP登录Token | APP方式必要 | |
|
| access_key | str | APP登录Token | APP方式必要 | |
|
||||||
| type | num | 1 | 必要 | |
|
| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 |
|
||||||
| oid | num | 视频CID | 必要 | |
|
| oid | num | 视频CID | 必要 | |
|
||||||
| msg | str | 弹幕内容 | 必要 | 长度小于100字符 |
|
| msg | str | 弹幕内容 | 必要 | 长度小于100字符 |
|
||||||
| bvid | str | 视频bvID | 必要(可选) | avID与bvID任选一个 |
|
| bvid | str | 视频bvID | 必要(可选) | avID与bvID任选一个 |
|
||||||
@@ -115,7 +119,7 @@ curl 'http://api.bilibili.com/x/v2/dm/post'\
|
|||||||
| dmid | num | 修改互动弹幕的弹幕ID | 非必要 | 注:修改弹幕`plat`必须为8 |
|
| dmid | num | 修改互动弹幕的弹幕ID | 非必要 | 注:修改弹幕`plat`必须为8 |
|
||||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||||
|
|
||||||
`data`参数:
|
`data`参数json序列:
|
||||||
|
|
||||||
类型为【UP主头像弹幕】时:
|
类型为【UP主头像弹幕】时:
|
||||||
|
|
||||||
@@ -179,6 +183,15 @@ curl 'http://api.bilibili.com/x/v2/dm/post'\
|
|||||||
| title | str | 关联视频的标题 | |
|
| title | str | 关联视频的标题 | |
|
||||||
| bvid | str | 关联视频的bvID | |
|
| bvid | str | 关联视频的bvID | |
|
||||||
|
|
||||||
|
类型为【视频内嵌引导关注按钮】时:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|
| -------- | ---- | ----------- | ---------------------------------- |
|
||||||
|
| duration | num | 持续时间 | 单位为毫秒 |
|
||||||
|
| posX | num | X坐标 | 区间:[118-549] |
|
||||||
|
| posY | num | Y坐标 | 区间:[82-293] |
|
||||||
|
| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 |
|
||||||
|
|
||||||
**示例:**
|
**示例:**
|
||||||
|
|
||||||
为视频`av201947622`(CID为`230709860`)的5000ms位置发送一条UP主头像弹幕`test`
|
为视频`av201947622`(CID为`230709860`)的5000ms位置发送一条UP主头像弹幕`test`
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
|
|
||||||
此接口与漫画弹幕相同
|
此接口与漫画弹幕相同
|
||||||
|
|
||||||
只能返回普通和高级弹幕,代码(BAS)弹幕请从云推荐弹幕中获取
|
只能返回普通弹幕(`pool=1` `mode=1-7`)和代码弹幕(`pool=2` `mode=8`),BAS弹幕(`pool=2` `mode=9`)请从[弹幕元数据](danmaku_view_proto.md)中获取
|
||||||
|
|
||||||
|
互动弹幕(UP主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取
|
||||||
|
|
||||||
**注:仅获取6min的整数倍时间内的弹幕,6min内最多弹幕数为6000条(如第一包中弹幕`progress`值域为0-360000)**
|
**注:仅获取6min的整数倍时间内的弹幕,6min内最多弹幕数为6000条(如第一包中弹幕`progress`值域为0-360000)**
|
||||||
|
|
||||||
@@ -22,31 +24,35 @@
|
|||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ------------- | ---- | -------- | ------ | ----------- |
|
| ------------- | ---- | -------- | ------ | ----------- |
|
||||||
| type | num | 弹幕分类 | 必要 | 1:视频弹幕 |
|
| type | num | 弹幕类 | 必要 | 1:视频弹幕 |
|
||||||
| oid | num | 视频CID | 必要 | |
|
| oid | num | 视频CID | 必要 | |
|
||||||
| pid | num | 视频avID | 非必要 | |
|
| pid | num | 视频avID | 非必要 | |
|
||||||
| segment_index | num | 分包 | 必要 | 6分钟一包 |
|
| segment_index | num | 分包 | 必要 | 6分钟一包 |
|
||||||
|
|
||||||
**回复:**
|
**proto回复:**
|
||||||
|
|
||||||
返回二进制数据,需要自行解析
|
消息`DmSegMobileReply`:
|
||||||
|
|
||||||
**示例:**
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| ----- | ---------------- | -------- | ---- |
|
||||||
|
| elems | repeated message | 弹幕条目 | |
|
||||||
|
|
||||||
获取视频`av810872(CID=1176840)`的实时弹幕分段`1`
|
消息`DanmakuElem`:
|
||||||
|
|
||||||
```shell
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
curl -G 'http://api.bilibili.com/x/v2/dm/web/seg.so'\
|
| -------- | ------ | ------------------ | ------------------------------------------------------------ |
|
||||||
--data-urlencode 'type=1'\
|
| id | int64 | 弹幕dmID | 唯一 可用于操作参数 |
|
||||||
--data-urlencode 'oid=1176840'\
|
| progress | int32 | 视频内弹幕出现时间 | 毫秒 |
|
||||||
--data-urlencode 'pid=810872'\
|
| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕<br />4:底部弹幕<br />5:顶部弹幕<br />6:逆向弹幕<br />7:高级弹幕<br />8:代码弹幕<br />~~9:BAS弹幕~~ |
|
||||||
--data-urlencode 'segment_index=1'\
|
| fontsize | int32 | 弹幕字号 | 18:小<br />25:标准<br />36:大 |
|
||||||
-o 'danmaku.bin'
|
| color | uint32 | 弹幕颜色 | 十进制RGB888值 |
|
||||||
```
|
| midHash | string | 发送者UID的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户ID |
|
||||||
|
| content | string | 弹幕内容 | utf-8编码 |
|
||||||
响应正文为protubuf二进制数据
|
| ctime | int64 | 弹幕发送时间 | 时间戳 |
|
||||||
|
| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出<br />范围:[0-10]<br />值越大权重越高 |
|
||||||
## 弹幕格式
|
| action | string | 动作? | 作用尚不明确 |
|
||||||
|
| pool | int32 | 弹幕池 | 0:普通池<br />1:字幕池<br />2:特殊池(代码/BAS弹幕) |
|
||||||
|
| idStr | string | 弹幕dmID | 字串形式<br />唯一 可用于操作参数 |
|
||||||
|
|
||||||
protobuf结构体:
|
protobuf结构体:
|
||||||
|
|
||||||
@@ -65,30 +71,30 @@ message DanmakuElem {
|
|||||||
string content = 7; //弹幕内容
|
string content = 7; //弹幕内容
|
||||||
int64 ctime = 8; //发送时间
|
int64 ctime = 8; //发送时间
|
||||||
int32 weight = 9; //权重
|
int32 weight = 9; //权重
|
||||||
string action = 10; //动作
|
string action = 10; //动作?
|
||||||
int32 pool = 11; //弹幕池
|
int32 pool = 11; //弹幕池
|
||||||
string idStr = 12; //弹幕dmID
|
string idStr = 12; //弹幕dmID(字串形式)
|
||||||
}
|
}
|
||||||
|
|
||||||
message DmSegMobileReply {
|
message DmSegMobileReply {
|
||||||
repeated DanmakuElem elems = 1;
|
repeated DanmakuElem elems = 1; //弹幕条目
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| 名称 | 含义 | 类型 | 备注 |
|
**示例:**
|
||||||
| -------- | -------------------- | ------ | ------------------------------------------------------------ |
|
|
||||||
| id | 弹幕dmID | int64 | 唯一 可用于操作参数 |
|
获取视频`av810872(CID=1176840)`的实时弹幕分包1
|
||||||
| progress | 视频内弹幕出现时间 | int32 | 毫秒 |
|
|
||||||
| mode | 弹幕类型 | int32 | 1 2 3:普通弹幕<br />4:底部弹幕<br />5:顶部弹幕<br />6:逆向弹幕<br />7:高级弹幕<br />8:代码弹幕<br />9:BAS弹幕 |
|
```shell
|
||||||
| fontsize | 弹幕字号 | int32 | 18:小<br />25:标准<br />36:大 |
|
curl -G 'http://api.bilibili.com/x/v2/dm/web/seg.so'\
|
||||||
| color | 弹幕颜色 | uint32 | 十进制RGB888值 |
|
--data-urlencode 'type=1'\
|
||||||
| midHash | 发送者UID的HASH | string | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户ID |
|
--data-urlencode 'oid=1176840'\
|
||||||
| content | 弹幕内容 | string | utf-8编码 |
|
--data-urlencode 'pid=810872'\
|
||||||
| ctime | 弹幕发送时间 | int64 | 时间戳 |
|
--data-urlencode 'segment_index=1'\
|
||||||
| weight | 权重 | int32 | 用于智能屏蔽级别 |
|
-o 'danmaku.bin'
|
||||||
| action | 动作 | string | 未知 |
|
```
|
||||||
| pool | 弹幕池 | int32 | 0:普通池<br />1:字幕池<br />2:特殊池(代码/BAS弹幕) |
|
|
||||||
| idStr | 弹幕dmID的字符串类型 | string | 唯一 可用于操作参数 |
|
响应正文为protubuf二进制数据
|
||||||
|
|
||||||
## 实例
|
## 实例
|
||||||
|
|
||||||
@@ -104,15 +110,21 @@ protoc --python_out=. bilidm.proto
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
以下为python测试代码
|
以下为python测试代码,输出第一包的第一条弹幕
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import bilidm_pb2
|
import bilidm_pb2
|
||||||
import requests
|
import requests
|
||||||
url = 'http://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=1176840&pid=810872&segment_index=1'
|
|
||||||
|
AVID = 810872
|
||||||
|
CID = 1176840
|
||||||
|
SEG = 1
|
||||||
|
url = 'http://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=' + str(CID) + '&pid=' + str(AVID) + '&segment_index=' + str(SEG)
|
||||||
|
|
||||||
data = requests.get(url)
|
data = requests.get(url)
|
||||||
target = bilidm_pb2.DmSegMobileReply()
|
target = bilidm_pb2.DmSegMobileReply()
|
||||||
target.ParseFromString(data.content)
|
target.ParseFromString(data.content)
|
||||||
|
|
||||||
print(target.elems[0])
|
print(target.elems[0])
|
||||||
print(target.elems[0].content)
|
print(target.elems[0].content)
|
||||||
```
|
```
|
||||||
|
|||||||
290
danmaku/danmaku_view_proto.md
Normal file
290
danmaku/danmaku_view_proto.md
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
# 弹幕元数据
|
||||||
|
|
||||||
|
2020-09-25 B站更新了互动弹幕功能,包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能
|
||||||
|
|
||||||
|
详情见:
|
||||||
|
|
||||||
|
[【客户端更新】6.10版本更新!UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 )
|
||||||
|
|
||||||
|
[引导关注卡片](https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html )
|
||||||
|
|
||||||
|
## 获取弹幕个人配置与互动弹幕及BAS(代码)弹幕专包(web端)
|
||||||
|
|
||||||
|
> http://api.bilibili.com/x/v2/dm/web/view
|
||||||
|
|
||||||
|
*请求方式:GET*
|
||||||
|
|
||||||
|
认证方式:仅可Cookie(SESSDATA)
|
||||||
|
|
||||||
|
**url参数:**
|
||||||
|
|
||||||
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
|
| ------ | ---- | -------- | ------ | ----------- |
|
||||||
|
| type | num | 弹幕类 | 必要 | 1:视频弹幕 |
|
||||||
|
| oid | num | 视频CID | 必要 | |
|
||||||
|
| pid | num | 视频avID | 非必要 | |
|
||||||
|
|
||||||
|
**proto回复:**
|
||||||
|
|
||||||
|
消息`DmWebViewReply`:
|
||||||
|
|
||||||
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| ---------- | ---------------- | ---------------------- | ---------------------------- |
|
||||||
|
| state | int32 | 弹幕开放状态 | 0:开放弹幕<br />1:禁止弹幕 |
|
||||||
|
| text | string | ? | |
|
||||||
|
| textSide | string | ? | |
|
||||||
|
| dmSge | message | 分段弹幕包信息? | |
|
||||||
|
| flag | message | ? | |
|
||||||
|
| specialDms | repeated message | BAS(代码)弹幕专包url | |
|
||||||
|
| checkBox | bool | ? | |
|
||||||
|
| count | int64 | 实际弹幕总数 | 具有1500-6000不等的上限 |
|
||||||
|
| commandDms | repeated message | 互动弹幕条目 | |
|
||||||
|
| dmSetting | message | 弹幕个人配置 | 仅登录后存在 |
|
||||||
|
|
||||||
|
消息`dmSge`:
|
||||||
|
|
||||||
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| -------- | ----- | ------------ | ---------- |
|
||||||
|
| pageSize | int64 | 分段时间? | 单位为毫秒 |
|
||||||
|
| total | int64 | 最大分页数? | |
|
||||||
|
|
||||||
|
消息`flag`:
|
||||||
|
|
||||||
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| --------- | ------ | ---- | ---- |
|
||||||
|
| recFlag | int32 | ? | |
|
||||||
|
| recText | string | ? | |
|
||||||
|
| recSwitch | int32 | ? | |
|
||||||
|
|
||||||
|
消息`commandDms`:
|
||||||
|
|
||||||
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| -------- | ------ | ------------ | ------------------------------------------------------------ |
|
||||||
|
| id | int64 | 弹幕dmID | |
|
||||||
|
| oid | int64 | 视频CID | |
|
||||||
|
| mid | int64 | 发送者UID | |
|
||||||
|
| command | string | 弹幕指令 | `#UP#`:UP主头像弹幕<br />`#LINK#`:关联视频弹幕<br />`#ATTENTION#`:视频内嵌引导关注按钮 |
|
||||||
|
| content | string | 弹幕文字 | |
|
||||||
|
| progress | int32 | 弹幕出现时间 | 单位为毫秒 |
|
||||||
|
| ctime | string | 创建时间? | 此项为空 |
|
||||||
|
| mtime | string | 修改时间? | 此项为空 |
|
||||||
|
| extra | string | 弹幕负载数据 | json序列字串 |
|
||||||
|
| idStr | string | 弹幕dmID | 字串形式 |
|
||||||
|
|
||||||
|
`extra`json序列:
|
||||||
|
|
||||||
|
类型为【UP主头像弹幕】时:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|
| ---- | ---- | ----------- | ---- |
|
||||||
|
| icon | str | UP主头像url | |
|
||||||
|
|
||||||
|
类型为【关联视频弹幕】时:类型为【关联视频弹幕】时:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|
| ----- | ---- | ------------------- | ---- |
|
||||||
|
| aid | num | 关联视频的avID | |
|
||||||
|
| title | str | 关联视频的标题 | |
|
||||||
|
| icon | str | 关联视频按钮图片url | |
|
||||||
|
| bvid | str | 关联视频的bvID | |
|
||||||
|
|
||||||
|
类型为【视频内嵌引导关注按钮】时:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 内容 | 备注 |
|
||||||
|
| -------- | ---- | ----------- | ---------------------------------- |
|
||||||
|
| duration | num | 持续时间 | 单位为毫秒 |
|
||||||
|
| posX | num | X坐标 | 区间:[118-549] |
|
||||||
|
| posY | num | Y坐标 | 区间:[82-293] |
|
||||||
|
| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 |
|
||||||
|
|
||||||
|
消息`dmSetting`:
|
||||||
|
|
||||||
|
| 名称 | 类型 | 含义 | 备注 |
|
||||||
|
| ------------ | ------ | ------------------------ | ------------------------------------------------------------ |
|
||||||
|
| dmSwitch | bool | 弹幕开关 | true:开启<br />false:关闭 |
|
||||||
|
| aiSwitch | bool | 智能云屏蔽 | 同上 |
|
||||||
|
| aiLevel | int32 | 智能云屏蔽级别 | 区间:[1-10] |
|
||||||
|
| blocktop | bool | 屏蔽类型-顶部 | true:不屏蔽<br />false:屏蔽 |
|
||||||
|
| blockscroll | bool | 屏蔽类型-滚动 | 同上 |
|
||||||
|
| blockbottom | bool | 屏蔽类型-底部 | 同上 |
|
||||||
|
| blockcolor | bool | 屏蔽类型-彩色 | 同上 |
|
||||||
|
| blockspecial | bool | 屏蔽类型-特殊 | 同上 |
|
||||||
|
| preventshade | bool | 防挡弹幕(底部15%) | true:开启<br />false:关闭 |
|
||||||
|
| dmask | bool | 智能防挡弹幕(人像蒙版) | 同上 |
|
||||||
|
| opacity | float | 弹幕不透明度 | 区间:[0-1] |
|
||||||
|
| dmarea | int32 | 弹幕显示区域 | 100:不重叠<br />75:3/4屏<br />50:半瓶<br />25:1/4屏<br />0:不限 |
|
||||||
|
| speedplus | float | 弹幕速度 | 区间:[0.4-1.6] |
|
||||||
|
| fontsize | float | 字体大小 | 区间:[0.4-1.6] |
|
||||||
|
| screensync | bool | 跟随屏幕缩放比例 | |
|
||||||
|
| speedsync | bool | 根据播放倍速调整速度 | |
|
||||||
|
| fontfamily | string | 字体类型? | 未启用 |
|
||||||
|
| bold | bool | 粗体? | 未启用 |
|
||||||
|
| fontborder | int32 | 描边类型 | 0:重墨<br />1:描边<br />2:45°投影 |
|
||||||
|
| drawType | string | 渲染类型? | 未启用 |
|
||||||
|
|
||||||
|
protobuf结构体:
|
||||||
|
|
||||||
|
**web_dmview.proto**
|
||||||
|
|
||||||
|
```protobuf
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
//分段弹幕包信息?
|
||||||
|
message DmSegConfig {
|
||||||
|
int64 pageSize = 1; //分段时间?
|
||||||
|
int64 total = 2; //最大分页数?
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
message DanmakuFlagConfig {
|
||||||
|
int32 recFlag = 1; //
|
||||||
|
string recText = 2; //
|
||||||
|
int32 recSwitch = 3; //
|
||||||
|
}
|
||||||
|
|
||||||
|
// 互动弹幕条目
|
||||||
|
message CommandDm {
|
||||||
|
int64 id = 1; //弹幕dmID
|
||||||
|
int64 oid = 2; //视频CID
|
||||||
|
int64 mid = 3; //发送者UID
|
||||||
|
string command = 4; //弹幕指令
|
||||||
|
string content = 5; //弹幕文字
|
||||||
|
int32 progress = 6; //弹幕出现时间
|
||||||
|
string ctime = 7; //
|
||||||
|
string mtime = 8; //
|
||||||
|
string extra = 9; //弹幕负载数据
|
||||||
|
string idStr = 10; //弹幕dmID(字串形式)
|
||||||
|
}
|
||||||
|
|
||||||
|
//弹幕个人配置
|
||||||
|
message DanmuWebPlayerConfig{
|
||||||
|
bool dmSwitch=1; //弹幕开关
|
||||||
|
bool aiSwitch=2; //智能云屏蔽
|
||||||
|
int32 aiLevel=3; //智能云屏蔽级别
|
||||||
|
bool blocktop=4; //屏蔽类型-顶部
|
||||||
|
bool blockscroll=5; //屏蔽类型-滚动
|
||||||
|
bool blockbottom=6; //屏蔽类型-底部
|
||||||
|
bool blockcolor=7; //屏蔽类型-彩色
|
||||||
|
bool blockspecial=8; //屏蔽类型-特殊
|
||||||
|
bool preventshade=9; //防挡弹幕(底部15%)
|
||||||
|
bool dmask=10; //智能防挡弹幕(人像蒙版)
|
||||||
|
float opacity=11; //弹幕不透明度
|
||||||
|
int32 dmarea=12; //弹幕显示区域
|
||||||
|
float speedplus=13; //弹幕速度
|
||||||
|
float fontsize=14; //字体大小
|
||||||
|
bool screensync=15; //跟随屏幕缩放比例
|
||||||
|
bool speedsync=16; //根据播放倍速调整速度
|
||||||
|
string fontfamily=17; //字体类型?
|
||||||
|
bool bold=18; //粗体?
|
||||||
|
int32 fontborder=19; //描边类型
|
||||||
|
string drawType=20; //渲染类型?
|
||||||
|
}
|
||||||
|
|
||||||
|
message DmWebViewReply {
|
||||||
|
int32 state = 1; //弹幕开放状态
|
||||||
|
string text = 2; //
|
||||||
|
string textSide = 3; //
|
||||||
|
DmSegConfig dmSge = 4; //分段弹幕包信息?
|
||||||
|
DanmakuFlagConfig flag = 5; //
|
||||||
|
repeated string specialDms = 6; //BAS(代码)弹幕专包url
|
||||||
|
bool checkBox = 7; //
|
||||||
|
int64 count = 8; //实际弹幕总数
|
||||||
|
repeated CommandDm commandDms = 9; //互动弹幕条目
|
||||||
|
DanmuWebPlayerConfig dmSetting = 10; //弹幕个人配置
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
获取视频`av797164471(CID=236871317)`的弹幕元数据
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl -G 'http://api.bilibili.com/x/v2/dm/web/view'\
|
||||||
|
--data-urlencode 'type=1'\
|
||||||
|
--data-urlencode 'oid=236871317'\
|
||||||
|
--data-urlencode 'pid=797164471'\
|
||||||
|
-b 'SESSDATA=xxx'\
|
||||||
|
-o 'danmaku_view.bin'
|
||||||
|
```
|
||||||
|
|
||||||
|
响应正文为protubuf二进制数据
|
||||||
|
|
||||||
|
## 获取互动弹幕
|
||||||
|
|
||||||
|
获取视频`av797164471(CID=236871317)`的互动弹幕
|
||||||
|
|
||||||
|
```python
|
||||||
|
import web_dmview_pb2
|
||||||
|
import requests
|
||||||
|
|
||||||
|
CID = 236871317
|
||||||
|
url = 'http://api.bilibili.com/x/v2/dm/web/view?type=1&oid='+str(CID)
|
||||||
|
|
||||||
|
data = requests.get(url)
|
||||||
|
target = web_dmview_pb2.DmWebViewReply()
|
||||||
|
target.ParseFromString(data.content)
|
||||||
|
|
||||||
|
commandDms_len=len(target.commandDms)
|
||||||
|
print('互动弹幕数=',commandDms_len)
|
||||||
|
for i in range(commandDms_len):
|
||||||
|
print('互动弹幕[',i,']:')
|
||||||
|
print('---弹幕ID=',target.commandDms[i].id)
|
||||||
|
print('---视频CID=',target.commandDms[i].oid)
|
||||||
|
print('---发送者UID=',target.commandDms[i].mid)
|
||||||
|
print('---弹幕指令=',target.commandDms[i].command)
|
||||||
|
print('---弹幕文字=',target.commandDms[i].content)
|
||||||
|
print('---弹幕出现时间=',target.commandDms[i].progress)
|
||||||
|
print('---ctime=',target.commandDms[i].ctime)
|
||||||
|
print('---mtime=',target.commandDms[i].mtime)
|
||||||
|
print('---弹幕负载数据=',target.commandDms[i].extra)
|
||||||
|
print('---弹幕ID(字串)=',target.commandDms[i].idStr)
|
||||||
|
```
|
||||||
|
|
||||||
|
输出为:
|
||||||
|
|
||||||
|
```
|
||||||
|
互动弹幕数= 1
|
||||||
|
互动弹幕[ 0 ]:
|
||||||
|
---弹幕ID= 38469676112019463
|
||||||
|
---视频CID= 236871317
|
||||||
|
---发送者UID= 501183549
|
||||||
|
---弹幕指令= #UP#
|
||||||
|
---弹幕文字= 这个视频没有恰饭!别紧张!
|
||||||
|
---弹幕出现时间= 157818
|
||||||
|
---ctime=
|
||||||
|
---mtime=
|
||||||
|
---弹幕负载数据= {"icon":"http://i1.hdslb.com/bfs/face/559abe31f561f71f3106d8ee7b2065cac50c1235.jpg"}
|
||||||
|
---弹幕ID(字串)= 38469676112019463
|
||||||
|
```
|
||||||
|
|
||||||
|
## 获取BAS(代码)弹幕专包
|
||||||
|
|
||||||
|
BAS弹幕(`pool=2` `mode=9`)只能从此包获取,代码弹幕(`pool=2` `mode=8`)也能从此包获取
|
||||||
|
|
||||||
|
获取视频`av2(CID=62131)`的BAS(代码)弹幕专包
|
||||||
|
|
||||||
|
```python
|
||||||
|
import web_dmview_pb2
|
||||||
|
import requests
|
||||||
|
|
||||||
|
CID = 62131
|
||||||
|
url = 'http://api.bilibili.com/x/v2/dm/web/view?type=1&oid='+str(CID)
|
||||||
|
|
||||||
|
data = requests.get(url)
|
||||||
|
target = web_dmview_pb2.DmWebViewReply()
|
||||||
|
target.ParseFromString(data.content)
|
||||||
|
|
||||||
|
specialDms_len=len(target.specialDms)
|
||||||
|
print('特殊弹幕包数=',specialDms_len)
|
||||||
|
for i in range(specialDms_len):
|
||||||
|
print('特殊弹幕包url[',i,']=',target.specialDms[i])
|
||||||
|
```
|
||||||
|
|
||||||
|
输出为:
|
||||||
|
|
||||||
|
```
|
||||||
|
特殊弹幕包数= 1
|
||||||
|
特殊弹幕包url[ 0 ]= http://i0.hdslb.com/bfs/dm/b0d5f08c12be59292aa0d4e09b6dd8e54c2ba886.bin
|
||||||
|
```
|
||||||
|
|
||||||
|
使用[普通分段包弹幕](danmaku_proto.md)的proto结构体反序列化此bin数据
|
||||||
@@ -183,12 +183,13 @@ curl -G 'http://api.bilibili.com/x/relation/followers'\
|
|||||||
|
|
||||||
**url参数:**
|
**url参数:**
|
||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ---------- | ---- | ------------ | ----------- | ---------------------------------- |
|
| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- |
|
||||||
| access_key | str | APP登录Token | APP方式必要 | |
|
| access_key | str | APP登录Token | APP方式必要 | |
|
||||||
| vmid | num | 目标用户UID | 必要 | |
|
| vmid | num | 目标用户UID | 必要 | |
|
||||||
| ps | num | 每页项数 | 非必要 | 默认为50 |
|
| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空<br />按照最常访问排列:attention |
|
||||||
| pn | num | 页码 | 非必要 | 默认为1<br />其他用户仅可查看前5页 |
|
| ps | num | 每页项数 | 非必要 | 默认为50 |
|
||||||
|
| pn | num | 页码 | 非必要 | 默认为1<br />其他用户仅可查看前5页 |
|
||||||
|
|
||||||
**json回复:**
|
**json回复:**
|
||||||
|
|
||||||
@@ -268,11 +269,12 @@ data 对象:
|
|||||||
|
|
||||||
**示例:**
|
**示例:**
|
||||||
|
|
||||||
获取用户`UID=293793435`的关注明细
|
获取用户`UID=293793435`的关注明细,按照关注顺序
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -G 'http://api.bilibili.com/x/relation/ollowings'\
|
curl -G 'http://api.bilibili.com/x/relation/ollowings'\
|
||||||
--data-urlencode 'vmid=293793435'\
|
--data-urlencode 'vmid=293793435'\
|
||||||
|
--data-urlencode 'order_type='\
|
||||||
--data-urlencode 'ps=2'\
|
--data-urlencode 'ps=2'\
|
||||||
--data-urlencode 'pn=1'\
|
--data-urlencode 'pn=1'\
|
||||||
-b 'SESSDATA=xxx'
|
-b 'SESSDATA=xxx'
|
||||||
@@ -1022,12 +1024,13 @@ curl 'http://api.bilibili.com/x/relation/tags'\
|
|||||||
|
|
||||||
**url参数:**
|
**url参数:**
|
||||||
|
|
||||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||||
| ---------- | ---- | ------------ | ----------- | ---------------------------------- |
|
| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- |
|
||||||
| access_key | str | APP登录Token | APP方式必要 | |
|
| access_key | str | APP登录Token | APP方式必要 | |
|
||||||
| tagid | num | 分组ID | 必要 | 特别关注恒为-10<br />默认分组恒为0 |
|
| tagid | num | 分组ID | 必要 | 特别关注恒为-10<br />默认分组恒为0 |
|
||||||
| ps | num | 每页项数 | 非必要 | 默认为50 |
|
| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空<br />按照最常访问排列:attention |
|
||||||
| pn | num | 页数 | 非必要 | 默认为1 |
|
| ps | num | 每页项数 | 非必要 | 默认为50 |
|
||||||
|
| pn | num | 页数 | 非必要 | 默认为1 |
|
||||||
|
|
||||||
**json回复:**
|
**json回复:**
|
||||||
|
|
||||||
@@ -1087,11 +1090,12 @@ curl 'http://api.bilibili.com/x/relation/tags'\
|
|||||||
|
|
||||||
**示例:**
|
**示例:**
|
||||||
|
|
||||||
以每页2项的方式获取了ID为`207542`分组的第1页的粉丝明细
|
以每页2项的方式获取了ID为`207542`分组的第1页的粉丝明细,按照关注顺序
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -G 'http://api.bilibili.com/x/relation/tag'\
|
curl -G 'http://api.bilibili.com/x/relation/tag'\
|
||||||
--data-urlencode 'tagid=207542'\
|
--data-urlencode 'tagid=207542'\
|
||||||
|
--data-urlencode 'order_type='\
|
||||||
--data-urlencode 'ps=2'\
|
--data-urlencode 'ps=2'\
|
||||||
--data-urlencode 'pn=1'\
|
--data-urlencode 'pn=1'\
|
||||||
-b 'SESSDATA=xxx'
|
-b 'SESSDATA=xxx'
|
||||||
|
|||||||
Reference in New Issue
Block a user