Cliente Torrent em Background
Quem já trocou algumas palavras comigo sabe como eu considero difícil baixar coisas da internet para assistir. Para mim é difícil porque eu não tenho disponibilidade de deixar o computador baixando à noite ou coisa assim. Mas chato mesmo é nos finais de semana, quando quero baixar pelo note e meus irmãos no desktop reclamam que roubo a banda inteira.
Então comecei a buscar alternativas. Maneiras de deixar meus torrents baixando enquanto eu não estava por perto e sem depender de eles lembrarem de "dar o play" no programa cliente.
Então fui à luta - melhor dizendo, à pesquisa. Primeiro encontrei o torrentflux, e ele é bem interessante. Mas ele não serve ao meu objetivo. O torrentflux é um centralizador de torrents, pelo que pude entender. Ele serve para que numa LAN apenas uma máquina baixe os torrents, e todas as pessoas possam pesquisar, adicionar e baixar seus arquivos acessando uma interface web instalada nesta máquina. O meu maior problema com o torrentflux foi o play. Ele não me livrou da necessidade de ter que iniciar manualmente o download dos arquivos sempre que o computador é ligado.
Por uma insistência quase troll do nilson, pesquisei sobre algum cliente python, e acabei achando uma biblioteca, o que é meio caminho andado. A biblioteca é o pytorrent, que é bem simples de se usar. Tão simples que deixa o desenvolvedor com pouquíssimo controle do que acontece. Tão simples que a documentação é mínima. Não encontrei nem uma função para limitar a taxa de downloads.
Pesquisando mais sobre o pytorrent, descobri que ele é ligado ao projeto do transmission. E olhando os pacotes disponíveis do transmission para o Ubuntu, vi que ele tem a interface gráfica GTK padrão, mas também tem um funcionamento via linha de comando (transmission-cli) e em formato de daemon (transmission-daemon como servidor e transmission-remote como cliente), além de uma interface web que controla aspectos básicos, como adicionar, pausar e "dar play" nos torrents.
O que eu precisei fazer foi apenas um script de inicialização para chamar o transmission-daemon no boot e um arquivo de configuração que contivesse o diretório de download e os limites de download e upload que eu queria.
O arquivo de configuração é em formato json, bem fácil de entender. O ponto (·) que coloquei no final de cada linha menos a última é para trocar por espaços.
{
"blocklist-enabled": 0,·
"download-dir": "\/home\/compartilhado\/downloads",·
"download-limit": 5,·
"download-limit-enabled": 1,·
"encryption": 1,·
"max-peers-global": 200,·
"peer-port": 32458,·
"pex-enabled": 1,·
"port-forwarding-enabled": 0,·
"rpc-access-control-list": "+127.0.0.1",·
"rpc-authentication-required": 0,·
"rpc-password": "",·
"rpc-port": 9091,·
"rpc-username": "",·
"upload-limit": 1,·
"upload-limit-enabled": 1
}
Este arquivo deve ser salvo num diretório onde o transmission-daemon vai salvar as outras configurações dele, como que torrents estão na fila. Se você vai fazer um script para ser executado no boot, o usuário root vai chamá-lo, e por padrão este diretório será o /root/.config/transmission-daemon.
Espero que estas informações possam ajudar a quem quer fazer o mesmo, eu por enquanto não vou postar o conteúdo do script de inicalização (odeio esta palavra, mas não conheço uma melhor) porque o post já está grande demais.
Comentários
PS: codigo python é auto-explicativo, dai a ausencia de documentacao.
Mas o código python que não tem a função que eu busco é muito turvo.
Mas só é possível editar o arquivo de configuração (/etc/transmission-daemon/settings.json) se o serviço estiver parado, caso contrário ele irá ignorar as alterações.