news 2026/10/1 17:02:15

BiliTools 项目全景:基于 Tauri TypeScript Rust 的轻量哔哩哔哩工具箱解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BiliTools 项目全景:基于 Tauri TypeScript Rust 的轻量哔哩哔哩工具箱解析
  • 桌面应用
  • 音视频

【免费下载链接】BiliTools

本项目已停止维护。

项目地址:https://gitcode.com/GitHub_Trending/bilit/BiliTools
点击查看免费下载

导读:本文以 BiliTools 文档站首页 docs/index.md 为核心骨架,系统拆解这个“简约 & 轻量”哔哩哔哩工具箱的定位与技术底座——从 Tauri + TypeScript + Rust 的混合架构,到约 30 MB 应用本体的轻量化原理,再到明暗主题、全量资源解析与四语言国际化四大特性的实现证据。读完本文,你将掌握 BiliTools 的整体架构脉络、功能边界与源码级佐证路径,可直接作为阅读文档站、定位功能模块与二次开发的地图。

暗色主题亮色主题

一、项目定位:一个基于用户账号解析资源的工具箱

BiliTools 的官方定位是一句“简约 & 轻量的哔哩哔哩工具箱”,由docs/index.md首页的 hero 区块定义:应用名BiliTools,副标题“简约 & 轻量的哔哩哔哩工具箱”,技术底座标注为“基于 Tauri & Typescript & Rust 构建”。这一定位在仓库中可得到完全印证:

  • 前端:Vue 3 + TypeScript + Pinia + Vue Router + vue-i18n,见 package.json 中vue: 3.5.25、pinia: ^3.0.4、vue-i18n: ^11.2.2、vue-router: 4.6.4等依赖;
  • 后端:Rust + Tauri 2.x,见 src-tauri/Cargo.toml 中tauri = "2.9.5"、sqlx(SQLite)、tokio、specta等核心依赖;
  • 桌面壳:src-tauri/tauri.conf.json 声明应用标识符com.btjawa.bilitools、版本1.4.7,并启用macOSPrivateApi、内建更新器(updater)配置。

需要特别说明的前提是:本项目基于用户账号解析资源,因此若要解析大会员限定内容或付费内容,必须先登录具备相应权限的账号(详见 docs/guide/login.md 的登录说明与 docs/guide/about.md 的 IMPORTANT 提示)。

此外,仓库 README 与 docs/guide/about.md 均注明:项目在v1.4.0正式版发布后进入稳定状态、暂缓更新;当前仓库版本号为1.4.7(package.json、src-tauri/Cargo.toml、src-tauri/tauri.conf.json 三处一致)。它同时是一个独立的第三方工具,与哔哩哔哩官方无关联、合作或授权关系,获取内容的版权归原权利人所有,仅供学习技术与测试代码使用。

二、技术栈与整体架构:Tauri 混合式桌面应用的三层结构

docs/index.md将技术栈概括为 “Tauri & TypeScript & Rust”。结合仓库目录,可将 BiliTools 划分为三层:

2.1 前端层(TypeScript / Vue 3)

前端代码位于 src/,由 src/main.ts 启动:createApp(App).use(store).use(router).use(i18n).mount('#app'),并注册了全局错误处理(window.onerror、onunhandledrejection)与AppError上报机制。

路由由 src/router/index.ts 定义,共 6 个页面,对应应用六大模块:

路由name页面组件
/searchPagesrc/views/SearchPage.vue(搜索 / 解析)
/user-pageuserPagesrc/views/UserPage.vue(用户空间)
/history-pagehistoryPagesrc/views/HistoryPage.vue(历史记录)
/down-pagedownPagesrc/views/DownPage.vue(下载队列)
/settings-pagesettingsPagesrc/views/SettingsPage.vue(设置页)
/info-pageinfoPagesrc/views/InfoPage.vue(关于 / 信息)

状态管理采用 Pinia,按域拆分:app、components、queue、settings、user,见 src/store/。业务逻辑封装在 src/services/ 中,包括auth(鉴权)、login(登录)、queue(队列)、clipboard(剪贴板监听)、media(媒体数据解析)与backend(Tauri 命令桥接)。

2.2 Rust 后端层(Tauri 命令与持久化)

后端位于 src-tauri/,核心模块包括:

  • 服务层src-tauri/src/services/:queue/(任务队列的 manager、scheduler、runtime、handler 等)、aria2c.rs(下载引擎封装)、ffmpeg.rs(媒体处理)、login.rs(登录与会话);
  • 存储层src-tauri/src/storage/:config.rs、cookies.rs、db.rs、migrate.rs(数据库迁移)、queue.rs、schedulers.rs、tasks.rs,持久化采用 SQLite(sqlx运行时);
  • 命令入口src-tauri/src/commands.rs 通过tauri-specta生成类型安全的 TypeScript 绑定,供前端commands直接调用。

