Skip to content

endcloud/bbhouse-tauri

Repository files navigation

BBHouse

GitHub release (latest by date) GitHub Release Date GitHub All Releases GitHub stars GitHub forks

取自常见的『我在B站买了房』的评论

Release Builder


BBHouse 是一款 哔哩哔哩 的第三方应用,基于 Tauri 跨平台构建,支持 Windows macOS Linux.

核心功能

  • 一个支持对视频(直播)动态分区展示的主页, 去除了B博和推荐流
  • 一个支持无限添加的 (临时的) 稍后播放列表与配套的播放器

请注意, 本项目无法无能力为非大会员提供大会员的服务.

feature

  • 极简, 目前只有视频动态和播放功能 没有推荐流 没有B博
  • 支持视频动态过滤 by 分区 | 标题 | UP主
  • 独立窗口的播放器 支持播放列表
  • 替换了随机出现的PCDN
  • BBDown 的进行了简单封装

此功能需要先自行安装BBDown, 并安装ffmpegaria2c.

  • 性能优秀, 实测 Win 11 下启动速度与原生UWP相当, Mac 下也是
  • 跨平台, 已经Release了 macOS | Ubuntu | Win 的安装包
  • 明/暗主题支持

解决的痛点

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

存在的问题

功能

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

项目

  • 项目中把 Utils 全部写成了 Hooks 的命名形式, 属于个人放飞自我的做法, 觉得这样更美观
  • 由于目前涉及的功能很少, 项目中没有对请求和页面做模块化封装

todo

  • Rust + WASM 探索播放混流的解决可能
  • 完善评论区, 增加特色功能--如『枝网查重』等
  • 完善播放器与弹幕的高级功能, 改进DPlayer的弹幕引擎
  • 深度链接, 支持从网页跳转
  • 多窗口播放模式
  • 自定义插件支持
  • 其他的功能模块

技术细节

  • 基于Vue 3 + Vite + TypeScript 构建用户界面
  • 核心播放功能与弹幕引擎来自 DPlayer.js
  • API来自公开仓库 bilibili-API-collect
  • Rust 建立本地反向代理进行取流
  • Tauri 沟通用户界面与Rust模块并构建完整二进制文件

跨平台

Windows

  • win 11 21H2 所有功能正常, 可开启HEVC
  • win 10 1809 所有功能正常, 可开启HEVC

请注意, 21H1 之前的Win10并没有内置WebView2, 安装时会自动下载, 安装时间会比较长

开启HEVC需要安装 来自设备制造商的HEVC扩展

macOS

  • macOS 12.6 界面功能正常, 但由于WebKit下<Video>组件的未知问题, 使用Dash播放时缓冲策略异常, 需要非常久才能播放
  • 已强制切换为FLV模式, 此模式对网络质量要求较高
  • 用户可通过 "强制DASH播放" 进行Dash播放可行性测试

Ubuntu

  • Ubuntu 20.04 界面部分组件异常, 播放异常, 且Dash与FLV均无法播放, 推测原因是WebKitGtk版本过低, 需要4.0以上

作者的 Ubuntu 20.04 上tauri相关工具链安装失败, 无法调试, 计划近期升级至22.04测试

  • 用户可通过 "强制DASH播放" 进行测试

运行截图:

Windows

macOS

致谢

  • Tauri Build smaller, faster, and more secure desktop applications with a web frontend.
  • Vue The progressive framework for building user interfaces.
  • Vite Next generation frontend tooling. It's fast!
  • Element-Plus 🎉 A Vue.js 3 UI Library made by Element team
  • DPlayer.js 🍭 Wow, such a lovely HTML5 danmaku video player
  • APlayer.js 🍭 Wow, such a beautiful HTML5 music player
  • bilibili-API-collect 哔哩哔哩-API收集整理【不断更新中....】
  • BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器.
  • flv.js HTML5 FLV Player
  • hls.js HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.
  • crypto-js JavaScript library of crypto standards.
  • qrcode.vue A Vue.js component to generate qrcode.
  • vue3-contextmenu vue3 contextmenu. vue3 右键菜单
  • tokio A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
  • hyper An HTTP library for Rust
  • hyper-rustls Integration between hyper HTTP library and rustls TLS stack
  • anyhow Flexible concrete Error type built on std::error::Error