B站直播弹幕关键词过滤接口详解:哔哩哔哩-API收集整理中的内容净化功能
在B站直播中,弹幕是观众互动的重要方式,但不良弹幕会影响观看体验。本文将详细介绍哔哩哔哩-API收集整理项目中与弹幕关键词过滤相关的接口功能,帮助开发者实现内容净化。## 弹幕内容管理模块概述哔哩哔哩-API收集整理项目的`docs/danmaku/`目录下包含了丰富的弹幕相关接口文档,其中与内容净化相关的主要有:- [弹幕操作接口](https://gitcode.com/GitHu...
B站直播弹幕关键词过滤接口详解:哔哩哔哩-API收集整理中的内容净化功能
在B站直播中,弹幕是观众互动的重要方式,但不良弹幕会影响观看体验。本文将详细介绍哔哩哔哩-API收集整理项目中与弹幕关键词过滤相关的接口功能,帮助开发者实现内容净化。
弹幕内容管理模块概述
哔哩哔哩-API收集整理项目的docs/danmaku/目录下包含了丰富的弹幕相关接口文档,其中与内容净化相关的主要有:
热词解释接口:关键词识别基础
热词解释接口(buzzword)是实现关键词过滤的基础,它能帮助识别B站特有的网络流行语和潜在不良词汇。该接口位于docs/danmaku/buzzword.md,主要提供两个功能:
拉取名词解释列表
通过GET请求获取特定类型的热词列表:
https://api.bilibili.com/x/v2/dm/buzzword/list
主要参数:
type_id:名词类型(4代表"哔哩哔哩热词图鉴",5代表"语言类")pn:页码(默认1)ps:每页项数(默认20)
示例请求:
curl -G 'https://api.bilibili.com/x/v2/dm/buzzword/list' \
--data-urlencode 'type_id=4' \
--data-urlencode 'ps=10' \
--data-urlencode 'pn=1'
响应中包含热词ID、名称和图片URL,如"麦乐鸡侠"、"金钱豹"等网络流行语。
查询名词解释详情
通过热词ID获取详细解释:
https://api.bilibili.com/x/v2/dm/buzzword/detail
主要参数:
id:名词ID(如1代表"kksk",2代表"打脸")
响应包含热词的详细解释、相关UP主和视频信息,有助于判断该词汇是否适合在特定场景中出现。
弹幕举报接口:主动内容过滤
当检测到不良弹幕时,可以通过举报接口进行处理。该接口定义在docs/danmaku/action.md中,路径为:
https://api.bilibili.com/x/dm/report/add
请求参数
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| cid | num | 视频cid | 必要 | |
| dmid | num | 弹幕dmid | 必要 | |
| reason | num | 举报类型 | 必要 | 类型代码见下表 |
| content | str | 其他举报备注 | 非必要 | reason=11时有效 |
| csrf | str | CSRF Token | Cookie方式必要 |
举报类型代码
| 代码 | 含义 |
|---|---|
| 1 | 违法违禁 |
| 2 | 色情低俗 |
| 3 | 非法交易 |
| 4 | 人身攻击 |
| 5 | 侵犯隐私 |
| 6 | 垃圾广告 |
| 7 | 引战 |
| 8 | 剧透 |
| 9 | 恶意刷屏 |
| 10 | 视频无关 |
| 11 | 其他 |
| 12 | 青少年不良 |
示例请求
curl 'https://api.bilibili.com/x/dm/report/add' \
--data-urlencode 'cid=145928946' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'reason=7' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
智能防挡弹幕:提升观看体验
除了关键词过滤,B站还提供了智能防挡弹幕功能,通过蒙版技术让弹幕避开视频重要内容。相关文档位于docs/danmaku/webmask.md。
webmask文件结构
webmask是一个二进制文件,包含视频不同时间段的蒙版信息。文件结构如下:
| name | offset | length | type | desc |
|---|---|---|---|---|
| mask | 0 | 4 | char | 'MASK' 文件头 |
| version | 4 | 4 | int | 版本号,目前为1 |
| Ly | 12 | 4 | int | 后续数据的段数 |
| time_1 | 16 | 8 | long | 第一段对应视频开始时间 |
| offset_1 | 24 | 8 | long | 第一段蒙版信息开始处对应二进制偏移 |
蒙版信息块经过gzip压缩,解压缩后包含SVG格式的蒙版数据,可以直接用于渲染。
Python解析示例
from struct import unpack
import gzip
f = open('你的 webmask', 'rb')
buf = f.read()
_Ly = buf[12:16]
Ly = unpack('>i', _Ly)[0] # 大端序 int
times = []
offsets = []
for idx in range(Ly):
op = 16 + idx * 16
time = unpack('>q', buf[op: op+8])[0]
offset = unpack('>q', buf[op+8: op+16])[0]
times.append(time)
offsets.append(offset)
frames = []
for idx in range(Ly):
op = offsets[idx]
if idx == Ly - 1:
ed = len(buf)
else:
ed = offsets[idx+1]
ba = buf[op: ed]
bad = gzip.decompress(ba)
badl = bad.split(b'data:image/svg+xml;base64,')
frames.append(badl[1: ])
弹幕管理接口:批量操作
对于UP主或有管理权限的用户,可以通过弹幕管理接口批量删除或保护弹幕,接口定义在docs/danmaku/action.md:
https://api.bilibili.com/x/v2/dm/edit/state
请求参数
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 |
| oid | num | 视频cid | 必要 | |
| dmids | nums | 弹幕dmid | 必要 | 多个id之间用,分隔 |
| state | num | 操作代码 | 必要 | 1:删除弹幕 2:弹幕保护 3:取消保护 |
| csrf | str | CSRF Token | Cookie方式必要 |
示例请求
curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'dmids=35600074482384899,39067304918515717' \
--data-urlencode 'state=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
总结与最佳实践
B站提供了一系列API来实现弹幕内容的净化,主要包括:
- 热词识别:通过buzzword接口识别潜在不良词汇
- 主动举报:使用report接口举报不良弹幕
- 批量管理:通过edit/state接口批量处理弹幕
- 智能防挡:利用webmask提升观看体验
建议开发者结合这些接口,实现多层次的内容净化策略:
- 实时监控:利用热词接口识别可能的不良内容
- 自动处理:对明确违规的内容自动提交举报
- 人工审核:建立人工审核机制处理模糊情况
- 用户反馈:允许用户标记不良内容,不断优化过滤算法
通过合理组合使用这些接口,可以有效提升直播弹幕的质量,创造更好的观看体验。完整的API文档请参考项目中的docs/danmaku/目录。
网易易盾是国内领先的数字内容风控服务商,依托网易二十余年的先进技术和一线实践经验沉淀,为客户提供专业可靠的安全服务,涵盖内容安全、业务安全、应用安全、安全专家服务四大领域,全方位保障客户业务合规、稳健和安全运营。
更多推荐


所有评论(0)