A simple and fast download accelerator, written in Rust

Overview

zou

A simple and fast download accelerator, written in Rust

Zou is a Snatch fork by @k0pernicus. Snatch is a fast and interruptable download accelerator, written in Rust, from @k0pernicus and @Jean-Serge.

Current features

  • Simple: a command line tool to manage easily your downloads ;
  • Fast: multithreading support ;
  • Interruptable: work in progress.

NOTE: Zou is on alpha version. This version runs well on remote contents with a length known before the download (with the content-length header from the server response).

Goal

Let's build a better wget (in Rust)!

Installation

  1. Install Rust and Cargo using rustup ;
  2. You can download two versions of Zou :
  • the latest build from crates.io: cargo install zou ;
  • the last commit version from Github: cargo install --git https://github.com/k0pernicus/zou.git --branch devel ;
  1. Enjoy !

Usage

Zou 0.2.0
Zou, a simple and fast download accelerator, written in Rust.

USAGE:
    zou [FLAGS] [OPTIONS] <url>

FLAGS:
    -d, --debug          Active the debug mode
        --force          Assume Yes to all queries and do not prompt
    -h, --help           Prints help information
    -s, --ssl_support    Switch to an SSL client
    -V, --version        Prints version information

OPTIONS:
    -o, --output <output>         Specify the local output
    -t, --threads <threads>       Threads which can use to download

ARGS:
    <url>

File examples

Contributing

You want to contribute to Zou ? Here are a few ways you can help us out :

  • test and deploy automatically the beta and stable binaries (with Travis for example),
  • improve the documentation,
  • improve the CLI,
  • add new features (please to see our issues),
  • report bugs.

If you want to create a pull request, this is the procedure to make it great:

  • create an issue to explain the problem you encountered (except for typo),
  • fork the project,
  • create a local branch to make changes (from our devel branch),
  • test your changes,
  • create a pull request (please compare it with our devel branch),
  • explain your changes,
  • submit !

Thank you for your interest in contributing to Zou ! :-D

FAQ

  • Why this fork ? Snatch has been developed when I was a R&D engineer at DernierCri - it was a "just-for-fun" project. Today, I do not work anymore in/with this startup, and I want to experiment something different.
    Zou is now a fun way to hack with Rust! :-)

  • Libraries cannot be build Please go check if you are using the latest version of rustc (stable), running rustup update.

  • fatal error: 'openssl/hmac.h' file not found If you are on a GNU/Linux distribution (like Ubuntu), please install libssl-dev. If you are on macOS, please install openssl and check your OpenSSL configuration:

brew install openssl
export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include
export OPENSSL_LIB_DIR=`brew --prefix openssl`/lib
export DEP_OPENSSL_INCLUDE=`brew --prefix openssl`/include
You might also like...
A TUI system monitor written in Rust
A TUI system monitor written in Rust

NO LONGER MAINTAINED. For a similar program, check out https://github.com/ClementTsang/bottom. ytop Another TUI based system monitor, this time in Rus

A non-root version of traceroute written in Rust

tracepath-rs A non-root version of traceroute written in Rust for Linux.

Dancing Links (“dlx”) solver for the exact cover problem, written in Rust. Can be used to create a sudoku solver.

Dancing Links “dlx” Dancing Links solver for “algorithm X” by Knuth This solver solves the exact cover problem using “algorithm X”, implemented using

LeftHK - A hotkey daemon written in Rust

LeftHK LeftHK - A hotkey daemon written in Rust THIS IS BETA SOFTWARE The configuration file should be created in ~/.config/lefthk/ and called config.

Untrusted IPC with maximum performance and minimum latency. On Rust, on Linux.

Untrusted IPC with maximum performance and minimum latency. On Rust, on Linux. When is this Rust crate useful? Performance or latency is crucial, and

OCI Runtime, Image and Distribution Spec in Rust

oci-spec-rs Open Container Initiative (OCI) Specifications for Rust This library provides a convenient way to interact with the specifications defined

desktop automation, screen capture, input listen/simulation, asar compress, color picker for nodejs and electron based on rust
desktop automation, screen capture, input listen/simulation, asar compress, color picker for nodejs and electron based on rust

desktop automation, screen capture, input listen/simulation, asar compress, color picker for nodejs and electron based on rust. 基于 Rust / WASM 提供截图、取色、键鼠事件监听模拟、压缩解压、图像处理、获取已安装应用等跨平台功能的现代异步 Nodejs 模块,占用空间小, 安装便捷, 使用简单, 高性能, 资源占用极小, 可取代 iohook 和 robotjs