2.3 内置第三方二进制

“开箱即用”背后是 src-tauri/binaries/ 中按平台(Windows / macOS / Linux × x86_64 / aarch64)分发的三个核心工具:aria2c(轻量多协议下载器)、ffmpeg(多媒体处理)、DanmakuFactory(弹幕 XML→ASS 转换),分别对应 docs/guide/download.md 的下载处理流程与 docs/guide/stream.md 的格式说明。

三、特性一:轻量 —— 约 30 MB 应用本体的原理

docs/index.md的“轻量”特性卡原文为:“得益于 Tauri 框架及 WebView2 的灵活性,应用本体仅有 ~30 MB。”其技术原理可从仓库中得到三点佐证:

  1. 复用系统 WebView:Tauri 不打包 Chromium,而是调用操作系统原生 WebView(Windows 上为 WebView2),因此免去了 Electron 式的大体积运行时;
  2. Rust 发布优化:src-tauri/Cargo.toml 的[profile.release]配置了opt-level = "s"(体积优先优化)、lto = true(链接期优化)、codegen-units = 1,从编译期控制二进制体积;
  3. 按需分发二进制:aria2c / ffmpeg / DanmakuFactory 均按目标平台单独打包(见 scripts/binaries.mjs),避免跨平台冗余。

需要指出的是,“~30 MB”为首页文档给出的应用本体量级描述;具体安装包体积会随平台、架构与依赖版本略有差异,应以实际构建产物为准。

四、特性二:简约 —— 明暗主题与开箱即用

“简约”特性卡强调“界面轻盈简洁,支持明暗主题,开箱即用”。这一定位在源码中有明确落点:

  • 明暗主题:根组件 src/App.vue 监听settings.isDark,动态切换 Font Awesome 图标字重(fa-solid/fa-light)并联动全局样式;主题偏好保存在设置 store(src/store/settings.ts)中,并在 docs/guide/settings.md 有对应说明;
  • 开箱即用:应用启动时(src/App.vue 的onMounted)依次调用commands.meta()恢复任务/调度器状态、commands.init()初始化环境、fetchUser()拉取用户信息、activateCookies()激活会话;
  • 剪贴板即搜即解析:clipboard.register(...)监听剪贴板内容,一旦识别出 B 站链接/ID 便自动跳转搜索页并触发解析,这是“简约”交互体验的直接体现。

界面效果可对照本文开头两张截图:暗色/亮色两套主题均保持一致的轻盈观感。

五、特性三:功能 —— 从番剧到收藏夹,弹幕到 NFO

“功能”特性卡原文为“从番剧到收藏夹,弹幕到 NFO,尽数支持”。以 docs/guide/about.md 的功能矩阵为准,可细分为三大类(全部标注为“已完成”):

5.1 资源类

资源能力要点
视频合集 / 分P / 互动、番剧 / 课程 / 电影;DASH、MP4、FLV;4K、8K、HDR、杜比视界
音频AVC、HEVC、AV1;杜比全景声、Hi-Res
实时弹幕ASS / XML 格式,可解析弹幕池中几乎所有弹幕
历史弹幕ASS / XML 格式
音乐无损 FLAC、320Kbps 音乐 / 歌单
封面番剧 / 电影海报 / 合集封面 / 课程预览等
字幕SRT 格式
用户投稿视频 / 图文 / 专栏 / 动态 / 音频
稍后再看列表与单项
收藏夹任意用户收藏夹
NFO 刮削合集/剧集刮削、单集刮削
元数据ID3v2 / Vorbis Comments
AI 总结Markdown 格式,来自哔哩哔哩 AI 小助手

这些能力对应 docs/guide/parsing.md(解析链接)、docs/guide/resource.md(选择资源)、docs/guide/download.md(下载与处理)三个文档的完整操作流程。

5.2 账号类

扫码登录、密码登录、短信登录、刷新登录、参数签名、风控验证、指纹验证,全部标注完成。登录与会话管理由 src/services/login.ts 与后端 src-tauri/src/services/login.rs 协同实现,其使用细节与风险提示见 docs/guide/login.md 和 docs/guide/risk.md。

5.3 其他能力

