
前端【免费下载链接】BewlyCatBewlyCat——基于BewlyBewly开发的Bilibili拓展项目地址https://gitcode.com/gh_mirrors/be/BewlyCat点击查看免费下载BewlyCat 是一个面向 Bilibili 官方网站的浏览器拓展脱胎于开源项目 BewlyBewly在保留原项目能力的基础上扩充了十余项新功能、精简了打包体积并已在 Chrome、Edge、Firefox 三家应用商店上线。本文以仓库根目录的 README.md 为主线结合 Manifest 定义、package.json 与音量均衡等核心模块源码系统梳理它的功能异同、安装方式与本地构建流程读完即可完成从下载安装到自行编译的全过程。项目定位与设计原则BewlyCat 的定位非常克制“只需对您的 Bilibili 主页进行一些小更改即可。”它是一款纯网页体验增强工具只优化 B 站官方网站的使用体验因此在 README.md 中明确声明了几条硬性边界插件及其 Fork 代码禁止以任何形式的客户端封装不做“壳”化改造项目面向作者个人使用习惯调整但欢迎功能建议与 Bug 反馈浏览器拓展商店的上架审核是并行提交的实际更新速度取决于各商店的审核节奏不应在 issue 中催促审核不打包 Safari、不做大量 Safari-only 适配如需可自行打包本项目基于 MIT 许可在原项目 BewlyBewly 之上开发并已与原项目作者取得授权包括上架 Chrome 应用商店等权利。此外README 中有一条面向搜索可达性的说明为了让项目能在 GitHub 中被直接搜索到BewlyCat 脱离 BewlyBewly 的 Fork 网络成为独立项目但基于 BewlyBewly 的本质不变也不会移除历史贡献者和原项目信息。这一点在仓库目录结构中同样可见src/下保留了原项目的顶栏、卡片、内容脚本等组件体系。[!CAUTION] README 同时提醒B 站于 2026 年 1 月调整了首页推荐 API请更新至1.5.6及以上版本以适配新的首页推荐、排行榜和分区。当前仓库 package.json 中的版本号为1.8.0已包含该适配。与 BewlyBewly 的主要功能异同新增功能清单README 列出了 12 项新增功能逐条解读如下视频卡片、顶栏链接后台打开点击视频卡片或顶栏链接时在后台标签页打开不打断当前浏览流。默认播放器样式设置当播放器样式为“默认”和“宽屏”时页面会自动滚动到弹幕框与底部平齐。用户面板大会员权益领取入口在用户面板中提供大会员权益的领取入口。首页推荐前进/后退为首页推荐流增加前进与后退能力便于回看被划过的内容。合集播放自动关闭需要在设置里开启方便挂机播放合集时听歌。Web 模式推荐过滤按点赞/播放比例过滤视频同样需要在设置中开启。自定义快捷键参考Extension for Bilibili Player插件的快捷键支持其中大部分功能的自定义快捷键。记住倍速比例开启后会记住上次使用的播放倍速。合集视频随机播放支持合集内视频随机播放。视频详情页稍后再看外置将稍后再看功能从内嵌改为外置呈现。自定义暗色基准色开启后暗黑模式的显示会随基准色调整。合集视频保持默认播放模式合集播放时维持默认播放模式。局部音量均衡在“设置 → Bilibili → 播放器 → 音量均衡”启用平衡不同视频之间的音量并通过播放器组件关闭原生均衡支持目标响度、强度调整及运行状态显示详见仓库内的算法与资源管理。其中第 13 项“局部音量均衡”是当前仓库中实现最深入、文档最完整的特性下文会结合源码单独展开。删除功能与取舍逻辑删除原插件的广东话翻译该翻译现由 BewlyBewly 插件原作者维护缺少翻译时默认显示英文翻译结果。删除内置字体打包体积从14.4M缩减到600K。删除旧版顶栏以降低开发成本并重构原项目顶栏组件功能无差异。删除部分影响功能正常使用的动画如抽屉打开/关闭的动画。这一组“删除”体现了明确的工程取舍用体积、动画和重复维护成本的削减换取更轻量、更稳定的体验。安装指南在线安装应用商店商店说明Chrome 应用商店正式上架搜索BewlyCat安装Edge 应用商店已上架审核周期不定Firefox 应用商店已上线1.0.2版本已修复抽屉问题[!CAUTION] 各商店审核可能存在延迟Chrome 一般晚 30 分钟至 15 天Edge 一般晚 3 至 30 天Firefox 一般晚 1 至 30 分钟。商店的异常行为由商店导致不必在 issue 中催促。本地安装Edge 和 Chrome推荐方式从 Releases 下载最新的extension.zip在 Edge 中打开edge://extensions或在 Chrome 中打开chrome://extensions直接将下载的extension.zip文件拖放到浏览器窗口中即可完成安装。本地安装开发者模式加载解压目录Edge下载extension.zip并解压地址栏输入edge://extensions/回车打开「开发者模式」并点击「加载已解压的拓展程序」选择解压后的扩展文件夹。Chrome 操作完全一致仅需将地址换成chrome://extensions/。本地安装最新开发版如果需要体验最新代码可使用 CI 自动构建产物或从 Releases 下载稳定版。开发版用于跟进最新改动稳定版用于日常使用。从源码构建与开发调试构建与贡献流程的完整说明见仓库内的贡献指南。本项目基于 Vite 构建前置环境为 Node.js 与 pnpm推荐使用 Visual Studio Code 开发。开发调试Chrome / Edge# 安装依赖 pnpm install # 创建一个用于存储登录状态的扩展程序文件夹 mkdir chromium-web-ext-profile # 运行项目开发模式带热重载 pnpm dev # 自动打开一个新的 Chrome 窗口并打开 Bilibili 网站 pnpm start:chromium每次修改扩展程序都会自动重新加载刷新网页即可查看更改。另一种方式是只运行pnpm dev然后在chrome://extensions/或edge://extensions/中开启「开发者模式」通过「加载已解压的拓展程序」加载生成的extension/文件夹修改后点击 Reload Extensions 按钮并刷新页面以应用更改。构建Chrome / Edgepnpm build产物打包到extension文件夹。pnpm脚本链可以在 package.json 中看到完整定义build依次执行clear → build:prepare → build:js → build:inject → build:bg分别对应 scripts/prepare.ts 的准备步骤、vite.config.content.ts 的内容脚本构建、vite.config.inject.ts 的注入脚本构建以及tsup的后台脚本构建。开发调试Firefoxpnpm install mkdir firefox-web-ext-profile pnpm dev-firefox pnpm start:firefox第二种方式运行pnpm dev-firefox后在 Firefox 中输入about:addons进入 Extensions → Debug Add-ons加载生成的extension-firefox/文件夹。构建Firefoxpnpm build-firefox产物打包到extension-firefox文件夹。若需一键产出全部渠道产物可运行pnpm build-packbuild build-firefox pack:zip pack:zip-firefox pack:zip-firefox-sources。项目同时保留了build-safari与convert-safari脚本说明 Safari 支持依赖自行打包而非官方维护。Manifest 与权限的源码级细节拓展的清单文件由 src/manifest.ts 动态生成值得关注的实现事实Manifest V3名称取自package.json的displayName开发模式自动追加Dev后缀后台脚本按浏览器分化Firefox/Safari 使用background.scriptsFirefox 为持久化脚本Chromium 系使用service_workertype: module权限集storage、declarativeNetRequest、cookiesChromium 额外申请scriptingFirefox 额外申请webRequest/webRequestBlockinghost_permissions限定为*://*.bilibili.com/*与*://*.hdslb.com/*即只作用于 B 站域内容脚本在document_start、all_frames注入其中注入脚本以world: MAIN运行于页面主世界用于在原生播放器接管媒体元素之前完成音频处理见下文音量均衡declarative_net_request规则集加载自 assets/rules.json。内容脚本的匹配域名定义在 src/constants/contentScript.ts覆盖www.bilibili.com、search.bilibili.com、space.bilibili.com、passport.bilibili.com等 10 个 B 站域并显式排除/match/game*与/toy*路径。深度解析局部音量均衡的实现原理“局部音量均衡”是 README 明确指向独立文档的能力其算法与资源管理说明见 docs/local-loudness.md源码实现位于 src/inject/audio/localLoudness.tsAudioWorklet 处理器源码见同目录 localLoudnessProcessor.js以?raw方式内联进注入脚本。此处结合 README、文档与源码把这条特性链路讲透。入口与参数入口设置 → Bilibili → 播放器 → 音量均衡设置面板定义在 src/components/Settings/BilibiliFeaturesEnhancement/VolumeBalance/VolumeBalance.vue包含四个可调项启用开关settings.localLoudnessEnabled默认关闭目标响度settings.localLoudnessTarget滑杆范围-24 ~ -14 LUFS默认-18 LUFS强度settings.localLoudnessStrength滑杆范围40% ~ 100%默认75%显示播放器按钮settings.showLocalLoudnessButton隐藏按钮不影响均衡本身是否生效。文档推荐从-18 LUFS、75% 强度开始尝试。与原生均衡的协作启用时拓展通过 B 站「设置 → 更多播放设置 → 音量均衡 → 关闭」调用 B 站自己的 UI 处理来关闭原生均衡而不直接修改网站存储或私有 player 对象。源码中disableNative()会点击原生设置按钮、more面板并点选input[value0]的关闭项借此让 B 站自身的持久化与音频图变更逻辑生效。在插件启用期间文档级click监听会拦截用户再次开启原生均衡的操作避免两套增益同时作用。关闭插件功能后原生均衡保持关闭如需重新开启原生音效应先关闭本功能并刷新页面——因为浏览器不提供释放媒体元素音源所有权的接口接管是不可逆的。算法要点不依赖 B 站返回的整段响度数据而是由 AudioWorklet 音频线程执行双声道 K-weighting 测量使用 400 ms 与 3 s 两个滑动窗口每 100 ms 更新一次控制目标采用 BS.1770 的声道能量与 K-weighting 计算方式文档明确它是局部自动增益不声称是完整的 EBU R128 节目响度归一化增益策略目标误差按强度折减最大提升 6 dB、最大降低 18 dB1 dB 死区减少抖动下降速率最多 8 dB/s、回升最多 1.5 dB/s低于-50 LUFS时冻结增益避免对静音或底噪持续提升独立的5 ms 前瞻采样峰值限制器控制突发大声输出采样峰值不超过-1 dBFS释放时间 80 ms它不是过采样真峰值限制器因此不保证编码后的 dBTP测量会补偿媒体音量用户手动调音量不会被自动增益抵消静音、暂停、拖动进度时停止测量换源或拖动进度会清空统计与延迟缓冲。音源接管与生命周期注入脚本在document_start阶段早于原生播放器捕获媒体元素就通过弱引用映射记录原生创建的媒体音源。接管时把 Worklet 节点插入音源已有输出连接中关闭时还原连接但从不关闭原生 AudioContext。对于自己接管的元素多个元素共享一个 AudioContext关闭功能后保留最小原声旁路不强行关闭导致失声。每次绑定只有一个 Worklet 和一个 AbortController解绑时恢复旁路、断开处理节点、发送dispose、关闭 MessagePort、清空事件回调并撤销媒体事件监听响度窗口、延迟音频、单调队列均使用固定长度类型数组不存在随播放时长增长的音频缓存模块按 AudioContext 弱缓存Blob URL 在addModule成功或失败后均释放异步加载使用代次检查generation关闭功能、换视频或pagehide后不再绑定过期任务自有音源仅在元素仍位于 DOM 时保持强引用文档级 MutationObserver 负责在元素移除/重插时恢复必要旁路无自有音源连接时暂停自有上下文页面真正退出时关闭自有上下文并撤销文档监听与原型补丁处理失败自动切回原声不支持或无法确认跨域安全性的音源不接管若其他拓展先占用了音源可能需要刷新或停用冲突音效。播放器控制条上的音量均衡按钮由 src/contentScripts/localLoudnessControl.ts 负责挂载对应组件 src/components/PlayerLoudnessControl.vue它观察播放器控制条结构在音量图标后插入按钮悬停可调节开关、目标响度与强度并显示当前视频运行状态与最近 60 秒的均衡增益曲线这是实际增益遥测而非原始音频波形曲线最多保存 61 个采样点换源、拖动进度或切换功能时清空。该模块在live.bilibili.com不初始化监听器、观察器与发现重试会在页面隐藏、离页时被清理。文档也划定了验证边界离线已用 44.1/48/96 kHz 的音调、静音、幅度切换和超限脉冲检查了增益、用户音量比例及峰值边界浏览器验证使用真实 B 站视频与开发扩展长期播放、更多内容类型和 Firefox 仍需进一步听感与兼容验证资源释放计数也不能代替长期堆内存分析。这是对自身局限性的诚实说明。参与贡献分支、Commit 与 i18n 约定按 贡献指南 的约定常驻分支Main分支用于错误修复、新功能开发、性能改进或 i18n 文件的修改临时分支feat/提交新功能doc/只改文档不改功能fix/修复错误。Commit 消息遵循 Angular 规范常用类型包括feat新功能、fix修复 Bug、docs文档更新、style不影响代码含义的格式改动、refactor重构、test测试、chore构建/工具链、perf性能、ci持续集成也欢迎增加 scope 与 footer例如fix(dock): xxx并附带变更描述与相关 PR 链接。i18n 方面有一条硬性约定请手动维护 i18n 国际化文件不要使用i18n Ally等扩展因为自动工具会不确定翻译放置位置或误删代码注释。仓库内语言文件位于 src/_locales简体中文、繁体中文、英文、粤语。鸣谢与依赖生态README 的鸣谢部分列明了该项目得以成立的技术基础基础项目 [BewlyBewly]、项目模板 [vitesse-webext]Vite WebExtension 脚手架、访问密钥参考 [UserScripts/bilibiliHome] 与 [bilibili-app-recommend]、部分功能实现参考 [Bilibili-Evolved]以及 API 文档参考 [bilibili-API-collect]。依赖栈也能在 package.json 中印证Vue 3 Pinia vue-i18n UnoCSS wxt tsup 构成了整个前端与打包体系simple-git-hooks在 pre-commit/pre-push 阶段强制执行 lint 与类型检查。小结BewlyCat 的完整价值在于“小而精”的取舍在 BewlyBewly 基础上新增了后台打开、播放器样式联动、快捷键自定义、倍速记忆、随机播放、局部音量均衡等实用能力同时砍掉字体与旧版顶栏把体积压缩到 600K。对普通用户而言从三家应用商店在线安装即可对开发者而言一条pnpm install pnpm dev pnpm start:chromium就能拉起带热重载的调试环境。若要深入理解其最有技术含量的模块建议从 docs/local-loudness.md 与 src/inject/audio/localLoudness.ts 的组合阅读开始——那是一个将 AudioWorklet、BS.1770 响度算法与 WebExtension 生命周期管理完整落地的参考实现。赞分享前端【免费下载链接】BewlyCatBewlyCat——基于BewlyBewly开发的Bilibili拓展项目地址https://gitcode.com/gh_mirrors/be/BewlyCat点击查看免费下载相关推荐BewlyBewly 浏览器扩展完全指南B 站主页 UI 重构、安装方式与本地开发构建实战BewlyBewly 浏览器扩展完全指南B 站主页 UI 重构、安装方式与本地开发构建实战 导读 本文以 BewlyBewly 官方 README.md ht前端终极BewlyCat使用指南打造个性化B站浏览新体验终极BewlyCat使用指南打造个性化B站浏览新体验 BewlyCat是一款基于BewlyBewly开发的B站浏览器拓展它能彻底改变你的B站浏览体验通过现前端免费完整QQ空间数据导出3步用Python备份全部历史说说免费完整QQ空间数据导出3步用Python备份全部历史说说 GetQzonehistory是一款免费的Python QQ空间备份工具扫码登录即可完成QQ空间网页爬虫数据分析上一篇如何编写自定义路由算法Switchyard libsy Algorithm完整开发教程下一篇如何快速使用jscpd终极代码重复检测工具完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考