GTK application for browsing and installing fonts from Google's font archive
GTK application for browsing and installing fonts from Google's font archive

Font Finder This project is a from-scratch implementation of TypeCatcher in Rust. It is a GTK3 application for browsing through and installing fonts f

Linux Kernel Manager and Activity Monitor 🐧💻
Linux Kernel Manager and Activity Monitor 🐧💻

Linux Kernel Manager and Activity Monitor 🐧 💻 The kernel is the part of the operating system that facilitates interactions between hardware and soft

Comments
  • Refactoring code

    Refactoring code

    Some refactoring have to be done for:

    • supporting mirrors feature better,
    • making easier to understand what is happening with mirrors,
    • managing a simple algorithm to bench mirrors and sort them automatically.

    Also, this refactoring code has to make integration of future existing protocols (like ftp and so on) easier.

    enhancement 
    opened by k0pernicus 0
  • Library API?

    Library API?

    Hey, I am developing an application and 've been looking for a downloader library. I like zou and would like to contribute and start using it as a library.

    I took a look at the code and there doesn't seem to be a straight forward API yet. Instead the cli binary sort of acts as it. Would be nice to decouple it and have main.rs consume a library API instead.

    Generally I am thinking about something like the following:

    fn download(uri: &str(I guess), final_path: path) Result<()> { 
        Weird magic that handles everything about downloading 
    }
    
    opened by alatiera 1
  • hyper 0.11?

    hyper 0.11?

    Compared to 0.9, I guess hyper dropped openssl dependency and made it a pure rust library.

    I wonder when snatch will move on to hyper 0.11 and give an option to decide whether to use openssl. OpenSSL can potentially introduce security issue.

    This will give users an option to use pure Rust binary.

    Same issue in snatch: https://github.com/derniercri/snatch/issues/76

    enhancement 
    opened by mssun 10
Owner
Antonin Carette
45% Machine Learning Engineer @ TadaWeb, 45% dad, 10% game dev. Support free and open source softwares.
Antonin Carette
Blazing 💥 fast terminal-ui for git written in rust 🦀

Blazing fast terminal client for git written in Rust Features Fast and intuitive keyboard only control Context based help (no need to memorize tons of

Stephan Dilly 11.8k Jan 5, 2023
A fast and minimalistic image viewer forked from the now discontinued emulsion.

Alloy Image viewer based on (now-discontinued) Emulsion. Alloy targets Windows, Mac, and Linux (with more targets to come!). A note for Linux users: W

Ardaku Systems 9 Dec 1, 2022
A fast duplicate file finder

The Directory Differential hTool DDH traverses input directories and their subdirectories. It also hashes files as needed and reports findings. The H

Jon Moroney 384 Dec 24, 2022
Super-fast command aliases with arguments.

Bonnie Bonnie is a command aliasing tool. If you have a super-long command that you have to run all the time, Bonnie is for you! Just define the comma

arctic_hen7 58 Dec 22, 2022
A system handler to get information and interact with processes written in Rust

A system handler to get information and interact with processes written in Rust

Guillaume Gomez 1.1k Jan 3, 2023
A simple rust-based tool for fetching system information

?? azf a simple rust-based tool for fetching system information you need a patched nerd font and the material design icons font ?? compiling you can c

Pedro Henrique 3 Dec 17, 2022
A customisable client for Discord rich presence using simple Lua configuration.

Installation | Usage | Configuration | Example Disco Disco is a customisable client for Discord rich presence using simple Lua configuration. Installa

KaitlynEthylia 5 Aug 7, 2023
A modern replacement for ps written in Rust

procs procs is a replacement for ps written in Rust. Documentation quick links Features Platform Installation Usage Configuration Features Output by t

null 3.6k Jan 5, 2023
A bash-like Unix shell written in Rust

Cicada Unix Shell Cicada is a simple Unix shell written in Rust. Documents Install cicada Environment Variables Cicada Builtins Completion RC File His

Hugo Wang 921 Dec 28, 2022
Performs distributed command execution, written in Rust w/ Tokio

Concurr: Distributed and Concurrent Command Execution, in Rust This project is dual licensed under MIT and Apache 2.0. Originally inspired by the GNU

Michael Murphy 93 Dec 18, 2022