A Bilibili Cross-Platform Desktop Client Powered By Tauri

Overview

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

  • 性能优秀, 实测 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.5 界面功能正常, 但由于WebKit下<Video>组件的未知问题, 使用Dash播放时缓冲策略异常, 需要非常久才能播放, 已强制切换为FLV模式, 此模式对网络质量要求较高

Ubuntu

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

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

运行截图:

1660423611png

图片

致谢

  • 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
  • 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
You might also like...

A tiny cross-platform client for SQLite3, with precompiled binaries as the only third-party dependencies.

A tiny cross-platform client for SQLite3, with precompiled binaries as the only third-party dependencies.

Tiny SQLite3 A tiny cross-platform client for SQLite3, with precompiled binaries as the only third-party dependencies. A nice feature about this modul

Oct 27, 2022

Desktop App for mdSilo: Tiny Knowledge silo on your desktop.

mdSilo A mind silo for storing ideas, thought, knowledge with a powerful writing tool. built with React and Tauri. Demo Discord This is desktop app, a

Dec 27, 2022

This provides an extension integration with Docker Desktop to run k9s quickly and easily through the Docker Desktop interface.

This provides an extension integration with Docker Desktop to run k9s quickly and easily through the Docker Desktop interface.

k9s extension for Docker Desktop This provides an extension integration with Docker Desktop to allow k9s quickly and easily through the Docker Desktop

Dec 16, 2022

A toolkit to rapidly scaffold out a new tauri-apps project using the framework of their choice.

A toolkit to rapidly scaffold out a new tauri-apps project using the framework of their choice.

create-tauri-app Component Version create-tauri-app About Tauri Tauri is a polyglot and generic system that is very composable and allows engineers to

Jan 4, 2023

Sveltekit + Tauri Template

