Skip to content

Releases: xmcp/pakku.js

2024.6.1

26 May 19:32
Compare
Choose a tag to compare

pakku 2024.6.1 版本主要增加了一些高级用户可能会用到的新功能,以及一些性能提升和 bug 修复。

以下是 2024.6.1 版本相比于 2024.5.1 的变化。

新功能

弹幕密度分析图更新

在此前的版本中,弹幕密度分析图并不会显示有多少弹幕被删除了(包括命中播放器屏蔽词和被自动弹幕优选功能删除的弹幕)。从 2024.6.1 版本起,弹幕密度分析图会把被删除弹幕的密度显示为一个独立的部分。

如下图所示,图中的蓝色、黄色、红色部分分别对应实际显示的、被合并的、被删除的弹幕密度。因此之前版本的红色对应现在的黄色。

image

另外,2024.6.1 版本还调整了弹幕密度分析图的密度计算公式,使其与 pakku 其他功能的计算方式相同。

通过用户脚本修改弹幕元信息

从 2024.6.1 版本起,用户脚本新增 tweak_proto_view API,可以修改播放器获取到的弹幕元信息(api.bilibili.com/x/v2/dm/web/view),详见 用户脚本文档

由于这是 B 站播放器的私有 API,pakku 不保证此接口的稳定性,也无法解释每个字段的准确含义。可以在播放器页面的 console 里搜索 “pakku protobuf api: got view” 来看看它的具体内容。

以下是一些利用此 API 可以实现的功能:

tweak_proto_view(view=>{
    // 删除视频中的一键三连按钮
    view.commandDms = view.commandDms.filter(d => d.command!=='#ATTENTION#');
    
    // 禁用表情弹幕,如 “OHH”
    view.expressions = [];
    
    // 删除偶尔出现的贴片广告,如 “云视听小电视”
    view.activityMetas = [];
    view.maskWalls = [];
    view.postPanel = [];
    view.postPanelV2 = [];
    
    // 非硬核会员启用 “硬核会员弹幕模式” 选项
    view.dmSetting.seniorModeSwitch = 3;
});

自定义数值类型选项

pakku 的设置页面中有很多数值类型的选项,但仅能在几个预设值(禁用、轻微、中等、强力)中选择一个。从 2024.6.1 版本起,勾选了 “我是高级用户” 后,可以选择 “自定义” 然后输入其他数值:

image

另外,从 2024.6.1 版本起,“自动弹幕优选" 功能的阈值预设从 240、160、100 调整为 150、100、70。更新后将保持原来设置的数值,因此原先设置为 “中等 (>160)” 将在更新后显示为 “自定义 (>160)”。

性能提升

  • (2024.5.2)预读取视频时长,对短视频避免预加载多余分片或创建多余的 Web Worker
  • (2024.5.4)改进播放器重新加载弹幕的方式,避免在视频页面反复开关 pakku 时消耗额外内存
  • (2024.6.1)减少关键路径上的 await 以缓解处理弹幕时主线程被播放器阻塞

其他改进

  • (2024.5.2)弹幕处理结果页面选择输出为 debug 格式时,将把弹幕保存为全局变量 D,以便用 console 调试
  • (2024.5.2)弹幕处理结果页面选择输出为 XML 格式时,将增加弹幕的云屏蔽权重字段
  • (2024.6.1)统计信息面板将显示执行的用户脚本数量
  • (2024.6.1)更新了设置页面的示例图片
  • (2024.5.3)完善了导入设置时的合法性检查
  • (2024.5.4)设置保存失败时增加错误提示
  • (2024.5.2)对 Edge 商店提交单独打包的版本,此版本按审核要求去除了设置页面中提及其他浏览器的内容

Bug 修复

  • (2024.5.2)播放器无法从B站账号同步弹幕设置#282
  • (2024.5.3)从旧版本升级时,设置迁移可能工作不正常导致设置损坏#283
  • (2024.6.1)未被合并的弹幕也会显示为被 pakku 标准化后的文本
  • (2024.5.4)按住 ctrl 查询弹幕信息功能对 UP 主弹幕无法工作
  • (2024.5.3)与其他设备上的旧版 pakku 同时使用时,浏览器的同步功能可能导致设置损坏
  • (2024.5.4)重置所有设置时 “阻止弹幕动态更新" 功能的生效状态没有应用
  • (2024.5.2)弹幕处理结果页面无法获取结果时将卡在 “loading...” 状态
  • (2024.5.4)用户脚本的最后一行是注释时会报告为存在语法错误
  • (2024.6.1)用户脚本的 Web Worker 没有及时关闭导致消耗额外内存
  • (2024.5.2)解析 URL 参数的方式不符合规范

