三步装好 Bilibili-Evolved:让 B 站增强脚本按你的意愿运转
【免费下载链接】Bilibili-Evolved强大的哔哩哔哩增强脚本项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved
写给想自己掌控 B 站页面体验的新手。Bilibili-Evolved 是一款运行在油猴脚本管理器里的哔哩哔哩增强脚本:装完只是个空壳,下载、夜间模式、首页重构等全部功能以组件形式由你自行装配。下文讲清如何安装、能解决哪些问题、组件之间如何协作,以及常见问题怎么处置。
项目快照
一句话:装得少、跑得快、坏了能换。
| 字段 | 内容 |
|---|---|
| 一句话定位 | 运行在油猴脚本管理器中的哔哩哔哩增强脚本 |
| 项目形态 | 带组件库的 UserScript(组件 / 插件 / 样式三类可装配单元) |
| 适用对象 | 需要下载、排版、直播、播放增强的 B 站用户 |
| 安装方式 | Tampermonkey 或 Violentmonkey 中安装 .user.js 脚本 |
| 核心亮点 | 功能自由装配、加载时机可调、组件间数据注入互通 |
| 官方仓库 | https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved |
快速上手:前提、安装与验证清单
先确认环境达标,再装脚本,最后对照清单验收。
前提条件:
- 浏览器:最新版 Chrome 或 Firefox(Safari 未保证,套壳类浏览器不保证稳定)
- 脚本管理器:Tampermonkey 5.0 及以上,或 Violentmonkey 2.18 及以上;Greasemonkey 与 AdGuard 官方标注不兼容
- 默认只对登录态做适配,使用前请先登录 B 站
- 最低配置:8GB 内存、1920×1080 分辨率、10MB/s 网络
安装三步:
- 在 Tampermonkey / Violentmonkey 中新建脚本,通过仓库 README 提供的安装链接导入正式版脚本;
- 刷新任意 B 站页面;
- 打开页面左侧中央的设置面板,进入左下的组件/插件/样式管理,按需安装功能(支持批量粘贴直链、载入本地文件、打开在线仓库窗口三种方式)。
装好的判定标准:
- 页面左侧中央出现功能面板与设置面板入口
- 控制台输入
window.bilibiliEvolved能打印出对象 - 设置面板中能看到主题颜色、功能加载模式等通用设置项
能力全景:按你想解决的问题找组件
别记目录,记场景:想解决什么问题,就去哪一类找。
下载视频、音频和弹幕
- 什么时候用:想把视频、音频、弹幕保存到本地。带来什么效果:直接对接 B 站 DASH 流下载,可单独下载音频、自定义扩展名;部分播放环境解不了 HEVC/AV1 时,回退编码默认 AVC 能保住可用性。入口:组件管理安装「下载视频」(源码见 registry/lib/components/video/download/index.ts)。
- 什么时候用:只要弹幕不要视频。效果:下载 ASS 格式弹幕文件;注意官方文档写明 ASS 弹幕下载不会包含高级弹幕、字幕弹幕。入口:「下载弹幕」组件。
整理首页与动态流
- 什么时候用:动态信息流太长、想按类型或关键词筛选。效果:动态过滤器按规则过滤动态流并移除侧边卡片。入口:「动态过滤器」组件。
- 什么时候用:不想要默认首页布局。效果:首页重构提供 fresh 与 minimal 两套方案,把信息流重排成卡片布局。入口:「首页重构」组件,效果图如下。
替换顶栏导航
- 什么时候用:嫌默认顶栏不够用或太乱。效果:整条替换 B 站顶栏,内部按首页、搜索、用户信息、设置等子模块拆分,支持透明填充等选项。入口:「自定义顶栏」组件。
夜间使用
- 什么时候用:深夜看 B 站眼睛难受。效果:全站点暗色适配,从 2018 年的功能延续至今,目录内自带完整的配色规范与选择器约束,适合照着改。入口:「夜间模式」组件,规范见 registry/lib/components/style/dark-mode/README.md。
直播场景增强
- 什么时候用:看直播需要音量、水印、弹幕面板层面的调整。效果:前后台音量分离、礼物盒子、直播间去水印、弹幕面板适配等组件集中在直播分类下,配合脚本内置的直播 WebSocket 封装做弹幕收发(src/components/live/live-socket.ts)。
核心设计:两个机制撑起整套装配体系
机制一:加载时机可调,且单组件故障互相隔离。
现象:装了一批组件后,页面首屏不会明显变卡;个别组件报错时,其余组件照常工作。
原理:所有组件由loadAllComponents统一拉起,入口是 src/components/component.ts。通用设置里的「功能加载模式」决定拉起时机,只有两档:
if (generalSettings.scriptLoadingMode === LoadingMode.Delay) { fullyLoaded(() => loadComponents() ...) // 延后: 等 load 事件 } else if (generalSettings.scriptLoadingMode === LoadingMode.Race) { contentLoaded(() => loadComponents() ...) // 同时: DCL 即跑 }「延后」等load事件后加载,不和页面抢资源;「同时」在 DOMContentLoaded 就启动,组件生效更早,但可能与 B 站原脚本竞争。每批组件的加载用Promise.allSettled包裹,拒绝的 Promise 只打印失败组件名和错误,不阻断其他组件。
类比:像买票排队。选「延后」是等队伍排空再进,大厅里没人跟你抢;选「同时」是开门就冲进去,快一点,但可能和原队伍的人挤在一起。
机制二:组件之间靠数据注入互通,互不引用。
现象:装上「下载弹幕」后,「下载视频」的下载列表里多出一个选项;卸载后选项消失。两边源码没有任何 import 关系。
原理:数据注入 API 有三个动作(src/plugins/data.ts):接收方registerData(key, ...data)交出可被修改的对象,提供方addData(key, provider)提交修改,getData(key)时统一应用。修改是单向累加的,项目文档给的比喻很贴切:只能git commit,不能git reset。
plugin: { displayName: '下载视频 - 下载弹幕支持', setup: ({ addData }) => { addData('downloadVideo.assets', async (assets) => { assets.push({ name: 'downloadDanmaku', ... }) }) }, },类比:像共享白板。下载视频组件把"资产清单"挂在白板上,弹幕组件拿笔加一行,装完即生效;擦掉(卸载)白板恢复原样。代码出处:registry/lib/components/video/danmaku/download/index.ts。另一条通道是钩子机制addHook/getHook(before/after 两段式),典型用途是自动更新组件挂在用户组件安装钩子上记录来源。
上手验证:5 分钟用开发者模式定位加载大户
目标:亲眼看到每个组件的加载耗时,并验证调整生效。
操作步骤:
- 打开设置面板,在「设置面板」组件的选项里打开「开发者模式」(
devMode); - 刷新任意 B 站页面,打开浏览器控制台,查看按阶段分组的耗时日志;
- 找到占比最高的组件,把通用设置里的「功能加载模式」从「同时」改为「延后」(或直接停用该组件),再次刷新对比。
预期输出(logStats打印,src/core/performance/stats.ts):
components block time: 123.45ms for 12 items 夜间模式 30.21ms 24.47% 自定义顶栏 18.9ms 15.31% ...如何判断成功:控制台出现上述分组日志即说明注入正常;改完加载模式再刷新,总耗时或该组件耗时下降,就说明调整生效。
异常手册:六个常见现象的排查表
看到什么、为什么、怎么办,按行对照即可。
| 现象 | 可能原因 | 处置办法 |
|---|---|---|
| 装完脚本页面没有任何变化 | 默认不预装任何组件,只带设置面板等内置组件 | 进设置面板装你需要的功能,装完刷新页面 |
| 功能面板不显示、效果时好时坏 | 脚本管理器不兼容(Greasemonkey / AdGuard)、版本过低、套壳浏览器,或尚未登录 B 站 | 换最新版 Chrome/Firefox + Tampermonkey/Violentmonkey,并确认已登录 |
| 弹出"脚本试图访问跨域资源" | 用外部链接安装组件、或将下载任务发送到自己的服务器时的已知提示 | 确认来源后选"始终允许",之后不再重复提示 |
| 页面明显变卡 | 配置不达标,或装配组件过多 | 对照最低配置(8GB 内存、1920×1080、10MB/s);开开发者模式定位耗时大户,改延后加载或停用 |
| 升级后设置错乱或旧版出问题 | 官方策略:新版本正式发布后不再对旧版提供技术支持 | 升级前在关于面板导出设置;必须留在旧版时参考 doc/rollback.md 回退指南;v1 用户装「v1 设置迁移」组件导入旧设置 |
| ASS 弹幕文件里缺弹幕 | 文档明确 ASS 弹幕下载不含高级弹幕、字幕弹幕 | 预期行为,无需处理 |
路线建议:三类人各走各的
普通用户
- 只装高频组件(下载视频、夜间模式等),保持克制,这是长期流畅的前提
- 把"升级前在关于面板导出设置"变成固定动作
- 关注 CHANGELOG,新版本发布后及时跟进,因为旧版不再受支持
重度用户
- 通读 src/core/life-cycle.ts 与 src/core/loading-mode.ts,理解
be:start→be:style-loaded→be:components-loaded→be:end四个生命周期事件 - 用开发者模式日志为每个组件单独调整加载模式
- 动手改暗色样式前,先读 registry/lib/components/style/dark-mode/README.md 的分片规范与配色表,避免重蹈 2018 年"选择器太宽泛"的老路
想贡献代码的人
- 克隆 https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved ,在根目录与 registry/ 下各执行一次
pnpm install - 用
pnpm tsx dev-tools/dev-server/index.ts启动开发服务(默认 23333 端口),新组件写在registry/lib/components/<类别>/下,index.ts用defineComponentMetadata导出,index.md写描述 - 跨组件协作优先用
addData/addHook而不是互相引用;提交前跑pnpm run lint-check与pnpm run type
Bilibili-Evolved 把油猴脚本从"一个成品"还原成"一套装配规则":核心层管稳定,组件层承载功能,插件层负责互通,连功能文档和 PR 检查都是生成式工具链的一部分。它真正的价值不下载哪个具体功能,而在于这套"元数据 + 生命周期 + 数据注入"的组合——换个站、换个场景,这套工程化的写法几乎可以原样搬走。
【免费下载链接】Bilibili-Evolved强大的哔哩哔哩增强脚本项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考