Skip to content

Repository files navigation

哔哩音频

面向 Edge 和 Chrome 的 Manifest V3 扩展。它读取当前浏览器的哔哩哔哩登录状态,浏览 UP 主的全部作品、合集和系列,并在不渲染视频画面的情况下后台播放音频。

当前阶段

0.11.2 已包含:

  • 无构建、无 npm 依赖的原生 ES Modules 扩展骨架。
  • Edge/Chrome 侧边栏和完整播放器页面。
  • 可在设置中选择工具栏图标默认打开侧边栏或完整页面,默认保持侧边栏。
  • 设置作为左侧主导航中的可见入口,不再隐藏在登录状态旁。
  • UP 主 UID/名称搜索与关注列表。
  • 关注的 UP 主列表即其主页入口,避免与独立主页导航重复。
  • 播放模式按钮悬浮时显示当前的列表循环、单曲循环或随机播放模式。
  • 作品操作按钮提示精简为操作名称;播放按钮仍显示目标作品名称。
  • 播放队列后台状态刷新时保持用户当前滚动位置。
  • 播放时间和进度条逐秒更新且不重建播放栏或队列,轻量播放位置约每 5 秒持久化一次。
  • 底部播放栏的作品封面和标题可直接在新标签页打开哔哩哔哩原作品,并提供悬浮提示。
  • 全局“继续上次播放”会恢复最近队列、作品和经验证的时间点,底部播放栏显示恢复来源。
  • 每个 UP 主的全部作品、合集、系列和自定义播放列表各自保留一个继续播放检查点;收藏入口与原栏目共享进度,详情页可选择继续或从头播放。
  • 播放进度采用独立轻量存储;关闭“记住播放位置”会清除全局与集合检查点。
  • 底部播放栏提供 0.5×–4× 倍速滑杆,可按 0.1× 精细调节;当前选择会在播放器状态中保持。
  • 缓存加入队列时在播放栏上方显示可跳转的浮动提示。
  • 缓存进度更新复用现有浮动提示节点,不重复播放入场动画。
  • 缓存状态更新按标题、概览、队列、历史和文件区域拆分;高频进度事件只更新状态文字与进度条。
  • 已缓存文件按照“UP 主 → 全部作品/合集/系列 → 作品”目录树展示,自定义播放列表和恢复归档独立分组。
  • 缓存目录树支持单文件、栏目、UP 主、播放列表和全选批量删除;删除只影响选中的实体副本,并同步清理索引、播放列表清单和安全可移除的空目录。
  • 全部作品、合集、系列及展开/详情视图。
  • 从 UP 主主页或栏目详情播放时,自动分页读取完整栏目再建立队列。
  • 全部作品、合集和系列详情内的完整栏目关键词搜索。
  • UP 主主页摘要中的历史零时长作品会自动触发重新读取,修复缓存摘要与详情页时长不一致。
  • 可将当前关键词搜索结果直接播放,或保存为自定义播放列表。
  • Manifest V3 Offscreen Document 后台音频播放。
  • 由扩展接管的 DASH 音频流式加载、备用 CDN、严格 CDN 来源适配与本地缓存失败回退。
  • 可展开管理的播放队列、跳转、移除、清空、按钮/拖动重排、下一首、循环模式、进度和音量状态。
  • 作品、栏目、播放器和弹窗中的纯图标操作均提供鼠标悬浮说明。
  • 底部播放栏显示当前实际使用的在线或本地缓存来源。
  • 哔哩哔哩 WBI 请求签名和统一接口适配层。
  • 用户授权目录中的原始音频或 MP3 转码缓存与离线优先播放。
  • 扩展重载后缓存目录权限过期的主动提醒与一键重新授权。
  • 同一 BV 号的多归档位置索引,优先当前栏目、其次其他本地副本、最后回退在线。
  • 分页浏览、整栏缓存、实时缓存队列、进度和最近任务结果。
  • 本地状态持久化、定时追更和自动缓存。
  • 采用最小作品快照持久化的自定义播放列表数据层。
  • “我的播放列表”页面、固定顺序按钮/拖动管理、单首添加和当前队列保存。
  • 合集与系列收藏仅持久化栏目定位、名称、UP 主与收藏时间;封面和作品信息在线读取。
  • “收藏的合集与系列”导航、收藏/取消收藏入口,以及跨 UP 主直接打开、播放和缓存收藏栏目。
  • 收藏页及收藏详情在线读取栏目封面、最新名称和作品数;历史收藏自动补齐,无需重新收藏。
  • 收藏栏目卡片沿用 UP 主主页的展开按钮、封面、标题和操作区四列布局。
  • UP 主搜索结果支持点击外部、Esc 或关闭按钮收起,按 / 可快速聚焦搜索框。
  • 合集、系列和全部作品详情支持按发布时间正序/倒序切换,排序方向全局保存并同步影响展示与播放全部。
  • 倒序详情在展示前会完整读取分页,确保“最新在前”是针对整个栏目,而不是只反转当前已加载的一页。
  • 自定义播放列表实体归档、本地副本复用、归档覆盖统计和目录清单。
  • 缓存目录扫描、失效位置清理,以及通过归档清单或文件名 BV 号恢复索引。
  • 播放列表版本化 JSON 导入导出、导入预览、合并与替换。
  • 全部作品投稿接口的 length 时长兼容,以及历史播放列表零时长自动补全。

