返回提交历史
Modified
README.md
+1
-0
Modified
docs/danmaku/action.md
+16
-96
Modified
docs/danmaku/danmaku_proto.md
+34
-29
Added
docs/danmaku/thumbup.md
+104
-0
XFEstudio/bilibili-API-collect
update 【danmaku thumbup list】 APIDoc
87d56b6
代码差异
4 个文件
+155
-125
@@ -122,6 +122,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接
122
122
- [ ] 智能防挡弹幕
123
123
- [x] [弹幕个人配置修改](docs/danmaku/config.md)
124
124
- [x] [名词解释](docs/danmaku/buzzword.md)
125
- [x] [点赞查询](docs/danmaku/thumbup.md)
125
126
- [x] [视频笔记](docs/note)
126
127
- [x] [笔记列表](docs/note/list.md)
127
128
- [x] [笔记详细信息](docs/note/info.md)
@@ -483,88 +483,6 @@ curl -G 'https://api.bilibili.com/x/dm/adv/state' \
483
483
484
484
</details>
485
485
486
## 查询弹幕点赞数
487
488
> https://api.bilibili.com/x/v2/dm/thumbup/stats
489
490
*请求方式:GET*
491
492
认证方式:Cookie(SESSDATA)或APP
493
494
**url参数:**
495
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
496
| ---------- | ---- | ------------ | ----------- | ------------------- |
497
| access_key | str | APP登录Token | APP方式必要 | |
498
| oid | num | 视频cid | 必要 | |
499
| ids | nums | 弹幕dmid列表 | 必要 | 多个id之间用`,`分隔 |
500
501
**json回复**
502
503
根对象:
504
505
| 字段 | 类型 | 内容 | 备注 |
506
| ------- | ---- | -------- | --------------------------- |
507
| code | num | 返回值 | 0:成功<br />-400:请求错误 |
508
| message | str | 错误信息 | 默认为0 |
509
| ttl | num | 1 | |
510
| data | obj | 信息本体 | |
511
512
`data`对象:
513
514
| 字段 | 类型 | 内容 | 备注 |
515
| -------- | ---- | ---------------- | --------------------------------- |
516
| {弹幕id} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 |
517
| …… | obj | 弹幕id对应的信息 | |
518
519
`{弹幕id}`对象:
520
521
| 字段 | 类型 | 内容 | 备注 |
522
| --------- | ---- | -------- | ------------------------------------------------------------ |
523
| likes | num | 点赞数 | |
524
| user_like | num | 是否点赞 | 0:未点赞<br />1:已点赞<br />需要登录(Cookie或APP) <br />未登录恒为0 |
525
| id_str | str | 弹幕dmid | |
526
527
**示例**
528
529
查询`cid=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数
530
531
```shell
532
curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
533
-b 'SESSDATA=xxx'
534
```
535
536
<details>
537
<summary>查看响应示例:</summary>
538
539
```json
540
{
541
"code": 0,
542
"message": "0",
543
"ttl": 1,
544
"data": {
545
"38880975220375559": {
546
"likes": 1,
547
"user_like": 1,
548
"id_str": "38880975220375559"
549
},
550
"39019145405661191": {
551
"likes": 3,
552
"user_like": 1,
553
"id_str": "39019145405661191"
554
},
555
"39052528418553863": {
556
"likes": 2,
557
"user_like": 0,
558
"id_str": "39052528418553863"
559
}
560
}
561
}
562
```
563
564
</details>
565
566
486
## 点赞弹幕
567
487
568
488
> https://api.bilibili.com/x/v2/dm/thumbup/add
@@ -573,16 +491,18 @@ curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
573
491
574
492
认证方式:Cookie(SESSDATA)或APP
575
493
494
查询指定弹幕点赞状态参阅文档 [弹幕点赞查询](thumbup.md)
495
576
496
**正文参数( application/x-www-form-urlencoded ):**
577
497
578
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
579
| ---------- | ---- | ------------------------ | -------------- | ------------------------ |
580
| access_key | str | APP登录Token | APP方式必要 | |
581
| dmid | num | 弹幕dmid | 必要 | |
582
| oid | num | 视频cid | 必要 | |
583
| op | num | 操作 | 必要 | 1:点赞<br />2:取消点赞 |
584
| platform | str | 平台 | 非必要 | |
585
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
498
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
499
| ---------- | ---- | ------------------------- | --------------- | ------------------------------------------- |
500
| access_key | str | APP 登录 Token | APP 方式必要 | |
501
| dmid | num | 目标弹幕 dmid | 必要 | |
502
| oid | num | 目标弹幕所在视频 cid | 必要 | |
503
| op | num | 操作 | 必要 | 1:点赞<br />2:取消点赞 |
504
| platform | str | 平台标识 | 非必要 | web_player:web 播放器<br />android:安卓端 |
505
| csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 | |
586
506
587
507
**json回复:**
588
508
@@ -600,12 +520,12 @@ curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
600
520
601
521
```shell
602
522
curl 'https://api.bilibili.com/x/v2/dm/thumbup/add' \
603
-b 'SESSDATA=xxx'
523
--data-urlencode 'dmid=35600074482384899' \
524
--data-urlencode 'oid=145928946' \
525
--data-urlencode 'op=1' \
526
--data-urlencode 'platform=web_player' \
527
--data-urlencode 'csrf=xxx' \
528
-b 'SESSDATA=xxx'
604
529
```
605
530
606
531
<details>
@@ -1,8 +1,8 @@
1
1
# protobuf弹幕
2
2
3
2020年5月23日,哔哩哔哩网页端及移动端启用了新的默认弹幕api,网页端弹幕显示的上限变为原弹幕池上限的两倍。
3
2020年5月23日,哔哩哔哩网页端及移动端启用了新的默认弹幕 API,网页端弹幕显示的上限变为原弹幕池上限的两倍。
4
4
5
新的api是以6分钟为一个单位加载,即每次加载6分钟内的弹幕
5
新的 API 是以 6min 为一个单位加载,即每次加载 6min 内的弹幕
6
6
7
7
## 获取实时弹幕
8
8
@@ -18,26 +18,29 @@
18
18
19
19
只能返回普通弹幕(`pool=1` `mode=1-7`)和代码弹幕(`pool=2` `mode=8`),BAS弹幕(`pool=2` `mode=9`)请从[弹幕元数据](danmaku_view_proto.md)中获取
20
20
21
互动弹幕(UP主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取
21
互动弹幕(UP 主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取
22
22
23
**注:仅获取6min的整数倍时间内的弹幕,6min内最多弹幕数为6000条(如第一包中弹幕`progress`值域为0-360000)**
23
**注:仅获取 6min 的整数倍时间内的弹幕,6min 内最多弹幕数为 6000 条(如第一包中弹幕`progress`值域为0-360000)**
24
24
25
25
**url参数:**
26
26
27
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
28
| ------------- | ---- | -------- | ------ | ----------- |
29
| type | num | 弹幕类 | 必要 | 1:视频弹幕 |
30
| oid | num | 视频cid | 必要 | |
31
| pid | num | 稿件avid | 非必要 | |
32
| segment_index | num | 分包 | 必要 | 6分钟一包 |
27
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
28
| ------------- | ---- | --------- | ------ | ---------------------------- |
29
| type | num | 弹幕类 | 必要 | 1:视频弹幕<br />2:漫画弹幕 |
30
| oid | num | 视频 cid | 必要 | |
31
| pid | num | 稿件 avid | 非必要 | |
32
| segment_index | num | 分包 | 必要 | 6min 一包 |
33
| pull_mode | num | (?) | 非必要 | |
34
| ps | num | (?) | 非必要 | |
35
| pe | num | (?) | 非必要 | |
33
36
34
37
**proto回复:**
35
38
36
proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api/bilibili/community/service/dm/v1/dm.proto)
39
proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../../grpc_api/bilibili/community/service/dm/v1/dm.proto)
37
40
38
- [protogen.marcgravell](https://protogen.marcgravell.com/): 在线编译protogen工具, 无需再安装本地编译器(生成文件需加后缀‘_pb2.py‘才可使用)
41
- [protogen.marcgravell](https://protogen.marcgravell.com/): 在线编译 protogen 工具, 无需再安装本地编译器(生成文件需加后缀`_pb2.py`才可使用)
39
42
40
- [protobuf pip](https://pypi.org/project/protobuf/): 可一键安装的python的protogen解析库
43
- [protobuf pip](https://pypi.org/project/protobuf/): 可一键安装的 Python 的 protogen 解析库
41
44
42
45
消息`DmSegMobileReply`:
43
46
@@ -47,26 +50,28 @@ proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api
47
50
48
51
消息`DanmakuElem`:
49
52
50
| 名称 | 类型 | 含义 | 备注 |
51
| -------- | ------ | ------------------ | ------------------------------------------------------------ |
52
| id | int64 | 弹幕dmid | 唯一 可用于操作参数 |
53
| progress | int32 | 视频内弹幕出现时间 | 毫秒 |
54
| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕<br />4:底部弹幕<br />5:顶部弹幕<br />6:逆向弹幕<br />7:高级弹幕<br />8:代码弹幕<br />9:BAS弹幕(仅限于特殊弹幕专包) |
55
| fontsize | int32 | 弹幕字号 | 18:小<br />25:标准<br />36:大 |
56
| color | uint32 | 弹幕颜色 | 十进制RGB888值 |
57
| midHash | string | 发送者mid的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id |
58
| content | string | 弹幕内容 | utf-8编码 |
59
| ctime | int64 | 弹幕发送时间 | 时间戳 |
60
| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出<br />范围:[0-10]<br />值越大权重越高 |
61
| action | string | 动作? | 作用尚不明确 |
62
| pool | int32 | 弹幕池 | 0:普通池<br />1:字幕池<br />2:特殊池(代码/BAS弹幕) |
63
| idStr | string | 弹幕dmid | 字串形式<br />唯一 可用于操作参数 |
53
| 名称 | 类型 | 含义 | 备注 |
54
| --------- | ------ | ------------------ | ------------------------------------------------------------ |
55
| id | int64 | 弹幕 dmid | 唯一 可用于操作参数 |
56
| progress | int32 | 视频内弹幕出现时间 | 毫秒 |
57
| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕<br />4:底部弹幕<br />5:顶部弹幕<br />6:逆向弹幕<br />7:高级弹幕<br />8:代码弹幕<br />9:BAS 弹幕(仅限于特殊弹幕专包) |
58
| fontsize | int32 | 弹幕字号 | 18:小<br />25:标准<br />36:大 |
59
| color | uint32 | 弹幕颜色 | 十进制 RGB888 值 |
60
| midHash | string | 发送者 mid 的 HASH | 用于屏蔽用户和查看用户发送的所有弹幕,也可反查用户id |
61
| content | string | 弹幕内容 | utf-8编码 |
62
| ctime | int64 | 弹幕发送时间 | 时间戳 |
63
| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出<br />范围:[0-10]<br />值越大权重越高 |
64
| action | string | 动作? | |
65
| pool | int32 | 弹幕池 | 0:普通池<br />1:字幕池<br />2:特殊池(代码/BAS弹幕) |
66
| idStr | string | 弹幕 dmid | 字串形式<br />唯一 可用于操作参数 |
67
| attr | int32 | 弹幕属性位 | bit0:保护<br />bit1:直播<br />bit2:高赞 |
68
| animation | string | 动画? | |
64
69
65
70
**示例:**
66
71
67
获取视频`av810872(cid=1176840)`(炮姐)的实时弹幕分包1
72
获取视频`av810872(cid=1176840)`(炮姐)的实时弹幕分包 1
68
73
69
**注:[proto定义](../grpc_api/bilibili/community/service/dm/v1/dm.proto)需要编译,`bilibili.community.service.dm.v1.dm_pb2`并非通过pypi安装**
74
**注:以下[proto定义](../grpc_api/bilibili/community/service/dm/v1/dm.proto)需要编译,`bilibili.community.service.dm.v1.dm_pb2`并非通过 pypi 安装**
70
75
71
76
```python
72
77
import requests
@@ -0,0 +1,104 @@
1
# 弹幕点赞查询
2
3
## 查询指定dmid的点赞数
4
5
> https://api.bilibili.com/x/v2/dm/thumbup/stats
6
7
*请求方式:GET*
8
9
**url参数:**
10
11
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
12
| ------ | ---- | ----------------- | ------ | --------------------- |
13
| oid | num | 视频 cid | 必要 | |
14
| ids | nums | 欲查询的弹幕 dmid | 必要 | 多个 id 之间用`,`分隔 |
15
16
**json回复:**
17
18
根对象:
19
20
| 字段 | 类型 | 内容 | 备注 |
21
| ------- | ---- | -------------------------- | --------------------------- |
22
| code | num | 返回值 | 0:成功<br />-400:请求错误 |
23
| message | str | 错误信息 | 默认为 0 |
24
| ttl | num | 1 | |
25
| data | obj | 弹幕 id 与之对应数据的 Map | |
26
27
`data`对象:
28
29
| 字段 | 类型 | 内容 | 备注 |
30
| ----------- | ---- | -------------------------- | ---- |
31
| {弹幕 dmid} | obj | {弹幕 dmid} 对应的点赞信息 | |
32
33
`{弹幕 dmid}`对象:
34
35
| 字段 | 类型 | 内容 | 备注 |
36
| -------------------- | ---- | ---------------------- | ------------------------------------------------------- |
37
| likes | num | 对应弹幕所获得的点赞数 | |
38
| user_like | num | 当前用户是否点赞 | 0:未点赞<br />1:已点赞<br />需要登录(Cookie 或 APP) |
39
| id_str | str | 弹幕 dmid 字符串形式 | |
40
| show_threshold | num | (?) | |
41
| reply_count | num | (?) | |
42
| gray_release_control | obj | (?) | |
43
44
`gray_release_control`对象:
45
46
| 字段 | 类型 | 内容 | 备注 |
47
| ------------- | ---- | ------ | ---- |
48
| show_dm_reply | bool | (?) | |
49
50
**示例:**
51
52
获取视频 BV1AP411d7Qa 1P(cid=1131648710)下的几个弹幕 dmid`1318231376180646144,1318231518484950784,1318231736680887808`
53
54
```bash
55
curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
56
--data-urlencode 'oid=1131648710' \
57
--data-urlencode 'ids=1318231376180646144,1318231518484950784,1318231736680887808' \
58
-b 'SESSDATA=xxx'
59
```
60
61
<details>
62
<summary>查看响应示例:</summary>
63
64
```json
65
{
66
"code": 0,
67
"message": "0",
68
"ttl": 1,
69
"data": {
70
"1318231376180646144": {
71
"likes": 0,
72
"user_like": 0,
73
"id_str": "1318231376180646144",
74
"show_threshold": 10,
75
"reply_count": 0,
76
"gray_release_control": {
77
"show_dm_reply": false
78
}
79
},
80
"1318231518484950784": {
81
"likes": 0,
82
"user_like": 0,
83
"id_str": "1318231518484950784",
84
"show_threshold": 10,
85
"reply_count": 0,
86
"gray_release_control": {
87
"show_dm_reply": false
88
}
89
},
90
"1318231736680887808": {
91
"likes": 0,
92
"user_like": 0,
93
"id_str": "1318231736680887808",
94
"show_threshold": 10,
95
"reply_count": 0,
96
"gray_release_control": {
97
"show_dm_reply": false
98
}
99
}
100
}
101
}
102
```
103
104
</details>