明暗主题、监听剪贴板、HTTP 代理、过滤 PCDN、音频转 MP3、命名格式、历史记录。其中下载队列、任务调度与命名格式等底层实现分别位于 src-tauri/src/services/queue/(manager / scheduler / runtime / task)与前端 src/components/DownPage/ 系列组件中。

六、特性四:国际化 —— 四种语言与翻译源策略

“国际化”特性卡声明支持“简体中文、繁体中文、英语与日语”,仓库证据确凿:国际化入口 src/i18n/index.ts 注册了 4 个 locale——zh-CN、zh-HK、en-US、ja-JP,对应语言包位于 src/i18n/locales/,并将zh-CN设为fallbackLocale(回退语言)。

README 进一步说明维护策略:简体中文(zh-CN)为主要维护语言并作为其他语言的翻译源,多数翻译由 AI 生成后再人工润色。这一多语言架构也延续到了文档站本身——docs/config.ts 以lang: 'zh-CN'组织文档导航,而仓库同时维护 README_EN.md 与 README_JA.md。

七、数据存储与合规边界

根据 docs/guide/about.md 与 README 的声明,BiliTools 产生的所有数据(任务、配置、Cookie 等)均以SQLite 格式明文存储于用户本地,具体路径按平台区分:

  • Windows:%APPDATA%\com.btjawa.bilitools
  • macOS:$HOME/Library/Application Support/com.btjawa.bilitools
  • Linux:$HOME/.local/share/com.btjawa.bilitools

后端存储实现与数据库迁移逻辑可在 src-tauri/src/storage/(db.rs、migrate.rs、tasks.rs等)中查阅。

合规边界同样值得注意:本项目遵守 LICENSE 的GPL-3.0-or-later开源协议,任何形式的二次分发必须继续开源、遵守相同协议并保留原作者与版权信息;项目明确不会绕过身份验证机制、破解付费资源,且不纵容盗版、非法转载与黑产用途——因使用本项目产生的账号风控或其他后果由用户自行承担。这也是“基于用户账号解析资源”设计的前提约束。

八、文档导航:从快速开始到深入使用

文档站首页的两个入口——“快速开始”(/guide/about)与“博客 / 其他信息”——对应到仓库即为完整的文档体系。若想快速上手,推荐按以下顺序阅读:

  1. 安装:docs/guide/install.md——下载与安装说明;
  2. 登录:docs/guide/login.md——扫码 / 密码 / 短信登录与会话刷新;
  3. 解析与下载:docs/guide/parsing.md → docs/guide/resource.md → docs/guide/download.md——从解析链接、选择资源到下载与后处理;
  4. 格式须知:docs/guide/stream.md——DASH / MP4 / FLV 的差异与取舍;
  5. 设置:docs/guide/settings.md + docs/help/index.md——配置项总览与常见问题。

结语

从docs/index.md首页的四个特性出发,可以看到 BiliTools 在“轻量、简约、功能、国际化”四个维度上均有扎实的源码与配置支撑:Tauri + Rust 保证小体积与高性能,Vue 3 + TypeScript 提供轻盈可维护的界面,内置 aria2c / ffmpeg / DanmakuFactory 让下载与处理开箱即用,四语言 i18n 与 SQLite 本地明文存储则定义了清晰的边界与可审计性。对于想研究 Tauri 2.x 混合式桌面应用架构、B 站 API 客户端实现或 Vue 3 国际化方案的开发者而言,这份仓库是一份结构清晰、可直接对照源码阅读的参考实现。

  • 桌面应用
  • 音视频

【免费下载链接】BiliTools

本项目已停止维护。

项目地址:https://gitcode.com/GitHub_Trending/bilit/BiliTools
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 17:01:48

LeetCode 926:将字符串翻转到单调递增的完整解法与面试技巧

第一次在算法题库里撞见“将字符串翻转到单调递增”这道题时,我的第一反应是——这题目看着简单,动起手来全是细节,而且区分度极高。LeetCode 第 926 题,给定一个只包含 0 和 1 的字符串,允许把任意位置的 0 翻成 1 或…

作者头像 李华
网站建设 2026/10/1 17:01:17

华硕笔记本亮度失效的深层原因与分层修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 16:57:24

Hindsight:轻量嵌入式LLM调用可观测性工具

1. 项目概述:Hindsight 不是“事后诸葛亮”,而是一套可落地的 LLM 操作审计与回溯系统你有没有遇到过这样的场景:线上服务突然返回一堆400 Bad Request或更扎心的401 Unauthorized: incorrect api key provided,日志里只有一行冰冷…

作者头像 李华
网站建设 2026/10/1 16:55:47

嵌入式内存管理实战:从malloc到栈溢出的避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华