endcloud/bbhouse-tauri

Situation

  1. 关注太多UP主(2000+), 无法快速有效的阅览完动态和视频
  2. B站Web端太占资源, 开20-30个视频Tab会导致新Edge直接崩溃
  3. 近期随机出现的PCDN令本大会员很恼火
  4. 通过 CMD 使用 BBDown 稍显麻烦

Target

  1. 支持订阅的动态分类查看
  2. Native Client, 最好能跨平台
  3. 替换PCDN
  4. 封装BBDown的命令

Actions

  1. 因为有些.NET的经验 (上份工作的主要技术栈是ASP.NET Core), 之前也实践过SwiftUI和Android Compose这类MVVM框架, 所以尝试阅读了几款知名第三方B站客户端的源码 (BiliLite, 哔哩), 但是很快被XAML啰嗦的语法劝退了, 尤其连Rider对XAML的支持都不太完善, 给我整麻了.
  2. 尝试从零开始看了一个星期 C++ 和 QT, 进度很不理想, 暂时放弃.
  3. 想起来之前用过的Android Compose出了Desktop版本, compose-jb, 摸索了一个星期, 有些成果, 但是工具链太原始了, 很多包都需要在dev-daily下才能跑起来, bug也比较多, 基于Swing封装的一些组件效果很差, 放弃.
  4. 看 compose-jb 教程时在评论区看到了Tauri, 看了一下介绍目标是替代Electron(因为一开始就追求Native, 直接排除了Electron.), 细看了一下, 后端用Rust替换了node作为沟通操作系统的bridge. Rust大名几年多有耳闻, 总免不了高性能的标签, 决定一试.
  5. 学习 Tauri 时了解到了 Vue3 和 Vite, 体验过后被速度折服, 本着学习Vue 3的额外目标确定了开发平台.

Result

  1. Target全部实现
  2. 借助Github Actions 多平台自动构建Release.
  3. Tauri的Shell部分缺失对中文的支持, 开发版已经更新, 等上游更新

Readme

Tauri跨平台的B站客户端 播放器

说是客户端, 其实只实现了播放和动态相关的功能…因为其他功能我基本不用, 个人无法抵抗推荐流, 所以也从来不看手机版和Web的首页.

先尝试阅读了几款知名第三方B站客户端的源码 (BiliLite, 哔哩), XAML那个语法太难受, 而且无法跨平台, 个人有一小半时间在用Mac.

经过几番周折知道了Tauri.
基于 Tauri + Vite + Vue 3 构建, 也算个人学习Vue 3的练手项目

feature

  • 极简 只有视频动态和播放功能 没有推荐流 没有B博
  • 支持视频动态过滤 by 分区 | 标题 | UP主
  • 单页播放器 支持播放列表
  • 替换了随机出现的PCDN
  • 对 BBDown 的进行了简单封装
  • 性能优秀 占用很小 实测WIN 11下启动速度与原生UWP相当
  • 跨平台 已经Release了 macOS Ubuntu Win 的安装包
  • 明/暗主题支持

问题

  • dplayer 不支持混流, 借助其事件机制配合原生audio简单实现混流, 可能会发生音画不同步的情况(多出现在切换视频时), 暂停再播放可缓解
  • 评论区和弹幕屏蔽缺少高级功能, 只能满足简单浏览

todo

  • Rust + WASM 解决播放混流, 改进DPlayer的弹幕引擎
  • 完善评论区, 增加特色功能–查成分, 评论内容查重
  • 接入B站的字幕
  • 多窗口播放模式
  • 自定义插件支持
  • 可能会实现其他的功能模块

仓库地址

Github: bbhouse-tauri