A bilibili downloader built by Tauri and the language you-know-who.

Overview

Contributors Forks Stargazers Issues MIT License


Logo

Bilibili Downloader

A bilibili video downloader app built by Tauri, Vue and Rust!
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. Contact
  7. Acknowledgments

About The Project

Product Name Screen Shot

Product Architecture

This is a Downloader for bilibili built by Tauri and Rust.

<iframe src="//player.bilibili.com/player.html?aid=953038969&bvid=BV1Ts4y1w7Yd&cid=1114294158&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" height="480px"> </iframe>

Important

ffmpeg

You need ffmpeg to merge the video and audio downloaded. Official download is here.

ffmpeg_setting.

So, for MacOS, you need use brew to install ffmpeg, or just download one and put it into /usr/local/bin. Then you need use which ffmpeg to get the detailed path of it, and paste it in the app's setting, or you can't invoke the ffmpeg in released tauri app. (The chat-GPT says Unix can not get path in release version)

Moreover, due to the apple developer is expensive, so I can not provide an arch version. But the x64 version in release page can still be used, just remember opening it by right clicking the app icon and select open for the first time. And you should also permit your Mac allowing unknown source app in the system setting.

For Windows, downloading the ffmpeg and adding it to path are enough. Recommend this portable version. Official version is also Ok certainly.

You could also specify a path to ffmpeg as you like in settings.

An important new feature: Key Chain

For protecting your account security, from v0.0.4 on, I'll use the system key manager to protect your bilibili cookie. This is implemented by a rust crate called keyring.

For example, it will use key chain (AKA 钥匙串访问.app in Chinese macOS system) to manage the bilibili downloader's config including cookie. That will be much safer if you don't allow other apps to visit it.

warning

Don't be worried as you can see the system having told you bili downloader only ask for one key with a name called bili downloader which will be created by the app itself later. Getting Always allow option chosen will be greatly convinient for you.

What's less important, you should ensure your system has Environment variable named USERNAME. However, almost all system has it. If not, the app will just panic. Check it by echo $USERNAME in Linux or Unix like system or Get-ChildItem Env: | findstr USERNAME in powershell of Windows as you like for it's usually unnecessary.

If you don't like the app and decide to uninstall it, just deleting the key named bilibili downloader in key chain in macOS is OK. Other system I'm sorry I don't known.

And if the cookie is too long, it will also panic. All you need is just the ESSADATA line of the cookie. (where to find cookie)

delete key

By the way, many apps like vscode or adobe save the key info through the same way.

Last, I don't know how Windows protect the cookie. That's strange the system didn't ask permission when I test the app on Windows.

Advantages

Here are advantages:

  • Simultaneous downloads: This downloader can potentially download multiple videos at once, making it a faster and more efficient tool for users.
  • Reduced storage space: A smaller-sized image downloader can potentially take up less space on the user's device, which is especially beneficial for devices with limited storage capacity.

(back to top)

Built With

  • Rust
  • Tauri
  • Tokio
  • Vue

(back to top)

Getting Started

You can compile by yourself, or just got release here.

Prerequisites

You need rust, tauri-cli, npm first.

  • npm
    npm install npm@latest -g
  • tauri
    cargo install create-tauri-app

And maybe you need this Tauri Quick Start for further infomation.

Compile

  1. Clone the repo
    git clone https://github.com/kingwingfly/bilibili-downloader-rs.git
    cd bilibili-downloader-rs
  2. Install NPM packages
    npm install
  3. start compile
    cargo tauri build

(back to top)

Usage

Maybe you can get cookie through your browser.

cookie_get cookie_setting

(back to top)

Roadmap

  • Keep config
  • Fix bug: fast switch before the real download beginning will lead range downloads out of sync
  • The real pause of resp.chunk()
  • Lazily check restart
  • Performance optimize
  • Encrypt cookie
  • Limit the download speed in default
  • Remind user to like, coin and collection
  • File name check
  • Use JoinSet replace jhs

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Contact

Louis - @email - [email protected]

Project Link: https://github.com/kingwingfly/bilibili-downloader-rs

(back to top)

Acknowledgments

