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

Un clon moderno y ligero de wget escrito en Rust para descargas de archivos rápidas y confiables desde la línea de comandos.

English Português Español

Características

✅ Herramienta CLI simple para descargar archivos vía HTTP/HTTPS.
✅ Barra de progreso con velocidad en tiempo real y tiempo estimado.
✅ Nombres de salida personalizados (flag -O para renombrar archivos).
✅ Detección de tipo MIME y manejo adecuado de archivos.
✅ Multiplataforma (Linux, macOS, Windows).
✅ Modo silencioso para scripts.
✅ Verificación automática de espacio antes de la descarga.
✅ Reintento automático en caso de fallo de conexión.
✅ Validación de nombre de archivo.
✅ Soporte para diferentes tipos MIME.
✅ Visualización detallada de información de descarga.
✅ Modo de descarga avanzado con chunks paralelos y capacidad de reanudación.
✅ Soporte para proxy (HTTP, HTTPS, SOCKS5).
✅ Compresión y caché automáticos.
✅ Limitación de velocidad y control de conexión.

Instalación

Opción 1: Instalación vía Cargo

cargo install kelpsget

Opción 2: Descargar Binarios Pre-compilados

Descarga el último binario para tu sistema operativo en Release

Linux/macOS:

chmod +x kelpsget  # Hacer ejecutable
./kelpsget [URL]   # Ejecutar directamente

Windows:

Ejecuta el archivo .exe directamente.

Ejemplos de Uso

Descarga Básica:

kelpsget https://ejemplo.com/archivo.txt

Renombrar el Archivo de Salida:

kelpsget -O nuevo_nombre.txt https://ejemplo.com/archivo.txt

Modo Silencioso:

kelpsget -q https://ejemplo.com/archivo.txt

Modo de Descarga Avanzado (Paralelo y Reanudable):

kelpsget -a https://ejemplo.com/archivo_grande.zip

Usando Proxy:

kelpsget -p http://proxy:8080 https://ejemplo.com/archivo.txt

Con Autenticación de Proxy:

kelpsget -p http://proxy:8080 --proxy-user usuario --proxy-pass contraseña https://ejemplo.com/archivo.txt

Limitación de Velocidad:

kelpsget -l 1048576 https://ejemplo.com/archivo.txt  # Límite de 1MB/s

Deshabilitar Compresión:

kelpsget --no-compress https://ejemplo.com/archivo.txt

Deshabilitar Caché:

kelpsget --no-cache https://ejemplo.com/archivo.txt

Cómo Funciona

  1. Barra de Progreso: Muestra velocidad de descarga, tiempo estimado y bytes transferidos.
  2. Nombrado Inteligente de Archivos:
    • Usa el nombre del archivo de la URL (ej: archivo.txt de https://ejemplo.com/archivo.txt).
    • Usa index.html por defecto si la URL termina con /.
  3. Manejo de Errores: Sale con código 1 en errores HTTP (ej: 404).
  4. Verificación de Espacio: Verifica espacio disponible en disco antes de la descarga.
  5. Reintento Automático: Intenta nuevamente la descarga en caso de fallo de conexión.
  6. Modo de Descarga Avanzado:
    • Descarga en chunks paralelos para mejor rendimiento
    • Soporta reanudación de descargas interrumpidas
    • Maneja archivos grandes de manera eficiente
  7. Soporte para Proxy:
    • Soporte para proxy HTTP, HTTPS y SOCKS5
    • Autenticación de proxy
    • Configuración flexible de proxy
  8. Características de Optimización:
    • Compresión automática (gzip, brotli, lz4)
    • Caché de archivos para descargas repetidas más rápidas
    • Limitación de velocidad
    • Control de conexión

Configuración

KelpsGet usa un archivo de configuración ubicado en:

Ejemplo de configuración:

{
  "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
  }
}

Características de Seguridad

Contribuyendo

¿Encontraste un error o quieres agregar una funcionalidad? ¡Abre un issue o envía un PR!

🚀 Realiza descargas sin esfuerzo con la velocidad y confiabilidad de Rust. 🚀

🔗 Enlaces Importantes

🎯 Próximos Pasos

Estamos trabajando en las siguientes mejoras:

¿Quieres contribuir con alguna de estas funcionalidades? ¡Revisa nuestra guía de contribución!

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.