Skitty Template for building SvelteKit + Tauri (Skitty) Warning This project is supposed to be used temporary only (until svelte-add tauri has finishe

Jul 25, 2022

A Tauri update server, hosted as a Cloudflare edge function

Tauri Update Server: Cloudflare One-Click Deploy Click the button above, let Cloudflare walk you through: it's easy! Go to your forked repository, edi

Dec 14, 2022

Markdown note maker (with Git sync) using Tauri.

Markdown note maker (with Git sync) using Tauri.

Mediocre Markdown note maker (with Git sync) using Tauri. Screens Tech Stack Frontend Monaco Editor for the editor interface Chakra UI library Redux T

Dec 6, 2022

A Tauri + Next.js (SSG) template, with TailwindCSS, opinionated linting, and GitHub Actions preconfigured

A Tauri + Next.js (SSG) template, with TailwindCSS, opinionated linting, and GitHub Actions preconfigured

Tauri + Next.js Template This is a Tauri project template using Next.js, bootstrapped by combining create-next-app and create tauri-app. This template

Dec 30, 2022

Freewall is a cross-browser and responsive jQuery plugin to help you create grid, image and masonry layouts for desktop, mobile, and tablet...

Freewall is a cross-browser and responsive jQuery plugin to help you create grid, image and masonry layouts  for desktop, mobile, and tablet...

Freewall Freewall is a cross-browser and responsive jQuery plugin to help you create many types of grid layouts: flexible layouts, images layouts, nes

Dec 27, 2022
Comments
  • add live danmaku

    add live danmaku

    Feature

    • 添加直播弹幕(但是还无法发送弹幕,具体见 live.send()具体可以做什么,怎么使用呢。能更新下文档相关内容吗。)
    • 直播也添加了“我全都要”按钮
    • 加了个直播hls开关(因为我原先取播放地址接口返回的m3u8高概率404,现在V2默认使用hls是因为pcdn的情况吗?或许后续也可以把这个开关去了只是用hls)
    • 去除live参数(1.1.0版本同一个播放器窗口先播放直播后再播放视频会没有进度条,个人认为不去定义dplayer的live参数,这样hls播放添加了一个即时回看feature)

    Issue

    • 是否能改成点击图片直接播放,点击标题添加到播放列表呢?(可能看封面大图的需求并没有那么高,我自己改成直接播放后使用一段时间后确实蛮舒服的🥲)
    opened by kanoshiou 4
  • GStreamer element autoaudiosink not found

    GStreamer element autoaudiosink not found

    The title is the error log.

    OS Arch Linux with the latest update

    How I install this on Arch Download the deb package and uncompress it, copy all file in usr folder to /usr

    How to solve it sudo pacman -S gst-plugins-good gst-plugins-bad


    By the way, video can't be played on Arch Linux. This is the output log.

    $ bbhouse-app
    Asset `video` not found; fallback to video.html
    proxy: /upgcxcode/91/52/804485291/804485291_nb3-1-30112.m4s
    proxy: /upgcxcode/91/52/804485291/804485291_nb3-1-30280.m4s
    proxy: /upgcxcode/91/52/804485291/804485291_nb3-1-30280.m4s
    proxy: /upgcxcode/91/52/804485291/804485291_nb3-1-30280.m4s
    
    opened by Syize 1
Releases(v1.1.1)
Owner
ziyu
pretend to code...
ziyu
An App for backing up and better displaying Onetab data Powered by Tauri.

Onetab Re 『Data is Priceless』 Onetab Re 是一款用于备份并原样展示Onetab数据的应用,基于 Tauri 跨平台构建,支持 Windows macOS Linux. 备份脚本使用方法 请先确认已经正确安装node.js 安装后打开软件的scripts目录, 为

ziyu 9 Nov 12, 2022
Hacker Tools cross-platform desktop App, support windows/MacOS/LInux ....

Hacker Tools cross-platform desktop App, support windows/MacOS/LInux ....

51pwn 29 Jan 8, 2023
A cross-platform desktop application of tools for developers

A cross-platform desktop application of tools for developers ?? Online Web This website provides online version of the same tools echoo ?? Offline Cli

Kyle 133 Dec 24, 2022
Webview is a tiny cross-platform library to make web-based GUIs for desktop applications.

webview_deno deno bindings for webview Webview is a tiny cross-platform library to make web-based GUIs for desktop applications. ⚠️ This project is st

webview 1.2k Jan 2, 2023
A cross-platform desktop app with a nice interface to Stable Diffusion and others

GenerationQ GenerationQ (for "image generation queue") is a cross-platform desktop application (screens below) designed to provide a general purpose G

Weston C. Beecroft 25 Dec 28, 2022
This plugin can generate timestamps for video, audio and Bilibili video, it takes you to the corresponding video/audio position when clicked.

logseq-plugin-media-ts 本插件能够生成视频、音频以及 B 站视频的时间戳,点击时间戳后会跳转到对应的音视频位置。 This plugin can generate timestamps for video, audio and Bilibili video, it takes

Seth Yuan 58 Jan 3, 2023
(WIP) Bilibili-live danmu listener with type.

blive-message-listener Bilibili-live danmu listener with type. Bilibili 直播间弹幕监听器,支持类型输出。 Features 完整的类型支持 Install npm i blive-message-listener Usage

Diu 23 Dec 28, 2022
(WIP) Bilibili-live danmu listener with type.

blive-message-listener Bilibili-live danmu listener with type. Bilibili 直播间弹幕监听器,支持类型输出。 Features 完整的类型支持 Install npm i blive-message-listener Usage

Diu 4 Sep 22, 2022
GetOsLocalesCrossPlatform - A cross platform alternative to get locales used on the platform. Works on Node, Electron, NW.js and Browsers

getOsLocalesCrossPlatform A cross platform alternative to get locales used on the platform. Works on Node, Electron, NW.js and Browsers This script is

null 1 Jan 2, 2022
LucaMail - an Open Source,Cross Platform Email Client

LucaMail v0.0.1-beta An Awesome Cross Platform Email Client! Note : This Project Is Still in Beta Version Website . Report Bug . Request Feature . Dis

Yuva raghav 210 Dec 28, 2022