2024.5.1

22 Apr 07:38
Compare
Choose a tag to compare

经历了 ManifestV3 重构后,经过半个多月的测试,恶性 bug 基本修复完毕。在此发布 pakku 2024.5.1 功能更新,这也将是 pakku 首个上架 Edge 商店的 ManifestV3 版本。为什么四月就发布了 2024.5.1 版本?因为等 Edge 商店审核通过了就该到五月了。

以下是 2024.5.1 版本相比于 2024.4.1 的变化。

新功能

自动弹幕优选

有些视频可能会出现激烈争吵、讨论、版聊等情况,导致弹幕合并之后的密度仍然过高,影响观看体验。

从 2024.5.1 版本起,新增自动弹幕优选功能,在瞬时弹幕密度过高时,将按比例删除云屏蔽权重为 1 且未被合并的弹幕,从而使弹幕密度大致不超过一个上限。

此功能默认禁用,可以在选项中设置强度:

image

在图中可以看到,从 2024.5.1 版本起,“自动减小字号” 功能也可以调节强度了(原先功能开启时的强度对为现在的中等档位)。

以视频 小米SU7,全国首撞!(BV1PE421u7UV) 为例,以下是自动弹幕优选功能设置为不同强度时的弹幕密度,可见弹幕密度过高的情况得到了缓解:

image

保存并处理本地弹幕

从 2024.4.3 版本起,点击 pakku 弹窗的 “弹幕 xxx → xxx” 文字进入弹幕处理结果页面后,增加了保存按钮,可以将处理结果保存为 XML 或 Pakku Debug 格式:

image

其中 Pakku Debug 格式为使用 JSON(输出时带单行注释和末尾逗号)存储的 DanmuObject[] 类型,在 用户脚本文档 中有相关类型定义。

从 2024.4.3 版本起,优化了与 Bilibili-Evolved 共同使用的体验。当 pakku 开启时,Bilibili-Evolved 的下载弹幕组件(v2.8.10 或更新版本)将下载 pakku 处理后的弹幕。

