Guia de Implementação do Torrentinim: Instalação, API e Integração Sonarr/Radarr

Visão Geral Técnica

Torrentinim é um motor de busca de torrents auto-hospedado focado exclusivamente em API, projetado para operar com um perfil de memória extremamente reduzido. A aplicação oferece compatibilidade nativa com Sonarr e Radarr, funcionando de forma idêntica em Linux, macOS e Windows. Esta documentação detalha o processo de implantação, configuração do ambiente, utilização dos endpoints REST e a integração com ferramentas de automação de mídia.

Arquitetura e Vantagens

A solução se destaca pela eficiência de recursos e desenho modular:

  • Minimalismo: O binário compilado ocupa cerca de 700KB, com uma média de consumo de RAM de apenas 24MB durante operações padrão.
  • Foco em Back end: A ausência de interface web nativa prioriza a integração via API, permitindo que o desenvolvedor construa seu próprio frontend ou conecte-o a sistemas existentes.
  • Multiplataforma: Compilado nativamente para os principais sistemas operacionais sem dependências externas complexas.
  • Coleta Automatizada: Possui mecanismos internos para crawling de diversos indexadores públicos.

Indexadores Suportados: O sistema atualmente possui suporte integrado para EZTV, 1337x, Nyaa, RARBG, TorrentDownloads.me e YTS.

Implantação e Instalação

Método A: Binário Preparado

Para ambientes de produção, o uso do executável pré-compilado é o mais indicado.

  1. Adquira o binário correspondente à sua arquitetura na página de releases do projeto.
  2. Conceda permissões de execução ao arquivo:
chmod +x torrentinim-app

  1. Para a primeira execução, é necessário inicializar o banco de dados. Execute o seguinte comando para garantir um estado limpo:
TORRENTINIM_INIT_DB=true ./torrentinim-app

  1. Após a inicialização, inicie o serviço normalmente:
./torrentinim-app

Método B: Compilação via Código-Fonte

Para personalizações ou desenvolvimento, compile a ferramenta localmente.

git clone https://github.com/torrentinim/torrentinim.git
cd torrentinim
make deps
make run

Para gerar o binário de produção:

make build

Configuração de Ambiente

A parametrização do serviço é realizada através de variáveis de ambiente, oferecendo flexibilidade na orquestração de containers ou scripts de inicialização.

Exemplo de configuração de porta e CORS:

Para alterar a porta padrão e definir origens permitidas para requisições cross-origin:

export APP_PORT=8080
export ALLOWED_ORIGINS="https://meudominio.media,https://app.local"
./torrentinim-app

Utilização da API de Busca

O Torrentinim expõe uma interface REST simples para consultas. O endpoint principal aceita parâmetros de string de consulta e paginação.

Formato da Requisição:

GET http://127.0.0.1:8080/api/search?q=termos&pg=1

Exemplo prático buscando por um arquivo específico:

GET http://127.0.0.1:8080/api/search?q=ubuntu+server&pg=1

Estrutura da Resposta:

A API retorna um objeto JSON contendo metadados essenciais, incluindo nome do torrent, tamanho, contagem de seeds/peers e o link magnético (magnet URI) necessário para o download.

Integração com Sonarr e Radarr

A compatibilidade com as suítes PVR (Personal Video Recorder) como Sonarr e Radarr permite a busca automatizada de mídia. Embora a integração nativa esteja em evolução, é possível configurá-las manualmente utilizando a opção de "Indexador de Torrent Genérico" ou "Custom Indexer".

Passos para Configuração:

  1. Na interface do Sonarr ou Radarr, adicione um novo indexador do tipo Torznab ou Custom.
  2. Configure a URL base apontadno para a instância do Torrentinim. A estrutura da URL deve seguir o padrão de substituição de variáveis da ferramenta:
http://localhost:8080/api/search?q={{Query}}&pg=1

  1. Configure o parser de resposta para mapear os campos JSON retornados pelo Torrentinim para os campos esperados pelo Sonarr/Radarr.

Desenvolvimento e Estrutura do Código

Contribuidores interessados em estender as funcionalidades devem possuir o compilador Nim versão 1.2.0 ou superior. O repositório é organizado modularmente para facilitar a manutenção:

  • src/crawlers/: Contém a lógica de extração de dados para cada site suportado.
  • src/torrents/: Módulos centrais responsáveis pelo processamento e armazenamento dos metadados.
  • src/helpers/: Funções utilitárias e compartilhadas entre os componentes.

O projeto adota práticas de respeito aos indexadores, implementando limitadores de taxa e estratégias de crawl otimizadas para evitar sobrecarga nos servidores de origem.

Tags: Sonarr Radarr NIM Torrent API self-hosted

Publicado em 10-14 01:39