Transmission — удаление *.part при удалении торрента из раздачи
Потыкавшись с Deluge, решил остановиться на Transmission с виндовым GUI, ибо управляться он будет в принципе с него. Так вот, я знал что при выборочной закачке могут качаться части из соседних файлов, но вот в transmission есть две загвоздочки, которые я хотел бы решить (хотя бы одну)
1. Если уходишь с раздачи, удаляешь торрент (просто торрент, без файлов), очень бы хотелось что бы недокаченные *.part удалялись в этой раздачи?
2. Качаешь например раздачу где 3 фильма в HD да и еще какие нибудь ремуксы, ну к примеру 3 файла по 30 гигов, в нужен тебе один, так он из соседнего файла выкачает 2-5 мб, но на диске создаст part этого файла во весь его размер! Просто так в пустоту 30 гб! Можно где то поменять настройку, что бы клиент не создавал part на весь размер файла, из которого тянется часть?
Меня в принципе устраивает любое из доступных решений. Да, я знаю что можно наваять скрипт который по крону будет удалять эти part, но если раздача идет, клиент будет его обратно восстанавливать и докачивать! Тут нужно удалять именно part из раздачи. Если можно пойти по второму пути, то тут уже можно сделать раз в месяц запуск скрипта по удалению part, какие восстановить — не страшно, у в следующем месяце удалятся.
Как удалить из списка завершенные торренты в transmission : Операционные системы и программное обеспечение
Споткнулся на том, что скачанные файлы, застрявшие в списке transmission, но удаленные локально, этой же трансмиссией потом и перекачиваются обратно, да и сам список в итоге становится большой помойкой, для сортировки которой ничего не помогает. В общем, встал вопрос, как список transmission очистить:
#!/bin/bash TCMD="transmission-remote 192.168.10.70:10008 --auth=user:passwd" LIST=`$TCMD -l | grep -Eo '^ *([0-9]+)'` for TORRENTID in $LIST do COMPLETED=`$TCMD -t $TORRENTID -i | grep "Percent Done: 100%"` STATUS=`$TCMD -t $TORRENTID -i | grep "State: Stopped\|Finished"` $TCMD -t $TORRENTID -i | grep "Name: " | sed -e "s/ Name: //" if [ "$COMPLETED" != "" ] && [ "$STATUS" != "" ]; then echo "Completed." $TCMD -t $TORRENTID -r else echo "Is not completed. Ignoring." fi done
Пускаю раз в сутки. В TCMD надо запихнуть авторизацию и прочее, если требуется.
Как решить проблемы с Transmission и Samba?
Имеется сервер с установленным на него Transmission-daemon который качает файлы с umask: 2 (каталоги 775, файлы 664), доступ к скачанным файлам идет через Samba, пользователь которого добавлен в группу debian-transmission.
Но возникает проблема в следующем:
Если transmission`ом был скачан файл одним файлом
.. file.avi
то этот файл потом без проблем удаляется.
Eсли же скачанное находилось в папке,
.. folder
.. folder/file.avi
То ни саму папку, ни файл в этой папке, невозможно удалить через samb`у.
Как решить данную проблему?
- Вопрос задан более трёх лет назад
- 639 просмотров
Удаление torrent-файлов из Transmission при удалении самих файлов внешними силами, например, через Plex

