LINUX.ORG.RU

Автоматизация rtorrent

 ,


1

2

Доброго времени суток всем!
Хочу настроить автоматизацию процесса работы с закачками в rtorrent до уровня максимально соответствующего моим скромным запросам.
Что нужно:

  • Запустить все торренты в 9:00 и остановить в 22:00
  • Добавлять закачки путём помещения торретн-файлов в папку
  • Иметь две группы закачек по продолжительности раздаи: первая до ратио 2, вторая до ратио 7
  • После завершения загрузки скопировать данные в другое место, продолжить вести раздачу со старого места до указанных ратио 2 или 7
  • По достижении ратио 2 или 7 в каждой группе и если копирование уже завершено - удалить торрент-файл и закачанные данные

Пока, действуя по аналогии с примеров, дошел до следующего:

#автозапуск и автоостановка закачек
schedule = enable,09:00:00,24:00:00,"d.multicall=,d.start="
schedule = disable,22:00:00,24:00:00,"d.multicall=,d.stop="

#создаю две группы закачек
group.insert_persistent_view = short
group.insert_persistent_view = long
group.short.ratio.enable=
group.short.ratio.min.set=200
group.short.ratio.max.set=0
group.long.ratio.enable=
group.long.ratio.min.set=700
group.long.ratio.max.set=0

#автодобавление торрентов в каждую группу в зависимости от папки нахождения торрент-файла
schedule = watch_short,60,300,"load_start_verbose=/home/pi/Short/*.torrent, view.set_visible=short"
schedule = watch_long,180,300,"load_start_verbose=/home/pi/Long/*.torrent, view.set_visible=long"

#копирование файлов после закачки
system.method.set_key = event.download.finished,copy_complete,"execute=cp,-u,$d.get_base_path=,/home/pi/Media/"
Честно говоря, работоспособность проверил пока только строчек с автостартом и автостопом. Остальные прописаны, но пока не было условий для их срабатывания. По этому возможно, там написан полный бред.
Что скажите, уважаемые знатоки?

Запустить все торренты в 9:00 и остановить в 22:00

это сработает

Добавлять закачки путём помещения торретн-файлов в папку

может быть, что за команда «load_start_verbose»?

Иметь две группы закачек по продолжительности раздачи: первая до ратио 2, вторая до ратио 7

не уверен, но думаю что нет, сперва группу добавить нужно

view_add = view_group_1

После завершения загрузки скопировать данные в другое место

сработает, но файлы с обоих групп будут скидываться в одну кучу

продолжить вести раздачу со старого места до указанных ратио 2 или 7

не понял.

По достижении ратио 2 или 7 в каждой группе удалить данные и торрент-файл

удалить со старого места или вообще?

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

может быть, что за команда «load_start_verbose»?

Про группы и эту команду прочитал вот здесь.

файлы с обоих групп будут скидываться в одну кучу

Ничего страшного, пусть падают.

продолжить вести раздачу со старого места до указанных ратио 2 или 7
не понял.

Ну закачался файл rtorrent'ом в папку 1, потом автоматом скопировался в папку 2, по раздача продолжается из папки 1, а про папку 2 больше никто не вспоминает.

удалить со старого места или вообще?

Удалить из условной папки 1, про папку 2 после копирования забыли.

KlgFinn ()
Ответ на: комментарий от KlgFinn

почитал вики, все должно работать и без этого

view_add = view_group_1
А для последнего пункта добавить
system.method.set = group.seeding.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"
при достижении ратио - остановить, удалить из списка торрентов и торрент файл, удалить загруженные данные.

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

Спасибо за помощь! Но как организовать защиту от такого случая: торрент скачан, копирование идёт, и тут оказывается, что торрент очень хорошо раздавался и наступило ратио для удаления. Как я понимаю он удалится не смотря на то, что копирование еще не завершено?

KlgFinn ()

В строчку «копирования файлов после закачки» добавить команду установки значения в переменную custom1 и перед удалением сделать проверку на то, есть ли значение у этой переменной. А еще во время добавления торрента обязательно очищать её. Пример написать смогу только вечером.

lucky_guy ★★★ ()
Ответ на: комментарий от KlgFinn

Но тогда файл может вообще не удалиться, если ратио достигнет заданного и сработает команда но проверка не позволит удалить файлы. А на самом деле это уже излишество, было у тебя такое что торрент еще не докачался, а уже раздался в два раза больше полного своего веса?

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

Пару раз за пол года было, что торрент быстро раздался, а копирование не завершилось.

