#download #command-line #disk-space #progress-bar #socks5-proxy #cli #file

app kelpsget

A modern, lightweight wget clone written in Rust for fast and reliable file downloads from the command line

4 releases

Uses new Rust 2024

new 0.1.3 Mar 11, 2025
0.1.2 Mar 10, 2025
0.1.1 Mar 10, 2025
0.1.0 Mar 7, 2025

#249 in Command line utilities

Download history 105/week @ 2025-03-03

105 downloads per month

MIT license

31KB
537 lines

KelpsGet v0.1.3

A modern, lightweight wget clone written in Rust for fast and reliable file downloads from the command line.

Features

✅ Simple CLI tool for downloading files via HTTP/HTTPS.
✅ Progress bar with real-time speed and ETA tracking.
✅ Custom output names (-O flag to rename downloaded files).
✅ MIME type detection and proper file handling.
✅ Cross-platform (Linux, macOS, Windows).
✅ Silent mode for scripts.
✅ Automatic space checking before download.
✅ Automatic retry on connection failure.
✅ File name validation.
✅ Support for different MIME types.
✅ Detailed download information display.
✅ Advanced download mode with parallel chunks and resume capability.
✅ Proxy support (HTTP, HTTPS, SOCKS5).
✅ Automatic compression and caching.
✅ Speed limiting and connection control.

Installation

Option 1: Install via Cargo

cargo install kelpsget

Option 2: Download Pre-built Binaries

Download the latest binary for your OS from Release

Linux/macOS:

chmod +x kelpsget  # Make executable  
./kelpsget [URL]    # Run directly

Windows:

Run the .exe file directly.

Usage Examples

Basic Download:

kelpsget https://example.com/file.txt

Rename the Output File:

kelpsget -O new_name.txt https://example.com/file.txt

Silent Mode:

kelpsget -q https://example.com/file.txt

Advanced Download Mode (Parallel and Resumable):

kelpsget -a https://example.com/large_file.zip

Using Proxy:

kelpsget -p http://proxy:8080 https://example.com/file.txt

With Proxy Authentication:

kelpsget -p http://proxy:8080 --proxy-user user --proxy-pass pass https://example.com/file.txt

Speed Limiting:

kelpsget -l 1048576 https://example.com/file.txt  # 1MB/s limit

Disable Compression:

kelpsget --no-compress https://example.com/file.txt

Disable Cache:

kelpsget --no-cache https://example.com/file.txt

How It Works

  1. Progress Bar: Shows download speed, ETA, and bytes transferred.
  2. Smart File Naming:
  1. Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
  2. Space Checking: Checks available disk space before downloading.
  3. Automatic Retry: Retries download if connection fails.
  4. Advanced Download Mode:
  • Downloads file in parallel chunks for better performance
  • Supports resuming interrupted downloads
  • Automatically handles large files efficiently
  1. Proxy Support:
  • HTTP, HTTPS, and SOCKS5 proxy support
  • Proxy authentication
  • Configurable proxy settings
  1. Optimization Features:
  • Automatic compression (gzip, brotli, lz4)
  • File caching for faster repeated downloads
  • Speed limiting
  • Connection control

Configuration

KelpsGet uses a configuration file located at:

  • Windows: %APPDATA%\kelpsget\config.json
  • Linux/macOS: ~/.config/kelpsget/config.json

Example configuration:

{
  "proxy": {
    "enabled": false,
    "url": null,
    "username": null,
    "password": null,
    "proxy_type": "Http"
  },
  "optimization": {
    "compression": true,
    "compression_level": 6,
    "cache_enabled": true,
    "cache_dir": "~/.cache/kelpsget",
    "speed_limit": null,
    "max_connections": 4
  }
}

Security Features

  • Space Checking: Ensures enough disk space before downloading.
  • File Name Validation: Prevents path injection.
  • URL Handling: Safely handles URLs.
  • Automatic Retry: Retries download if network fails.
  • Secure Proxy Support: Encrypted proxy connections.

Contributing

Found a bug or want to add a feature? Open an issue or submit a PR!

🚀 Download files effortlessly with Rust's speed and reliability. 🚀

License

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

Dependencies

~24–39MB
~789K SLoC