View on GitHub

KelpsGet

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

KelpsGet v0.1.3

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

English Português Español

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:
    • Uses the filename from the URL (e.g., file.txt from https://example.com/file.txt).
    • Defaults to index.html if the URL ends with /.
  3. Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
  4. Space Checking: Checks available disk space before downloading.
  5. Automatic Retry: Retries download if connection fails.
  6. Advanced Download Mode:
    • Downloads file in parallel chunks for better performance
    • Supports resuming interrupted downloads
    • Automatically handles large files efficiently
  7. Proxy Support:
    • HTTP, HTTPS, and SOCKS5 proxy support
    • Proxy authentication
    • Configurable proxy settings
  8. 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:

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

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

🎯 Next Steps

We are working on the following improvements:

Want to contribute to any of these features? Check out our contributing guide!

License

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