Постепенно перевожу свою, разбросанную между локациями, мультимедийную среду в более автоматизированный вид. В качестве сервера мультимедии я использую Plex. Plex-сервер у меня установлен в двух локациях и каждый работает независимо от другого, но под одним и тем же эккаунтом (обычным, не Premium). Данные, а именно файлы, синхронизуются между серверами посредством Resilio. А вот с просмотрами дела обстоят не так просто. Для того, чтобы можно было начать смотреть, ну, например, фильм на даче, а потом продолжить его смотреть в городе на кухонном телевизоре, необходимо как-то сообщить другому Plex-северу, мол, там вот посмотрели только до этого момента и следует тут начать с него же. Провернуть этот фокус можно несколькими путями:
- Через платную подписку Plex. Тут и файлы будут синхронизироваться и прочие полезности. Но платить 5 баксов за простую синхронизацию кажется не самой разумной затеей.
- Через механизм Webhook-ов. Plex позиционирует этот механизм как способ вмешиваться в домашнюю автоматизацию, например, приглушать свет в помещении если начинается трансляция в Plex. Но вебхуки можно применять и для многих других целей, например, для синхронизации через многочисленные интернет-сервисы по синхронизации просмотра видео-контента. Я смог насчитать, особо не разыскивая, целых три подобных сервиса. Но. Но, вебхуки доступны только на платной подписке.
Хорошо, что мир не без добрых людей и Jacob Gillespie придумал наипростейший Python скрипт с лаконичным названием Plex-Sync, выполняющий операцию по синхронизации между библиотеками Plex-серверов. Настройка скрипта примитивная, дальше он добавляется в планировщик и «плексы» синхронизируются по просмотренному. И теперь можно начать просмотр в одном месте, а закончиться его уже другом. Удобно.
Удобно, но не совсем. Plex удобно использовать в качестве медиа-сервера для скачиваемого посредством Torrent контента. Хочу сразу заметить, что Torrent != пиратский контент, поэтому никакой крамолы. На моих серверах за скачку отвечает Transmission. Старый как окаменелые отходы саблезубых млекопитающих, тем не менее, он работает отлично. Но при большом количестве torrent-закачек начинаешь путать, какой контент ты только что посмотрел через Plex и какой файл в Transmission следует удалить, дабы не занималось более место.
Через Plex можно удалять файлы и это настолько здорово, что может показаться, что наступила золотая эра, но подобная функция по удалению есть далеко, далеко не в каждом проигрывателе. Тем не менее, удобно удаляя файлы в Plex, необходимо что-то делать с Torrent-файлами в Transmission. Ведь они там копятся и с течением времени есть риск полного захламления Torrent-клиента. На выручку очумелым ручкам пришел OlegON изобразивший Bash скрипт на удаление скаченных torrent-ов в Transmission.
Немного модифицировав скрипт под цели удаления torrent-файлов при удалении скаченных файлов я получил нечто следующее:
#!/bin/bash TCMD="transmission-remote 192.168.0.19:9091 --auth=user:pass" LIST=$TCMD -l | grep -Eo '^ *([0-9]+)'for TORRENTID in $LIST do VERIFY=$TCMD -t $TORRENTID -vFAILED=$TCMD -t $TORRENTID -i | grep "Error: No data found!"if [ "$FAILED" != "" ] then $TCMD -t $TORRENTID -i | grep "Name: " | sed -e "s/ Name: //" echo "FILE IS DELETED" $TCMD -t $TORRENTID -rad echo "Torrent-FILE IS DELETED" fi done
В основе скрипта лежит transmission-remote, сервис, обеспечивающий подключение к Transmission через методы вызова удаленного вызова (RPC, если кто не понял). Соответственно этот RPC должен быть включен в настройках Transmission, заданы пользователь для доступа и пароль (собственно, они указываются во второй строчке скрипта). Хотя, если у вас нет никакой аутентификации или же авторизация происходит посредством разрешенных IP-адресов, то можно обойтись и без login/password.
Третьей строчкой идет получение списка идентификаторов активных torrent-ов в Transmission (параметр -l). Затем происходит проверка, верификация, каждого из активных torrent-ов (команда -v). Верификация означает полную проверку и перехеширование скаченного добра и может занимать существенное время, особенно на слабых машинах. Поэтому скрипт не стоит запускать слишком часто, а лучше запускать его раз в сутки, глубокой ночью.
После верификации, torrent-ы, в которых отсутствуют файлы (мы их удалили в Plex) помечаются как сбойные и при следующем вызове transmission-remote в скрипте (уже с командой -i) на экран будет выводиться в том числе и строчка с сообщением об этой ошибке. Вот именно эта строчка и ловится. И если она поймана, то происходит удаление torrent-а (тут возможно два варианта, с командой -r, тогда удаляется только torrent-файл или с -rad, тогда удаляется все, что было скачано в рамках обработки это конкретного torrent-а. Я предпочитаю -rad, так как далеко не всегда в раздачах бывают только просто файлы, иногда туда добавляется дополнительный контент, например, субтитры или фильмы о фильмах. И они из Plex не удаляются.
Не забываем про установку атрибута x для обозначения исполняемого файла (скрипта), а при указании скрипта в cron-е, лучше сразу прописать полный путь до Bash.
- Plex
- Plex-Sync
- Оригинальный скрипт от OlegON