1

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

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

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

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

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

2 ответа2

1

Вы можете использовать триггеры и скриптовые возможности 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 или DB) и действуют на основе этого, вы можете достичь то, что ты хочешь.

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .