From 87d56b66e7ce375029bccf9efda5314964b0528d Mon Sep 17 00:00:00 2001 From: SocialSisterYi <1440239038@qq.com> Date: Wed, 17 May 2023 09:42:12 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E3=80=90danmaku=20thumbup=20list?= =?UTF-8?q?=E3=80=91=20APIDoc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + docs/danmaku/action.md | 112 +++++----------------------------- docs/danmaku/danmaku_proto.md | 63 ++++++++++--------- docs/danmaku/thumbup.md | 104 +++++++++++++++++++++++++++++++ 4 files changed, 155 insertions(+), 125 deletions(-) create mode 100644 docs/danmaku/thumbup.md diff --git a/README.md b/README.md index c1f2983..8e59c88 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接 - [ ] 智能防挡弹幕 - [x] [弹幕个人配置修改](docs/danmaku/config.md) - [x] [名词解释](docs/danmaku/buzzword.md) + - [x] [点赞查询](docs/danmaku/thumbup.md) - [x] [视频笔记](docs/note) - [x] [笔记列表](docs/note/list.md) - [x] [笔记详细信息](docs/note/info.md) diff --git a/docs/danmaku/action.md b/docs/danmaku/action.md index 309f5e0..1b26a3b 100644 --- a/docs/danmaku/action.md +++ b/docs/danmaku/action.md @@ -483,88 +483,6 @@ curl -G 'https://api.bilibili.com/x/dm/adv/state' \ -## 查询弹幕点赞数 - -> https://api.bilibili.com/x/v2/dm/thumbup/stats - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| oid | num | 视频cid | 必要 | | -| ids | nums | 弹幕dmid列表 | 必要 | 多个id之间用`,`分隔 | - -**json回复** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------------- | --------------------------------- | -| {弹幕id} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 | -| …… | obj | 弹幕id对应的信息 | | - -`{弹幕id}`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------- | ------------------------------------------------------------ | -| likes | num | 点赞数 | | -| user_like | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie或APP)
未登录恒为0 | -| id_str | str | 弹幕dmid | | - -**示例** - -查询`cid=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数 - -```shell -curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \ ---data-urlencode 'oid=236871317' \ ---data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "38880975220375559": { - "likes": 1, - "user_like": 1, - "id_str": "38880975220375559" - }, - "39019145405661191": { - "likes": 3, - "user_like": 1, - "id_str": "39019145405661191" - }, - "39052528418553863": { - "likes": 2, - "user_like": 0, - "id_str": "39052528418553863" - } - } -} -``` - -
- ## 点赞弹幕 > https://api.bilibili.com/x/v2/dm/thumbup/add @@ -573,16 +491,18 @@ curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \ 认证方式:Cookie(SESSDATA)或APP +查询指定弹幕点赞状态参阅文档 [弹幕点赞查询](thumbup.md) + **正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| dmid | num | 弹幕dmid | 必要 | | -| oid | num | 视频cid | 必要 | | -| op | num | 操作 | 必要 | 1:点赞
2:取消点赞 | -| platform | str | 平台 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------- | --------------- | ------------------------------------------- | +| access_key | str | APP 登录 Token | APP 方式必要 | | +| dmid | num | 目标弹幕 dmid | 必要 | | +| oid | num | 目标弹幕所在视频 cid | 必要 | | +| op | num | 操作 | 必要 | 1:点赞
2:取消点赞 | +| platform | str | 平台标识 | 非必要 | web_player:web 播放器
android:安卓端 | +| csrf | str | CSRF Token(位于 Cookie) | Cookie 方式必要 | | **json回复:** @@ -600,12 +520,12 @@ curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \ ```shell curl 'https://api.bilibili.com/x/v2/dm/thumbup/add' \ ---data-urlencode 'dmid=35600074482384899' \ ---data-urlencode 'oid=145928946' \ ---data-urlencode 'op=1' \ ---data-urlencode 'platform=web_player' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' + --data-urlencode 'dmid=35600074482384899' \ + --data-urlencode 'oid=145928946' \ + --data-urlencode 'op=1' \ + --data-urlencode 'platform=web_player' \ + --data-urlencode 'csrf=xxx' \ + -b 'SESSDATA=xxx' ```
diff --git a/docs/danmaku/danmaku_proto.md b/docs/danmaku/danmaku_proto.md index 4835202..b3171bf 100644 --- a/docs/danmaku/danmaku_proto.md +++ b/docs/danmaku/danmaku_proto.md @@ -1,8 +1,8 @@ # protobuf弹幕 -2020年5月23日,哔哩哔哩网页端及移动端启用了新的默认弹幕api,网页端弹幕显示的上限变为原弹幕池上限的两倍。 +2020年5月23日,哔哩哔哩网页端及移动端启用了新的默认弹幕 API,网页端弹幕显示的上限变为原弹幕池上限的两倍。 -新的api是以6分钟为一个单位加载,即每次加载6分钟内的弹幕 +新的 API 是以 6min 为一个单位加载,即每次加载 6min 内的弹幕 ## 获取实时弹幕 @@ -18,26 +18,29 @@ 只能返回普通弹幕(`pool=1` `mode=1-7`)和代码弹幕(`pool=2` `mode=8`),BAS弹幕(`pool=2` `mode=9`)请从[弹幕元数据](danmaku_view_proto.md)中获取 -互动弹幕(UP主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取 +互动弹幕(UP 主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取 -**注:仅获取6min的整数倍时间内的弹幕,6min内最多弹幕数为6000条(如第一包中弹幕`progress`值域为0-360000)** +**注:仅获取 6min 的整数倍时间内的弹幕,6min 内最多弹幕数为 6000 条(如第一包中弹幕`progress`值域为0-360000)** **url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------- | ---- | -------- | ------ | ----------- | -| type | num | 弹幕类 | 必要 | 1:视频弹幕 | -| oid | num | 视频cid | 必要 | | -| pid | num | 稿件avid | 非必要 | | -| segment_index | num | 分包 | 必要 | 6分钟一包 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------- | ---- | --------- | ------ | ---------------------------- | +| type | num | 弹幕类 | 必要 | 1:视频弹幕
2:漫画弹幕 | +| oid | num | 视频 cid | 必要 | | +| pid | num | 稿件 avid | 非必要 | | +| segment_index | num | 分包 | 必要 | 6min 一包 | +| pull_mode | num | (?) | 非必要 | | +| ps | num | (?) | 非必要 | | +| pe | num | (?) | 非必要 | | **proto回复:** -proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api/bilibili/community/service/dm/v1/dm.proto) +proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../../grpc_api/bilibili/community/service/dm/v1/dm.proto) -- [protogen.marcgravell](https://protogen.marcgravell.com/): 在线编译protogen工具, 无需再安装本地编译器(生成文件需加后缀‘_pb2.py‘才可使用) +- [protogen.marcgravell](https://protogen.marcgravell.com/): 在线编译 protogen 工具, 无需再安装本地编译器(生成文件需加后缀`_pb2.py`才可使用) -- [protobuf pip](https://pypi.org/project/protobuf/): 可一键安装的python的protogen解析库 +- [protobuf pip](https://pypi.org/project/protobuf/): 可一键安装的 Python 的 protogen 解析库 消息`DmSegMobileReply`: @@ -47,26 +50,28 @@ proto定义见:[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api 消息`DanmakuElem`: -| 名称 | 类型 | 含义 | 备注 | -| -------- | ------ | ------------------ | ------------------------------------------------------------ | -| id | int64 | 弹幕dmid | 唯一 可用于操作参数 | -| progress | int32 | 视频内弹幕出现时间 | 毫秒 | -| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS弹幕(仅限于特殊弹幕专包) | -| fontsize | int32 | 弹幕字号 | 18:小
25:标准
36:大 | -| color | uint32 | 弹幕颜色 | 十进制RGB888值 | -| midHash | string | 发送者mid的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id | -| content | string | 弹幕内容 | utf-8编码 | -| ctime | int64 | 弹幕发送时间 | 时间戳 | -| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出
范围:[0-10]
值越大权重越高 | -| action | string | 动作? | 作用尚不明确 | -| pool | int32 | 弹幕池 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | -| idStr | string | 弹幕dmid | 字串形式
唯一 可用于操作参数 | +| 名称 | 类型 | 含义 | 备注 | +| --------- | ------ | ------------------ | ------------------------------------------------------------ | +| id | int64 | 弹幕 dmid | 唯一 可用于操作参数 | +| progress | int32 | 视频内弹幕出现时间 | 毫秒 | +| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS 弹幕(仅限于特殊弹幕专包) | +| fontsize | int32 | 弹幕字号 | 18:小
25:标准
36:大 | +| color | uint32 | 弹幕颜色 | 十进制 RGB888 值 | +| midHash | string | 发送者 mid 的 HASH | 用于屏蔽用户和查看用户发送的所有弹幕,也可反查用户id | +| content | string | 弹幕内容 | utf-8编码 | +| ctime | int64 | 弹幕发送时间 | 时间戳 | +| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出
范围:[0-10]
值越大权重越高 | +| action | string | 动作? | | +| pool | int32 | 弹幕池 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | +| idStr | string | 弹幕 dmid | 字串形式
唯一 可用于操作参数 | +| attr | int32 | 弹幕属性位 | bit0:保护
bit1:直播
bit2:高赞 | +| animation | string | 动画? | | **示例:** -获取视频`av810872(cid=1176840)`(炮姐)的实时弹幕分包1 +获取视频`av810872(cid=1176840)`(炮姐)的实时弹幕分包 1 -**注:[proto定义](../grpc_api/bilibili/community/service/dm/v1/dm.proto)需要编译,`bilibili.community.service.dm.v1.dm_pb2`并非通过pypi安装** +**注:以下[proto定义](../grpc_api/bilibili/community/service/dm/v1/dm.proto)需要编译,`bilibili.community.service.dm.v1.dm_pb2`并非通过 pypi 安装** ```python import requests diff --git a/docs/danmaku/thumbup.md b/docs/danmaku/thumbup.md new file mode 100644 index 0000000..0d59ff9 --- /dev/null +++ b/docs/danmaku/thumbup.md @@ -0,0 +1,104 @@ +# 弹幕点赞查询 + +## 查询指定dmid的点赞数 + +> https://api.bilibili.com/x/v2/dm/thumbup/stats + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------------- | ------ | --------------------- | +| oid | num | 视频 cid | 必要 | | +| ids | nums | 欲查询的弹幕 dmid | 必要 | 多个 id 之间用`,`分隔 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------------------------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为 0 | +| ttl | num | 1 | | +| data | obj | 弹幕 id 与之对应数据的 Map | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | -------------------------- | ---- | +| {弹幕 dmid} | obj | {弹幕 dmid} 对应的点赞信息 | | + +`{弹幕 dmid}`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------------- | ---- | ---------------------- | ------------------------------------------------------- | +| likes | num | 对应弹幕所获得的点赞数 | | +| user_like | num | 当前用户是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie 或 APP) | +| id_str | str | 弹幕 dmid 字符串形式 | | +| show_threshold | num | (?) | | +| reply_count | num | (?) | | +| gray_release_control | obj | (?) | | + +`gray_release_control`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------ | ---- | +| show_dm_reply | bool | (?) | | + +**示例:** + +获取视频 BV1AP411d7Qa 1P(cid=1131648710)下的几个弹幕 dmid`1318231376180646144,1318231518484950784,1318231736680887808` + +```bash +curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \ + --data-urlencode 'oid=1131648710' \ + --data-urlencode 'ids=1318231376180646144,1318231518484950784,1318231736680887808' \ + -b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "1318231376180646144": { + "likes": 0, + "user_like": 0, + "id_str": "1318231376180646144", + "show_threshold": 10, + "reply_count": 0, + "gray_release_control": { + "show_dm_reply": false + } + }, + "1318231518484950784": { + "likes": 0, + "user_like": 0, + "id_str": "1318231518484950784", + "show_threshold": 10, + "reply_count": 0, + "gray_release_control": { + "show_dm_reply": false + } + }, + "1318231736680887808": { + "likes": 0, + "user_like": 0, + "id_str": "1318231736680887808", + "show_threshold": 10, + "reply_count": 0, + "gray_release_control": { + "show_dm_reply": false + } + } + } +} +``` + +