KlgFinn ()
Ответ на: комментарий от KlgFinn

очищаем переменную custom1

schedule = watch_short,60,300,"load_start_verbose=/home/pi/Short/*.torrent,view.set_visible=short,d.set_custom1="
schedule = watch_long,180,300,"load_start_verbose=/home/pi/Long/*.torrent,view.set_visible=long,d.set_custom1="
присваиваем значение переменной
 
system.method.set_key = event.download.finished,copy_complete,"d.set_custom1=ready;execute=cp,-u,$d.get_base_path=,/home/pi/Media/"
проверяем переменную перед удалением
system.method.set = group.seeding.ratio.command,d.close=,d.erase=,"branch=d.get_custom1=,\"execute=rm,-rf,$d.base_path""
Как-то так, проверяй. Теоретически, при возникновении одного из тех двух случаев, торрент удалится из списков и удалится торрент файл, а сами данные останутся нетронутыми, и останутся лежать там навечно.

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

system.method.set = group.seeding.ratio.command,d.close=,d.erase=,«execute=rm,-rf,$d.base_path»

А это не сработало. Раздача остановилась, торрент-файл не удалён, данные не удалены. Может где-то ошибся?

KlgFinn ()
Ответ на: комментарий от KlgFinn

Дважды проверил, работает. Ты кавычки такие же скопипастил?

«»

Нужны прямые "".

lucky_guy ★★★ ()
Ответ на: комментарий от KlgFinn

Стоп, у тебя же две группы на раздачу. Как с ними точно не скажу, попробуй так:

system.method.set = group.short.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"
system.method.set = group.long.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

Кавычки скопипастились правильно, поменялись на прямые.
Поставил эти две строки, посмотрим, что будет. Спасибо!

KlgFinn ()
Ответ на: комментарий от KlgFinn

Все это на ходу делать можно. Запускай рторрент в терминале, Ctrl+x и вводи команду, он тебе сразу и ответит что ему не нравится.

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

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

schedule = watch_short,60,300,"load_start_verbose=/home/pi/Short/*.torrent, view.set_visible=short"
schedule = watch_long,180,300,"load_start_verbose=/home/pi/Long/*.torrent, view.set_visible=long"
system.method.set = group.short.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"
system.method.set = group.long.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"
Так?
schedule = watch,60,300,"load_start=/home/pi/Downloads/*.torrent"
system.method.set = group.seeding.ratio.command,d.close=,d.erase=,"execute=rm,-rf,$d.base_path"

KlgFinn ()
Ответ на: комментарий от KlgFinn

Погодь, если закачка останавливается и удаляется, то условие сработало и команда выполнилась. Ты хочешь переписать условие, но команда останется той же. Попробуй на любой закачке выполнить «execute=rm,-rf,$d.base_path» и проверь удалятся ли данные?

lucky_guy ★★★ ()
Ответ на: комментарий от lucky_guy

Разобрался.
Ответ rtorrent'а на команду был

Input failed: Could not find '='.
Спросил у гугла, что сие значит, оказалось мы с тобой забыли знак '=' в команде, после $d.base_path
Добавил, посмотрим, что будет ))

KlgFinn ()
Ответ на: комментарий от lucky_guy

Итак, финальный конфиг, часть, отвечающая за работу двух групп закачек:

group.insert_persistent_view = short
group.insert_persistent_view = long
group.short.ratio.enable=
group.short.ratio.min.set=200
group.short.ratio.max.set=0
group.long.ratio.enable=
group.long.ratio.min.set=700
group.long.ratio.max.set=0
schedule = watch_short,60,300,"load_start_verbose=/home/pi/Short/*.torrent, view.set_visible=short"
schedule = watch_long,180,300,"load_start_verbose=/home/pi/Long/*.torrent, view.set_visible=long"
schedule = enable,09:00:00,24:00:00,"d.multicall=,d.start="
schedule = disable,21:58:00,24:00:00,"d.multicall=,d.stop="
system.method.set_key = event.download.finished,copy_complete,"execute=cp,-ur,$d.get_base_path=,/home/pi/Media/"
system.method.set = group.short.ratio.command,d.close=,"execute=rm,-rf,$d.base_path=",d.erase=
system.method.set = group.long.ratio.command,d.close=,"execute=rm,-rf,$d.base_path=",d.erase=
Как видишь, в последних двух строчках поменял местами execute и d.erase, потому что после выполнения d.erase следовавший за ним execute не понимал, откуда брать d.base_path, т.к. все данные про торрент были уже удалены, а так отлично срабатывает.

KlgFinn ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.