Запретить загрузку торрента дважды

1292
thkala

Я использовал пару одноранговых клиентов, которые имеют возможность запретить пользователю загружать файл дважды, либо просто запросив подтверждение, либо отказавшись от добавления новой загрузки, если это не было принудительно. Это очень полезно, потому что напоминает мне проверить мою файловую систему, например, на установщик PlaneShift, прежде чем загружать ее снова.

Очевидно, что для этого требуется вести историю всего, что было загружено, и проверять перед началом каждой загрузки вместе с одним или двумя диалоговыми окнами пользователя.

Сейчас я использую rtorrentпротокол BitTorrent, и мне еще не удалось найти способ запретить мне скачивать файл дважды. rtorrentделает это для файлов, которые он все еще загружает или заполняет, но не для всего, что было удалено из его представления.

Я думал о том, чтобы отслеживать, какие .torrentфайлы я загружаю, но все становится более сложным со ссылками на Магнит и несколькими .torrentфайлами для одной и той же загрузки.

Есть ли способ rtorrentотслеживать фактическую загрузку (например, ее хэш) и не допустить, чтобы я загружал ее дважды? Или, может быть, какой-то внешний инструмент, который сделает это для меня?

1

2 ответа на вопрос

1
Daniel Andersson

Вы можете использовать триггеры и скриптовые возможности rtorrent.

Я не сделал именно то, что вы просите для себя, но похожие вещи. Например, у меня запущен сеанс со следующими записями в 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=" 

(разрывы строк добавлены для ясности).

Это перемещает завершенные загрузки в путь, $d.get_custom1который задается при запуске загрузки (игнорировать $d.get_custom2- используется для другой цели, но я держу это в качестве примера).

Как видите, внешние скрипты выполняются и их возвращаемые значения перехватываются rtorrent. Имея внешние сценарии, которые отслеживают то, что вы загрузили (например, записывают хэш или имя файла в файл журнала / базу данных для завершенных загрузок), проверяют новые загрузки по этому списку ( grepили утилите БД) и действуют на основе этого, вы можете добиться того, что ты хочешь.

Полный набор возможностей сценариев rtorrent слишком исчерпывающий - см. Руководство и онлайн-ресурсы. Я не говорю, что это очевидно или просто - конечно, нет - но это возможно :-).

Я использовал пару сценариев вместе с `execute_nothrow` и оператором` branch = `, чтобы отслеживать хэши всех завершенных торрентов и автоматически останавливать торрент, если он был ранее загружен. Сообщение печатается; если я все равно захочу заново скачать, все, что мне нужно сделать, это запустить торрент ... thkala 11 лет назад 0
0
pyroscope

См. Https://code.google.com/p/pyroscope/wiki/QueueManager#Configuration для примера, где:

  1. некоторые файлы внутри торрента не загружаются (устанавливая их приоритет на 0), и
  2. некоторые потоки, которые являются загружены не запускается автоматически (далее «звук с большим количеством графики» прецеденты).

Как вы видите, это довольно сложные условия, это просто вопрос добавления пользовательского (Python) кода.