MP3 转码由随扩展打包的纯 JavaScript LAME 编码器在本机后台 Worker 中完成,不上传音频,也不需要安装本地程序或运行时联网;可在设置中选择 128、192 或 320 kbps。转换期间会暂时占用额外内存和 CPU,较长作品需要等待更久。

设计文档

本地安装

  1. 打开 Edge 的 edge://extensions 或 Chrome 的 chrome://extensions
  2. 开启“开发人员模式”。
  3. 点击“加载解压缩的扩展”。
  4. 选择本项目根目录。
  5. 点击工具栏中的扩展图标打开扩展;默认显示侧边栏,也可在“设置 → 打开方式”中改为打开完整页面。

从旧版本覆盖更新后,请在扩展管理页点击一次“重新加载”,以便浏览器应用新增的音频 CDN 权限和请求规则。

扩展不保存哔哩哔哩密码。接口属于站点内部能力,可能随网站更新而变化。

使用方式

  1. 在顶部输入名称或数字 UID,搜索并添加 UP 主。
  2. 在 UP 主主页展开“全部作品”、合集或系列,或者进入详情页。
  3. 点击播放按钮开始纯音频播放;关闭侧边栏后仍会继续播放。
  4. 首次缓存前,在“缓存管理”里点击“选择缓存目录”。
  5. 在设置中选择保留原始音频或转换为 MP3,再返回 UP 主页面缓存单个作品或整个栏目。已缓存作品会优先从本地播放。
  6. 在栏目详情中开启“自动追更并缓存”。浏览器运行期间会定期检查,重启后会补查。

已知限制

  • 哔哩哔哩的接口存在风控。名称搜索失败时,优先使用数字 UID。
  • 浏览器完全退出时无法播放、检查更新或下载,下次启动后会继续检查。
  • 一个栏目超过 100 个作品时,详情页按页加载;“缓存全部”会逐页加入队列。
  • 目录授权被浏览器收回后,需要用户重新点击授权,文件本身不会丢失。
  • MP3 转换会先完整解码单个作品,因此超长音频可能占用较多内存;需要节省资源时可切回原始格式。
  • 仅处理当前账号有权访问的内容,不绕过付费、会员、区域或版权限制。

第三方组件

MP3 编码使用独立打包且未修改的 @breezystack/lamejs 1.2.7(LGPL-3.0)。许可证、来源、校验值及替换说明见 docs/THIRD_PARTY_NOTICES.md

开发检查

项目没有构建步骤。运行:

node tests/md5.test.mjs
Get-ChildItem -Recurse -Filter *.js | ForEach-Object { node --check $_.FullName }

About

面向 Edge/Chrome 的哔哩哔哩音频播放器:整合 UP 主作品、合集与系列,支持后台播放、播放列表管理和离线缓存。An Edge/Chrome Bilibili audio player for organizing creator videos, collections, and series, with background playback, playlists, and offline caching.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages