View on GitHub

KelpsGet

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

KelpsGet agora é KGet! v1.5.0 (Novo Lançamento)

Um downloader moderno, leve e versátil escrito em Rust para downloads rápidos e confiáveis via linha de comando (CLI) e interface gráfica (GUI).

English Português Español

Screenshots

Como Funciona (Resumo)

  1. Barra de Progresso (CLI): Mostra velocidade, tempo estimado e bytes transferidos.
  2. Nomeação Inteligente de Arquivos:
    • Usa o nome do arquivo da URL.
    • Usa index.html por padrão se a URL terminar com /.
  3. Tratamento de Erros: Encerra com código 1 em erros HTTP (ex: 404).
  4. Verificação de Espaço: Verifica espaço disponível em disco.
  5. Retry Automático: Tenta novamente o download em falhas de rede.
  6. Modo de Download Avançado (HTTP/HTTPS): Downloads em chunks paralelos, suporta retomada.
  7. Suporte a Proxy: HTTP, HTTPS, SOCKS5 com autenticação.
  8. Recursos de Otimização: Compressão (para cache), cache de arquivos, limite de velocidade.
  9. Downloads de Torrent: Adiciona links magnet ao transmission-daemon para download.
  10. Downloads FTP/SFTP: Conecta a servidores FTP/SFTP para transferir arquivos.

Funcionalidades

Veja a lista completa de funcionalidades e mudanças recentes no CHANGELOG.

KGet agora é um Crate também!

Se você quer usar o KGet como um crate, clique aqui.

Instalação

Opção 1: Compilar da fonte (Recomendado para obter todas as funcionalidades)

Você precisará ter o Rust instalado. Se não tiver, instale-o em rustup.rs.

Instale algumas dependências: Para sistemas baseados em Debian/Ubuntu:

sudo apt update
sudo apt install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config

Para Fedora:

sudo dnf install -y libxcb-devel libxkbcommon-devel openssl-devel pkg-config

Clone o repositório e compile o projeto:

git clone https://github.com/davimf721/KGet.git
cd KGet
cargo build --release

O executável estará em target/release/kget. Você pode copiá-lo para um diretório no seu PATH:

sudo cp target/release/kget /usr/local/bin/

Opção 2: Instalar via Cargo

cargo install kelpsget

Se encontrar problemas com a GUI ao instalar via cargo install, compilar da fonte é mais confiável.

Opção 3: Baixar Binários Pré-compilados

Verifique a seção Releases para os binários mais recentes para seu SO.

Linux/macOS:

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

Windows:

Execute o arquivo .exe diretamente.

Requisito Adicional para Downloads de Torrent: Transmission Daemon

O KGet usa o transmission-daemon para gerenciar downloads de torrent.

1. Instalar o Transmission Daemon:

2. Parar o Daemon para Configuração:

sudo systemctl stop transmission-daemon

3. Configurar o Transmission: Edite o arquivo settings.json. Localizações comuns:

Use sudo nano /var/lib/transmission-daemon/info/settings.json (ou o caminho correto para seu sistema).

Encontre e modifique estas linhas:

{
     // ...
     "rpc-authentication-required": true,
     "rpc-enabled": true,
     "rpc-password": "transmission", // Este é o valor que o KGet usa por padrão para conectar ao Transmission (recomendado)
     "rpc-port": 9091,
     "rpc-username": "transmission", // Nome de usuário que o KGet usa para conectar ao Transmission
     "rpc-whitelist-enabled": false, // Para acesso local. Para acesso remoto, configure IPs.
     "download-dir": "/var/lib/transmission-daemon/downloads", // Diretório padrão de download do Transmission
     // ...
}

Importante: Após salvar e iniciar o transmission-daemon, ele substituirá a senha em texto plano rpc-password por uma versão com hash.

4. (Opcional) Ajustar Permissões do Usuário do Daemon: Se o transmission-daemon rodar como um usuário específico (ex: debian-transmission ou transmission), certifique-se que este usuário tem permissões de escrita nos diretórios de download que você pretende usar com o KelpsGet ou o próprio Transmission. Você pode adicionar seu usuário ao grupo do Transmission daemon:

sudo usermod -a -G debian-transmission seu_usuario_linux # Para Debian/Ubuntu
# Verifique o nome do grupo/usuário do Transmission no seu sistema

5. Iniciar o Transmission Daemon:

sudo systemctl start transmission-daemon
# Verificar status:
sudo systemctl status transmission-daemon

Acesse http://localhost:9091 no seu navegador. Você deverá ver a interface web do Transmission e ser solicitado a fazer login com o rpc-username e rpc-password que você configurou.

Uso

Linha de Comando (CLI)

kelpsget [OPÇÕES] <URL>

Exemplos:

Interface Gráfica (GUI)

Para iniciar a GUI:

kelpsget --gui

A GUI permite que você insira a URL, caminho de saída e inicie downloads. Status e progresso são mostrados na interface.

Configuração do KelpsGet

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

Exemplo de config.json para o KelpsGet:

{
  "proxy": {
     "enabled": false,
     "url": null,
     "username": null,
     "password": null,
     "proxy_type": "Http"
  },
  "optimization": {
     "compression": true, // Compressão para cache do KelpsGet
     "compression_level": 6,
     "cache_enabled": true,
     "cache_dir": "~/.cache/kelpsget", // Expanda ~ manualmente ou use caminho absoluto
     "speed_limit": null,
     "max_connections": 4
  },
  "torrent": {
     "enabled": true,
     "transmission_url": "http://localhost:9091/transmission/rpc",
     "username": "transmission", // Usuário configurado no settings.json do Transmission
     "password": "transmission", // Senha configurada no settings.json do Transmission
     "max_peers": 50,
     "max_seeds": 50,
     "port": null,
     "dht_enabled": true,
     "default_download_dir": null // Diretório padrão para downloads de torrent via KelpsGet
  },
  "ftp": {
     "default_port": 21,
     "passive_mode": true
  },
  "sftp": {
     "default_port": 22,
     "key_path": null // Caminho para chave SSH privada, ex: "~/.ssh/id_rsa"
  }
}

Nota sobre cache_dir e key_path: Se usar ~, certifique-se que seu programa expande corretamente o til para o diretório home do usuário, ou use caminhos absolutos.

Você pode ver posts sobre o projeto em outras comunidades:

Contribuindo

Quer contribuir? Confira nosso guia de contribuição!

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

🚀 Faça downloads facilmente com a velocidade e confiabilidade do Rust. 🚀

Licença

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