Impedir que o rtorrent baixe uma torrent duas vezes

1

Eu usei um par de clientes peer-to-peer que têm a opção de impedir que o usuário baixe um arquivo duas vezes, pedindo gentilmente por confirmação, ou recusando-se a adicionar um novo download, a menos que seja forçado. Isso é bastante útil, porque me lembra de verificar meu sistema de arquivos, por exemplo, 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, juntamente com uma ou duas caixas de diálogo do usuário.

Agora estou usando rtorrentpara o protocolo BitTorrent e ainda tenho que encontrar uma maneira de me impedir de baixar um arquivo duas vezes. rtorrentfaz 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 .torrentarquivos eu baixei, mas as coisas ficam mais complexas com os links Magnet e vários .torrentarquivos para o mesmo download.

Existe uma maneira de rtorrentmanter o controle do download real (por exemplo, seu hash) e me impedir de baixá-lo duas vezes? Ou, talvez, alguma ferramenta externa que faça isso por mim?

thkala
fonte

Respostas:

1

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

Eu não fiz exatamente o que você está pedindo por mim mesmo, mas coisas semelhantes. Por exemplo, 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_custom1que é definido quando os downloads são iniciados (ignorar $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. Ao ter scripts externos que controlam o que você baixou (por exemplo, escrever hash ou nome de arquivo em um arquivo de log / banco de dados para downloads concluídos) e verificar novos downloads nessa lista ( grepou utilitário DB) e agir sobre isso, você pode 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 :-).

Daniel Andersson
fonte
Eu usei um par de scripts, juntamente com execute_nothrowuma branch=declaração para acompanhar os hashes de todos os torrents concluídos e parar um torrent automaticamente se tiver sido baixado anteriormente. Uma mensagem é impressa; se eu quiser baixar novamente de qualquer maneira, tudo que eu tenho que fazer é iniciar o torrent ...
thkala
0

Consulte https://code.google.com/p/pyroscope/wiki/QueueManager#Configuration para ver 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 "á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).

pyroscope
fonte