Some document may help in developing tauri app and crawler.

(back to top)


You might also like...
Tool that was built quickly for personal needs, you might find it useful though
Tool that was built quickly for personal needs, you might find it useful though

COPYCAT Produced with stable-diffusion Clipboard (copy/paste) history buffer for terminal emulators, MAC OS gui and VIM* environment usage. Rrequireme

Koi is a simple tool built to let you use ChatGPT through the command line

Koi is a simple tool built to let you use ChatGPT through the command line. It adds the ability to let ChatGPT run commands on your computer in order to help you out, or to help you out with complicated tasks.

Shellfirm - Intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification
Shellfirm - Intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification

shellfirm Opppppsss you did it again? 😱 😱 😰 Protect yourself from yourself! rm -rf * git reset --hard before saving? kubectl delete ns which going

zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Dura - You shouldn't ever lose your work if you're using Git

Dura Dura is a background process that watches your Git repositories and commits your uncommitted changes without impacting HEAD, the current branch,

This automatically patches the RoPro extension for you, allowing you to have pro_tier for free.

RoPro Patcher This automatically patches the RoPro extension for you, allowing you to have pro_tier for free. NOTE Chrome, Brave (and possibly other b

Sero is a web server that allows you to easily host your static sites without pain. The idea was inspired by surge.sh but gives you full control.

sero Lightning-fast, static web publishing with zero configuration and full control 📖 Table Of Contents 📖 Table Of Contents 🔧 Tools ❓ About The Pro

bevy_scriptum is a a plugin for Bevy that allows you to write some of your game logic in a scripting language

bevy_scriptum is a a plugin for Bevy that allows you to write some of your game logic in a scripting language. Currently, only Rhai is supported, but more languages may be added in the future.

A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM.
A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM.

sortysort A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM. Try it in your browser from here Testing locally cargo r

Releases(app-v0.0.6)
Owner
王翼翔
重庆大学 Chongqing Univ
王翼翔
Store your transfer.sh links, so you can remember them later and know when they will expire, but now written in Rust.

Transfer.sh helper Rusted The idea of the script is to store your transfer.sh links and simplify its usage, so you can remember them later and know wh

Reinaldo Rozato Junior 10 Nov 30, 2022
(Rust) Coloring terminal so simple you already know how to do it !

Colored Coloring terminal so simple, you already know how to do it! "this is blue".blue(); "this is red".red(); "this is red on blue".red(

Thomas Wickham 1.2k Jan 4, 2023
nhdl - a command-line doujinshi downloader client built in rust!

nhdl nhdl - a command-line doujinshi downloader client built in rust! goals fast and asynchronous doujinshi downloader, supporting various doujinshi s

Lumine 2 Dec 23, 2022
A command-line downloader for sites archived on the Wayback Machine

This is a small command-line utility I wrote to help with browsing archived websites from the Wayback Machine, which can sometimes be pretty slow.

Jonas Schievink 7 Oct 18, 2022
cyberdrop-dl - cyberdrop.me Downloader written in Rust 🦀

cyberdrop-dl - cyberdrop.me Downloader written in Rust ??

wmw 103 Dec 28, 2022
Pixiv downloader written in rust.

zettai-ryouiki "Zettai ryōiki refers to the area of bare skin in the gap between overknee socks and a miniskirt." About Pixiv downloader written in ru

Kuba Ellwart 3 Dec 29, 2021
A CLI batch downloader for your Bandcamp collection.

bandsnatch A CLI batch downloader for your Bandcamp collection. Bandsnatch is a Rust tool for downloading all of your Bandcamp purchases all at once i

Michael Mitchell 12 Jan 1, 2023
Simple template to use csr and ssr leptos with tauri for ios/android/windows/macos/linux and web dev

Tailwind-Leptos-Tauri Template Simple template to use csr and ssr leptos with tauri for ios/android/windows/macos/linux and web dev Just clone the rep

Victor Batarse 11 Mar 10, 2024
Cross-platform WebView library in Rust for Tauri.

Cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux. Overview Wry connects the w

Tauri 2.2k Jan 9, 2023
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

M4jrT0m 1 Dec 24, 2021