Situation
- 关注太多UP主(2000+), 无法快速有效的阅览完动态和视频
- B站Web端太占资源, 开20-30个视频Tab会导致新Edge直接崩溃
- 近期随机出现的PCDN令本大会员很恼火
- 通过 CMD 使用 BBDown 稍显麻烦
Target
- 支持订阅的动态分类查看
- Native Client, 最好能跨平台
- 替换PCDN
- 封装BBDown的命令
Actions
- 因为有些.NET的经验 (上份工作的主要技术栈是
ASP.NET Core
), 之前也实践过SwiftUI和Android Compose这类MVVM框架, 所以尝试阅读了几款知名第三方B站客户端的源码 (BiliLite, 哔哩), 但是很快被XAML啰嗦的语法劝退了, 尤其连Rider对XAML的支持都不太完善, 给我整麻了. - 尝试从零开始看了一个星期 C++ 和 QT, 进度很不理想, 暂时放弃.
- 想起来之前用过的Android Compose出了Desktop版本, compose-jb, 摸索了一个星期, 有些成果, 但是工具链太原始了, 很多包都需要在dev-daily下才能跑起来, bug也比较多, 基于Swing封装的一些组件效果很差, 放弃.
- 看 compose-jb 教程时在评论区看到了Tauri, 看了一下介绍目标是替代Electron(因为一开始就追求Native, 直接排除了Electron.), 细看了一下, 后端用Rust替换了node作为沟通操作系统的bridge. Rust大名几年多有耳闻, 总免不了高性能的标签, 决定一试.
- 学习 Tauri 时了解到了 Vue3 和 Vite, 体验过后被速度折服, 本着学习Vue 3的额外目标确定了开发平台.
Result
- Target全部实现
- 借助Github Actions 多平台自动构建Release.
- Tauri的Shell部分缺失对中文的支持, 开发版已经更新, 等上游更新
Readme
Tauri跨平台的B站客户端 播放器
说是客户端, 其实只实现了播放和动态相关的功能…因为其他功能我基本不用, 个人无法抵抗推荐流, 所以也从来不看手机版和Web的首页.
先尝试阅读了几款知名第三方B站客户端的源码 (BiliLite, 哔哩), XAML那个语法太难受, 而且无法跨平台, 个人有一小半时间在用Mac.
经过几番周折知道了Tauri.
基于 Tauri + Vite + Vue 3 构建, 也算个人学习Vue 3的练手项目
- 核心播放功能和弹幕支持来自 DPlayer.js
- API 来自 Github 的公开仓库 bilibili-API-collect
- Rust 启动本地代理取流
feature
- 极简 只有视频动态和播放功能 没有推荐流 没有B博
- 支持视频动态过滤 by 分区 | 标题 | UP主
- 单页播放器 支持播放列表
- 替换了随机出现的PCDN
- 对 BBDown 的进行了简单封装
- 性能优秀 占用很小 实测WIN 11下启动速度与原生UWP相当
- 跨平台 已经Release了 macOS Ubuntu Win 的安装包
- 明/暗主题支持
问题
- dplayer 不支持混流, 借助其事件机制配合原生audio简单实现混流, 可能会发生音画不同步的情况(多出现在切换视频时), 暂停再播放可缓解
- 评论区和弹幕屏蔽缺少高级功能, 只能满足简单浏览
todo
- Rust + WASM 解决播放混流, 改进DPlayer的弹幕引擎
- 完善评论区, 增加特色功能–查成分, 评论内容查重
- 接入B站的字幕
- 多窗口播放模式
- 自定义插件支持
- 可能会实现其他的功能模块
仓库地址
Github: bbhouse-tauri