Skip to content

Snoopy1866/bilibili-danmu-block-list

Repository files navigation

bilibili-danmu-block-list

uv GitHub License GitHub Downloads (all assets, all releases) GitHub Release

本仓库收集哔哩哔哩弹幕屏蔽规则。

查看 规则清单.md | 规则清单.json

使用说明

如何导入规则

Note

你只能在 web 端导入规则。

  1. 前往 Release 下载名为 bilibili-danmu-blocklist-output.json 的最新版规则文件。

  2. 进入任意哔哩哔哩视频页面,点击 弹幕列表 右侧的 ⠇,选择 屏蔽设定step1

  3. 在内容空白处右键,选择 导入json文件step2

  4. 在弹出的窗口中,找到在步骤 1 中下载的 json 文件,点击 打开 即可。

如何清空规则

分别切换到 屏蔽文本屏蔽正则 标签,按 F12 打开开发者工具,在 控制台 中执行以下代码:

document
  .querySelectorAll("span.bpx-player-block-list-delete")
  .forEach((button) => {
    button.click();
  });

如何同步规则

分别切换到 屏蔽文本屏蔽正则 标签,按 F12 打开开发者工具,在 控制台 中执行以下代码:

document
  .querySelectorAll("span.bpx-player-block-list-sync")
  .forEach((button) => {
    button.click();
  });

如果出现下图中部分规则未上传的情况,请尝试重复执行上述代码,大部分规则均可以上传成功。

block list sync not completed

Tip

上传成功后,可以在移动端 app 内打开任意视频,进入全屏,点击左下角 弹幕设置,进入 更多工具 -> 添加屏蔽词,点击右上角 同步,即可将 web 端设置的屏蔽规则同步到 app 端,具体操作步骤如下:

step1

step2

step3

Warning

存在少数无法上传的规则,原因未知,这些规则只能单独在 web 端使用,例如:

  • (?<!乾)坤
  • (没|难)?((?<!鹬)蚌|崩|绷)(埠|不)?(住)?(了)?

Warning

尽管通过上述方式可以将 web 端的规则同步到移动端,但实际上仍然存在部分规则无法在移动端生效的情况,原因未知。

其他说明

  • 如果你需要配合 pakku.js 使用,建议关闭弹幕数量标记显示,否则部分规则可能无法生效。 other-pakku.js

贡献指南

推荐使用 VSCode 编辑规则文件。

前置要求

  1. 克隆本仓库

    git clone https://github.com/Snoopy1866/bilibili-danmu-block-list.git
  2. 初始化项目

    uv sync
  3. 新建一个分支,名称任意(例如:feat

    git checkout -b feat
  4. 修改 bilibili-danmu-blocklist.json

  5. 提交更改并推送

    git add .
    git commit -m "feat: update rules"
    git push origin feat
  6. 发起 Pull Request

bilibili-danmu-blocklist.json 字段解释

哔哩哔哩识别的字段:

名称 含义 类型 必要性 取值
type 规则类型 int required [0,1,2]
filter 规则内容 string required Any
opened 规则是否启用 boolean required true | false
id 规则唯一标识符 int optional Any

Note

id 字段本应作为规则的唯一标识符,以便在更新规则文件时相同 id 的规则可以被正确覆盖, 但实际上导入规则文件后,哔哩哔哩会重新生成一个新的 id 值,这使得规则的原地更新无法实现。

尽管如此,本仓库仍然保留 id 字段,以便在发布 Release 时能够正确识别发生变更的规则。

本仓库添加的字段:

名称 含义 类型 必要性 可选值
description 规则描述 string optional Any
examples 规则匹配示例 Array[string] optional Any
excludeExamples 规则排除示例 Array[string] optional Any

Note

  1. excludeExamples 字段用于辅助正则表达式的编写,尽可能避免错杀正常弹幕。
  2. description 字段暂未启用,后续可能会移除。

Important

  1. 请不要添加 type=2 的规则,这类规则用于屏蔽指定 UID 的用户发出的弹幕,你应该自行添加这类规则,而不是在公共仓库中添加。
  2. 请不要添加 id 字段,该字段会在你提交 PR 后根据当前时间戳(精确到纳秒)自动生成。
  3. 添加或修改 屏蔽正则 类型的规则需注意:
    • 使用 \\ 代替 \,例如:使用 \\d+ 代替 \d+,这是因为 json 字符串本身需要对字符 \ 进行转义
    • 不要使用类似 (阿巴)* 这样的正则表达式,在缺少定位符 ^$ 的情况下使用 * 会导致所有弹幕都被屏蔽

相关链接

类似的仓库