Evitar que o rtorrent baixe uma torrent duas vezes

1

Eu usei alguns clientes peer-to-peer que têm a opção de impedir que o usuário baixe um arquivo duas vezes, pedindo gentilmente confirmação ou recusando-se a adicionar um novo download, a menos que seja forçado. Isto é bastante útil, porque me lembra de verificar o meu sistema de arquivos por ex. o instalador do PlaneShift antes de baixá-lo novamente.

Obviamente, isso requer manter um histórico de tudo que foi baixado e uma verificação antes de iniciar cada download, junto com uma ou duas caixas de diálogo do usuário.

Agora estou usando rtorrent para o protocolo BitTorrent e ainda não encontrei uma maneira de me impedir de baixar um arquivo duas vezes. rtorrent faz isso para arquivos que ainda está baixando ou propagando, mas não para qualquer coisa que tenha sido removida de sua visualização.

Pensei em acompanhar quais arquivos .torrent eu baixei, mas as coisas ficaram mais complexas com links magnéticos e vários arquivos .torrent para o mesmo download.

Existe uma maneira de ter rtorrent rastreando o download real (por exemplo, seu hash) e impedir que eu faça o download duas vezes? Ou, talvez, alguma ferramenta externa que faça isso por mim?

    
por thkala 04.09.2012 / 09:41

2 respostas

1

Você pode usar os gatilhos e as capacidades de script do rtorrent.

Eu não fiz exatamente o que você está pedindo, mas coisas parecidas. Por exemplo. Eu tenho uma sessão em execução com as seguintes entradas em rtorrent.rc :

schedule = 
    watch_directory_1,10,10,
    "load_start=/path/to/watch/folder/*.torrent,
    d.set_custom1=$execute_capture={/path/to/external/script},
    d.set_custom2=1"

system.method.set_key =
    event.download.finished,
    move_complete,
    "d.set_directory=$d.get_custom1= ;
    execute=mv,-u,
        $d.get_base_path=,
        $d.get_custom1= ;
    execute=/path/to/another/external/script,
        $d.get_name=,
        $d.get_custom1=,
        $d.get_custom2="

(quebras de linha adicionadas para maior clareza).

Isso move os downloads concluídos para um caminho $d.get_custom1 que é definido quando os downloads são iniciados (ignore $d.get_custom2 - usado para um propósito diferente, mas eu o mantenho como um exemplo).

Como você pode ver, os scripts externos são executados e seus valores de retorno são capturados pelo rtorrent. Por ter scripts externos que acompanham o que você baixou (por exemplo, escrever hash ou nome de arquivo para um arquivo de log / banco de dados para downloads concluídos) e verificar novos downloads contra essa lista ( grep ou utilitário DB) e agir sobre isso, você pode conseguir o que você quer.

Um resumo completo das habilidades de script do rtorrent é muito abrangente - veja os recursos manuais e on-line. Eu não estou dizendo que é auto-evidente ou fácil - certamente não - mas é possível :-).

    
por 04.09.2012 / 13:21
0

Veja link para um exemplo em que:

  1. alguns arquivos dentro de um torrent não são baixados (definindo sua prioridade como 0), e
  2. alguns torrents que são carregados não são iniciados automaticamente (o caso de uso de "áudio com muitos gráficos").

Como você pode ver, essas são condições bastante complexas, é apenas uma questão de adicionar o código personalizado (Python).

    
por 06.09.2012 / 03:28