# [开源] Tauri 跨平台的B站客户端 BBHouse 基于 Vite + Vue 3 + Rust

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

- 发布于: 2022-08-14
- 标签: Rust, Vue, Web, tauri, 前端
- 查看 HTML 版本: https://bilibili.cat/posts/bbhouse

---

[![endcloud/bbhouse-tauri](https://opengraph.githubassets.com/e99b6d5fccc2c9ee0d3a4d515f8b337bd98f88bbb64bf7cb3102d0ec121f84f5/endcloud/bbhouse-tauri)](https://github.com/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的练手项目

-   核心播放功能和弹幕支持来自 [DPlayer.js](https://dplayer.js.org/zh/guide.html#%E5%AE%89%E8%A3%85)
-   API 来自 Github 的公开仓库 [bilibili-API-collect](https://github.com/SocialSisterYi/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](https://github.com/endcloud/bbhouse-tauri)
