Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问在当前(v2024.6.3_C)版本下如何实现先前版本的自定义黑名单功能 #288

Closed
mark9804 opened this issue Jun 25, 2024 · 4 comments

Comments

@mark9804
Copy link

xmcp 你好,

曾经的 pakku 版本是有黑名单功能的,但是在某一个版本之后黑名单变成了自定义脚本功能,并且脚本长度不能超过 8kb。

我自己用的黑名单长度已经远远超过了 8kb,因此似乎在当前 pakku 版本下不能通过硬编码实现。我目前正在考虑使用 fetch 功能从云端获取黑名单,但是这个功能需要 tweak_before_pakku 支持结果为 Promise 的返回值,从类型定义上来看 pakku 暂时还不支持该功能。

请问目前我还有其他实现自定义黑名单的思路吗?希望作者能够指点一二。

@xmcp
Copy link
Owner

xmcp commented Jun 25, 2024

pakku从4月份的ManifestV3版本起删除了自定义黑名单功能,这是因为pakku现在会读取B站播放器的黑名单,这样大多数普通用户可以直接在播放器中设置黑名单,不再需要导出操作。

image

如果你的黑名单已经多到B站播放器也不能导入这么多、需要借助pakku实现,我看看下个版本能不能增加一个本地用户脚本功能。现在的 8KB 限制是因为 pakku 会默认使用浏览器提供的设置云同步功能,如果单独弄一个仅在当前设备上生效的用户脚本,则不会受 8KB 限制。

@xmcp
Copy link
Owner

xmcp commented Jun 26, 2024

噢,用户脚本其实是可以通过 importScripts 函数引入外部代码的。类似这样:

importScripts('https://s.xmcp.ltd/sample/large_data.js');
// ↑ const LARGE_DATA = ['hello', 'world'];

let regexps = LARGE_DATA.map(s => new RegExp(s, 'i'));

tweak_before_pakku(chunk=>{
  chunk.objs = chunk.objs.filter(d=>
    !regexps.some(r => r.test(d.content))
  );
});

我在文档里写一下吧,这样就能绕过 8KB 的限制了。

@xmcp xmcp closed this as completed Jun 26, 2024
@xmcp
Copy link
Owner

xmcp commented Jun 30, 2024

刚更新的2024.7.1版本将从网页的 localStorage 读取额外的用户脚本和屏蔽词。因此如果你有大量的屏蔽词难以导入B站播放器,可以存储在 www.bilibili.com 域的 localStorage['pakku_extra_blacklist'] 中,格式与B站播放器导出的 JSON 格式相同。例如,在视频页面的 console 中执行以下代码:

localStorage['pakku_extra_blacklist'] = JSON.stringify([{type: 1, filter: '^.{1,6}[天时点分钟秒]前', opened: true, id: 0}]);

@mark9804
Copy link
Author

感谢,天才的想法

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants