您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
识别多种时间格式;剔除无关弹幕;UI简化。
当前为
# 基于弹幕识别的跳过B站内置广告(v0.1发布!)
[](https://www.tampermonkey.net/) [](https://www.bilibili.com/) [](LICENSE)
这是一个UserScript脚本,用于在Bilibili(B站)视频页面中,通过分析弹幕(danmu)自动识别并跳过内置广告。脚本基于弹幕中的时间指令(如“快进到X分”)来检测可能的广告起始点(A)和结束点(B),并在视频播放到A时自动跳转到B。版本0.1新增了“快进指令提权”(优先保留并提升“快进到”等指令的权重)和“发布时长剔除”(排除视频开头表示“发布X分钟”的无关弹幕)功能。
## 功能概述
- **自动跳过广告**:基于弹幕识别广告段落(如开头广告),自动快进。
- **时间格式识别**:支持多种格式,如“X:Y”、“X分Y秒”、“X点Y”、“连续数字”(如“1234”解析为12:34)、“向右X下”等。
- **过滤机制**:排除打分类弹幕(e.g., “打X分”)、测量数据(e.g., “X米/Y秒”)、禁止标记(e.g., “+”、“%”)、以及视频开头“发布时长”弹幕(e.g., “发布一分钟”)。
- **权重计算**:优先考虑带有关键词的弹幕(如“快进到”、“广告跳过”),并通过聚类和支持弹幕提升权重。
- **UI面板**:右上角mini面板显示状态,展开后显示详细日志、候选列表和匹配弹幕。
- **配置灵活**:通过CONFIG对象调整参数,如最大弹幕加载数、权重阈值、跳过时长限制等。
脚本不修改视频内容,仅监控播放时间并调整currentTime。适用于B站视频页面(https://www.bilibili.com/video/*)。
## 安装方法
1. **安装Tampermonkey或其他UserScript管理器**:
- Chrome/Firefox:安装[Tampermonkey](https://www.tampermonkey.net/)扩展。
- Edge:安装Tampermonkey或类似扩展。
2. **安装脚本**:
- 下载脚本文件([基于弹幕识别的跳过B站内置广告(v0.1 快进提权 + 发布时长剔除)-0.1.user.js](script.user.js))。
- 在Tampermonkey仪表盘中,点击“+”新建脚本,或直接拖拽文件导入。
- 或者,通过Greasy Fork镜像或其他脚本托管平台安装(如果已上传)。
3. **权限**:
- 脚本需要`GM_xmlhttpRequest`和`GM_addStyle`权限,用于获取弹幕XML和添加UI样式。
安装后,访问B站视频页面,脚本会自动运行。
## 使用方法
1. **自动运行**:
- 打开B站视频页面(e.g., https://www.bilibili.com/video/BVxxxxxxxx)。
- 脚本会自动检测视频元素、解析CID(视频ID)、获取弹幕,并分析跳点。
- 右上角出现mini面板,显示“跳点: 等待”/“分析中”/“跳点: 有”/“跳点: 无”。
2. **UI交互**:
- 点击mini面板的“打开”按钮,展开详细面板。
- 面板显示:
- **弹幕匹配**:列出匹配的弹幕(A → B)。
- **候选时间对**:所有候选跳点,按权重排序。
- **日志**:详细过程记录,包括剔除原因、权重计算等。
- 点击“关闭”隐藏面板,返回mini模式。
3. **跳过触发**:
- 当视频播放到检测到的A点(±1秒窗口)时,自动跳转到B点。
- 日志会记录跳转事件。
4. **手动干预**:
- 无需手动操作,但如果跳点不准,可刷新页面重试(弹幕可能因缓存或权限变化)。
- 如果视频无弹幕或弹幕少,脚本可能无法检测跳点。
5. **调试**:
- 控制台(F12)会输出日志。
- 修改CONFIG参数自定义行为(e.g., 增加`maxDanmuLoad`加载更多弹幕)。
**注意**:脚本依赖弹幕质量。如果视频弹幕少/无关/被屏蔽,检测准确率降低。B站可能更新API导致CID/弹幕获取失败,请报告issue。
## 配置参数解释
脚本的CONFIG对象定义了核心参数,可在脚本开头修改:
- `maxDanmuLoad`: 最大加载弹幕数(默认6000,避免性能问题)。
- `fetchRetries`: 弹幕请求重试次数(默认3)。
- `triggerWindow`: 触发时间聚类窗口(秒,默认2)。
- `minDeltaSeconds`: 最小跳过时长(默认5秒)。
- `maxDeltaSeconds`: 最大跳过时长(默认300秒)。
- `weightWindowSeconds`: 权重支持弹幕窗口(默认20秒)。
- `minSkipDuration`: 最小有效跳过时长(默认5秒)。
- `maxSkipFraction`: 最大跳过比例(默认视频长度的0.5)。
- `baseWeight`: 基础权重(默认0.6)。
- `timeKwExtra`: 时间关键词额外权重(默认2.0)。
- `targetKwExtra`: 目标关键词额外权重(默认2.0)。
- `weightDanmuBoost`: 支持弹幕权重提升(默认2.5)。
- `clusterBoostFactor`: 聚类大小提升因子(默认0.5)。
- `forbiddenTokens`: 禁止标记列表(e.g., '+', '%', 用于排除无关弹幕)。
- `measurementTokens`: 测量标记列表(用于排除数据类弹幕)。
- `maxNonTimeCharsAllowed`: 最大非时间字符数(默认3,超过则降权)。
- `nonTimeCharsPenaltyFactor`: 非时间字符惩罚因子(默认0.2)。
- `acceptWeightThreshold`: 接受权重阈值(默认0.75)。
- `fastForwardBoost`: 快进指令权重提升(默认1.2)。
- `POSTAGE_WINDOW_SECONDS`: 发布时长窗口(默认25秒,视频开头内检查)。
- `POSTAGE_TARGET_SECONDS`: 发布时长目标(默认60秒,主要针对“1分钟”)。
关键词列表:
- `TIME_KEYWORDS`: 时间指令关键词(e.g., '快进', '跳到')。
- `WEIGHT_A_KEYWORDS`: A点权重关键词(e.g., '广告', '起手')。
- `WEIGHT_B_KEYWORDS`: B点权重关键词(e.g., '欢迎回来')。
## 脚本逻辑详细解释
脚本逻辑分为初始化、数据获取、分析处理和应用跳过四个阶段。以下逐一分解:
### 1. 初始化(runOnce函数)
- 创建UI:添加右上角mini面板和展开面板,使用DOM元素和CSS样式。
- 监听视频元素:使用MutationObserver等待`
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址