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
105 downloads per month
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
- Progress Bar: Shows download speed, ETA, and bytes transferred.
- 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 /.
- Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
- Space Checking: Checks available disk space before downloading.
- Automatic Retry: Retries download if connection fails.
- Advanced Download Mode:
- Downloads file in parallel chunks for better performance
- Supports resuming interrupted downloads
- Automatically handles large files efficiently
- Proxy Support:
- HTTP, HTTPS, and SOCKS5 proxy support
- Proxy authentication
- Configurable proxy settings
- 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