Um buscador de torrents rápido e leve escrito em C, com suporte a interface gráfica (TUI) via ncurses e busca em linha de comando.
O usuário deve possuir as seguintes dependências instaladas para o projeto funcionar.
- gcc - Compilador C
- make - Sistema de build
- libcurl - Para requisições HTTP
- libcjson - Para parsing JSON
- ncurses - Para interface gráfica (terminal interativo)
- transmission-cli (opcional) - Para download automático
Caso não possua alguma das dependências listadas acima, rode:
sudo apt-get install -y build-essential libcurl4-openssl-dev libcjson-dev libncurses-dev transmission-clisudo dnf install -y gcc make libcurl-devel cjson-devel ncurses-devel transmissionbrew install curl cjson ncurses transmissionClone o repositório e na pasta do mesmo utilize os seguintes comandos:
makesudo make installO binário será instalado em /usr/local/bin/torrent-search. O usuário poderá, portanto, utilizar as funcionalidades em escopo global.
sudo make uninstallQuando executado em um terminal interativo, a interface gráfica ncurses é ativada:
./torrent-search linuxNavegação:
- ⬆ / ⬇ - Navegar entre resultados
- Enter - Download do arquivo escolhido na pasta Downloads.
- q - Sair
# Buscar por "python"
./torrent-search python
# Buscar com múltiplas palavras
./torrent-search python machine learning
# Buscar e salvar resultados
./torrent-search "python" > torrents.txtssh-torrent/
├── src/ # Código-fonte
│ ├── main.c # Programa principal
│ └── tui.c # Interface de usuário (ncurses)
├── include/ # Headers/Bibliotecas
│ ├── fetch.h # Cliente HTTP com curl
│ ├── url.h # Construtor de URLs
│ ├── download.h # Integração com transmission
│ └── tui.h # Interface TUI
├── build/ # Artefatos de build
├── Makefile # Sistema de build
├── compile_commands.json # Configuração para LSP
└── README.md # Este arquivo
make check- Tempo de busca: ~500ms para a API do PirateBay
- Memória: ~2-3 MB durante a execução
- Tamanho do binário: ~50 KB
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Para relatar bugs ou sugerir melhorias, abra uma issue no repositório.
O projeto ainda não está completamente pronto e não possuo expectatativas de quando consiguirei terminá-lo. Entretanto, pretendo implementar a opção para abrir arquivo no qbittorrent, e copiar magnet link. Além disso, pesquisarei mais APIs para adicionar para uma base de dados de pesquisa maior.