从 2024.4.3 版本起,新增批量处理本地弹幕功能 (#274),可以使用 pakku 处理本地存储的 XML 或 Pakku Debug 格式弹幕:

image

从 2024.4.4 版本起,可以右键点击 pakku 图标展开菜单,进入此功能:

image

读取播放器屏蔽词

pakku 会默认读取播放器屏蔽词,在合并弹幕之前先按屏蔽词过滤一遍弹幕,从而使数量标记和弹幕密度计算更准确,并避免数量标记影响正则匹配。

从 2024.4.3 版本起,可以在统计信息面板中查看每个屏蔽词的命中次数:

image

从 2024.5.1 版本起,如果不需要读取播放器屏蔽词,可以在设置中关闭此功能:

image

性能提升

  • (2024.4.5) hook 了播放器的 view 请求,使得加载完成时间提前大约几百毫秒
  • (2024.5.1) 提前加载第一个分片,使得第一个分片上屏时间提前大约几百毫秒
  • (2024.5.1) 线程数量设置为 1 时将依然使用 Web Worker 来避免阻塞页面(设置为 0 来完全禁用 Web Worker)
  • (2024.5.1) 对没有弹幕的分片不进行合并,节省 Web Worker 通信开销

其他改进

  • (2024.5.1) 在 “正在下载/处理弹幕” 提示语后增加进度信息
  • (2024.5.1) 改进了分块边界几秒钟的弹幕密度计算准确度
  • 改进了多处异常处理和错误提示
  • 调整了设置页面的编排逻辑
  • 完成了全部残留代码的 TypeScript 和 ES6 重构

Bug 修复

  • (2024.4.2) Firefox 平台少数情况下无法工作 (#272)
  • (2024.4.6) Chrome 99-110 版本下无法工作 (#278)
  • (2024.4.5) “阻止弹幕动态更新” 功能会导致直播弹幕不显示
  • (2024.4.3) 播放器屏蔽用户被识别为屏蔽词 (#275)
  • (2024.5.1) Chrome 94(如搜狗浏览器和 QQ 浏览器)安装时报错,目前可以安装,但部分功能不可用且设置页面会出现警告
  • (2024.4.7) 播放器屏蔽词正则表达式存在语法错误时无法工作 (#279)
  • (2024.5.1) 处理本地弹幕功能输出 Debug 格式时结果可能不全
  • (2024.5.1) 在搜索结果和个人空间页面鼠标悬停在视频预览时会加载全量弹幕
  • (2024.4.5) 弹幕数量极多时弹幕处理结果页面无法工作
  • (2024.4.4) 播放器换P后统计页面显示不正常
  • (2024.4.4) 页面刷新后角标文本没有清空
  • (2024.4.4) 切换工作状态后会再次下载弹幕
  • (2024.4.6) 解析特殊弹幕 JSON 和屏蔽词的行为与播放器有差异
  • (2024.4.4) Chrome 平台的用户脚本和处理本地弹幕功能依赖于 crbug.com/1504703
  • (2024.5.1) 旧版残余的选项没有清理

此版本已经上架 Chrome Web Store 和 Mozilla Add-Ons。因此除 Edge 用户外,无需任何操作,等待浏览器自动更新即可。

2024.4.1

07 Apr 19:12
Compare
Choose a tag to compare

此前的 v2024.3.1 在大型重构后确实引入了亿些bug。此版本带来了bug修复和其他优化,建议v2024.3.1用户现在更新,旧版用户可以等待浏览器自动更新。

Chrome平台目前已对10%用户灰度发布,Firefox平台已全量发布,Edge平台暂未发布,将在测试稳定后发布。

修复的bug

  • 删除强制合并规则会导致设置损坏
  • 弹幕密度计算错误导致弹幕密度过大时减小字号功能异常
  • iframe中的播放器无法加载弹幕
  • 在换P后弹幕信息面板找不到弹幕详情
  • 按住ctrl时可能会显示多余的弹幕
  • 没有使用出现次数最多的文本
  • 更改阻止弹幕动态更新设置后没有立刻生效
  • 在首页或播放器页面鼠标移过其他视频缩略图时预览弹幕会误触发合并
  • 大会员彩色弹幕被点赞后样式异常
  • 弹幕分片编号显示错误

其他优化

  • 改善了首个分片的加载性能
  • 调整了弹幕密度计算公式
  • 改善了忽略多余空格选项对中文的支持
  • 改善了Firefox平台的用户脚本错误提示
  • 调整了部分默认设置
  • 改善了部分界面的文案和文档

Chrome或Edge用户可以下载CRX安装包提前更新到最新版。此前在Firefox中安装了2024.3.1版本的用户需要卸载后安装正式版

2024.3.1

06 Apr 18:13
Compare
Choose a tag to compare

这是 pakku 的一次大型重构,目前在 Chrome Web Store 上发布了 1% 用户的灰度测试,将在一段时间后全量发布。

主要更新内容如下:

新功能

  • 用户脚本功能 可以使用 JavaScript 代码深度自定义 pakku 的功能,从而一举关闭了很多 Feature Request
  • 并行处理: pakku 现在使用 Web Worker 并行处理弹幕,可以大幅提升弹幕多、时间长的视频的处理性能,例如对于具有 13 万弹幕、51 分钟的 哔哩哔哩2020拜年祭(P1),在使用 3 个线程时(此为默认值,可以在选项中调整为 1 ~ 6 个),完整处理时间从 8 秒降低至 3 秒

功能改进

  • pakku 将自动读取播放器的黑名单,而不需要在设置页面手动导入
  • 支持了大会员彩色弹幕
  • 移除了常驻后台的背景页面,在不访问B站时可节省大约 40MB 内存
  • 其他界面优化
  • 其他代码质量优化(使用了 TypeScript、async functions、ES modules 等现代特性)
  • 以后将以 year.month.rev 格式命名版本号,因为之前的 major.minor.rev 格式没什么意义,反正浏览器会自动升级扩展程序

功能移除

  • 不再支持【弹幕黑名单】选项,因为现在将自动读取播放器的黑名单
  • 不再支持【眼不见心不烦模式】选项(不显示重复数量大于 x 的弹幕),此功能可通过用户脚本实现
  • 不再支持【设置云同步 (beta)】选项,现在将始终使用浏览器提供的同步功能