#hugging-face #huggingface #downloader #command-line #command-line-tool

app rustyface

A Huggingface downloading CLI tool written in Rust

2 releases

0.1.1 Aug 5, 2024
0.1.0 Aug 4, 2024

#617 in Network programming

38 downloads per month

MIT license

260KB
421 lines

RustyFace

A command line app for downloading Huggingface repositories with Rust.

RustyFace Logo

Crates.io License: MIT

Why using this?

RustyFace does not require installing additional dependencies such as git or git lfs etc. It aims to be lightweight and portable. In addition to that, RustyFace is friendly to users who live in Mainland China, where HuggingFace accessibility is unstable, as this CLI app adopted a mirror that can be accessed globally.

The mirror site used in this project is hf-mirror.com

How to Install and Use RustyFace

First, you need to have Rust installed. For those new to Rust, please refer to the official installation guide.

Install Rust

On Linux and macOS:

curl https://sh.rustup.rs -sSf | sh

On Windows, you can download the installation executable via this link: https://win.rustup.rs/

Install RustyFace

After done installing Rust, just type this to your terminal:

cargo install rustyface

Use RustyFace to Download Repositories

Try RustyFace out with this simple command line:

rustyface --repository sentence-transformers/all-MiniLM-L6-v2 --tasks 4
  • --repository is followed by the repo_id of the repository that you want to download from HuggingFace.
  • --tasks is followed by the number of concurrent downloads. For example, 4 means downloading 4 files at once. It is recommended to use a lower number if your network conditions do not support higher concurrency.

Feedback & Further Development

Any participation is appreciated! Feel free to submit an issue, discussion or pull request. You can find me on WeChat: baoxinyu2007 or Discord: https://discord.gg/UYfZeuPy

License

This project is licensed under the MIT License. See the LICENSE file for details.

Packages Used

  • clap for command line argument parsing.
  • futures-util for asynchronous operations.
  • indicatif for progress bars.
  • log for logging.
  • reqwest for HTTP requests.
  • sha2 for SHA-256 hashing.
  • tokio for asynchronous runtime.
  • fern for logging configuration.
  • chrono for date and time handling.

Dependencies

~18–30MB
~501K SLoC