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

Um clone moderno e leve do wget escrito em Rust para downloads de arquivos rápidos e confiáveis a partir da linha de comando.

English Português Español

Recursos

✅ Ferramenta CLI simples para download de arquivos via HTTP/HTTPS.
✅ Barra de progresso com velocidade em tempo real e tempo estimado.
✅ Nomes de saída personalizados (flag -O para renomear arquivos).
✅ Detecção de tipo MIME e tratamento adequado de arquivos.
✅ Multiplataforma (Linux, macOS, Windows).
✅ Modo silencioso para scripts.
✅ Verificação automática de espaço antes do download.
✅ Tentativa automática de reconexão em caso de falha.
✅ Validação de nome de arquivo.
✅ Suporte para diferentes tipos MIME.
✅ Exibição detalhada de informações do download.
✅ Modo de download avançado com chunks paralelos e capacidade de retomada.
✅ Suporte a proxy (HTTP, HTTPS, SOCKS5).
✅ Compressão e cache automáticos.
✅ Limitação de velocidade e controle de conexão.

Instalação

Opção 1: Instalação via Cargo

cargo install kelpsget

Opção 2: Baixe os Binários Pré-compilados

Baixe o binário mais recente para seu sistema operacional em Release

Linux/macOS:

chmod +x kelpsget  # Tornar executável
./kelpsget [URL]   # Executar diretamente

Windows:

Execute o arquivo .exe diretamente.

Exemplos de Uso

Download Básico:

kelpsget https://exemplo.com/arquivo.txt

Renomear o Arquivo de Saída:

kelpsget -O novo_nome.txt https://exemplo.com/arquivo.txt

Modo Silencioso:

kelpsget -q https://exemplo.com/arquivo.txt

Modo de Download Avançado (Paralelo e Resumível):

kelpsget -a https://exemplo.com/arquivo_grande.zip

Usando Proxy:

kelpsget -p http://proxy:8080 https://exemplo.com/arquivo.txt

Com Autenticação de Proxy:

kelpsget -p http://proxy:8080 --proxy-user usuario --proxy-pass senha https://exemplo.com/arquivo.txt

Limitação de Velocidade:

kelpsget -l 1048576 https://exemplo.com/arquivo.txt  # Limite de 1MB/s

Desabilitar Compressão:

kelpsget --no-compress https://exemplo.com/arquivo.txt

Desabilitar Cache:

kelpsget --no-cache https://exemplo.com/arquivo.txt

Como Funciona

  1. Barra de Progresso: Mostra velocidade de download, tempo estimado e bytes transferidos.
  2. Nomeação Inteligente de Arquivos:
    • Usa o nome do arquivo da URL (ex: arquivo.txt de https://exemplo.com/arquivo.txt).
    • Usa index.html como padrão se a URL terminar com /.
  3. Tratamento de Erros: Sai com código 1 em erros HTTP (ex: 404).
  4. Verificação de Espaço: Verifica espaço disponível em disco antes do download.
  5. Retry Automático: Tenta novamente o download em caso de falha na conexão.
  6. Modo de Download Avançado:
    • Download em chunks paralelos para melhor performance
    • Suporta retomada de downloads interrompidos
    • Trata arquivos grandes de forma eficiente
  7. Suporte a Proxy:
    • Suporte a proxy HTTP, HTTPS e SOCKS5
    • Autenticação de proxy
    • Configurações flexíveis de proxy
  8. Recursos de Otimização:
    • Compressão automática (gzip, brotli, lz4)
    • Cache de arquivos para downloads repetidos mais rápidos
    • Limitação de velocidade
    • Controle de conexão

Configuração

O KelpsGet usa um arquivo de configuração localizado em:

Exemplo de configuração:

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

Recursos de Segurança

Contribuindo

Encontrou um bug ou quer adicionar uma funcionalidade? Abra uma issue ou envie um PR!

🚀 Faça downloads sem esforço com a velocidade e confiabilidade do Rust. 🚀

🎯 Próximos Passos

Estamos trabalhando nas seguintes melhorias:

Quer contribuir com alguma dessas funcionalidades? Confira nosso guia de contribuição!

Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.