An open API service indexing awesome lists of open source software.

https://github.com/aspadax/rustyface

Download Huggingface repositories without the need to install dependencies
https://github.com/aspadax/rustyface

ai cli dataset datasets downloader huggingface model network network-programming rust

Last synced: 6 months ago
JSON representation

Download Huggingface repositories without the need to install dependencies

Awesome Lists containing this project

README

          

# 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

## Quick Installation (Recommended)
The easiest way to install RustyFace is using our installation script that automatically downloads the latest binary for your platform:

### One-line Installation
```bash
curl -sSL https://raw.githubusercontent.com/AspadaX/RustyFace/main/setup.sh | bash
```

Or download and run the script manually:
```bash
wget https://raw.githubusercontent.com/AspadaX/RustyFace/main/setup.sh
chmod +x setup.sh
./setup.sh
```

### Management Scripts
After installation, you can manage RustyFace using these scripts:

**Update to latest version:**
```bash
curl -sSL https://raw.githubusercontent.com/AspadaX/RustyFace/main/update.sh | bash
```

**Uninstall RustyFace:**
```bash
curl -sSL https://raw.githubusercontent.com/AspadaX/RustyFace/main/uninstall.sh | bash
```

## Alternative Installation Methods

### Manual Binary Download
You can download the corresponding binaries for your platform from the [Release section](https://github.com/AspadaX/RustyFace/releases). That way, you can just type this command to download Huggingface repositories:
```
rustyface_windows_x86 --repository sentence-transformers/all-MiniLM-L6-v2 --tasks 4
```
- `rustyface_windows_x86` is the binary file name that you have downloaded from the Release section.
- `--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.

### Installation via Cargo
If you would like to build from source, you need to have Rust installed. For those new to Rust, please refer to the [official installation guide](https://doc.rust-lang.org/cargo/getting-started/installation.html).

#### 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 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.

# Configurations

If you would like to use an alternative mirror, or the HuggingFace official base url, you may configure your env like below:

```bash
export HF_ENDPOINT=https://your-endpoint.com
```

# 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](https://crates.io/crates/clap) for command line argument parsing.
- [futures-util](https://crates.io/crates/futures-util) for asynchronous operations.
- [indicatif](https://crates.io/crates/indicatif) for progress bars.
- [log](https://crates.io/crates/log) for logging.
- [reqwest](https://crates.io/crates/reqwest) for HTTP requests.
- [sha2](https://crates.io/crates/sha2) for SHA-256 hashing.
- [tokio](https://crates.io/crates/tokio) for asynchronous runtime.
- [fern](https://crates.io/crates/fern) for logging configuration.
- [chrono](https://crates.io/crates/chrono) for date and time handling.