Author Topic: Скрипт для организации очереди Transmission 1.75  (Read 15048 times)

0 Members and 1 Guest are viewing this topic.

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Привет всем!! Пользуюсь на 800 дриме Transmission 1.75, но там нет возможности организовать очередь, нашёл в инете два скрипта, хотел попросить людей разбирающихся в этом деле, адаптировать для дрима эти скрипты!!

Пример скрипта для организации очереди:
Так как в клиенте Transmission отсутствует возможность выставлять количество одновременных загрузок, был написан скрипт который отслеживает количество текущих загрузок и сравнивает их с количеством максимально возможных одновременных загрузок. Если количество текущих меньше чем максимально возможное число, то недостающее количество файлов добавляются в загрузки. Для работы скрипта необходимо включить в опциях клиента слежение за папкой с файлами *.torrent. Скрипт запускается по cron'у раз в несколько минут и делает необходимые проверки.
1.
Quote
#!/bin/sh
# Порт на котором работает transmission-daemon
PORT="9091"
# Адрес на котором работает transmission-daemon
ADDRESS="127.0.0.1"
# Имя пользователя для доступа к transmission-daemon
USER="user"
# Пароль пользователя для доступа к transmission-daemon
PASSWORD="password"
# Путь до бинарника transmission-remote
TBC_REMOTE_BIN="/usr/local/bin/transmission-remote"
# Проверка является ли файл transmission-remote исполняемым
[ -x "${TBC_REMOTE_BIN}" ] && [ -e "${TBC_REMOTE_BIN}" ] || exit 1
# Путь до папки в которой находятся файлы *.torrent ожидающие очереди
TBC_TORRENTS_NEW_DIR="/mnt/sda4/downloads/torrents_new_dir"
# Путь до папки которую отслеживает transmission-daemon на предмет появления в
# ней новых файлов как только новый файл появляется в папке он добавляется в
# список загрузки. Данная опция работает только если установленны опции
# "watch-dir" и "watch-dir-enabled" в файле конфигурации transmission-daemon
# (см. документацию на transmission-daemon)
TBC_TORRENTS_WATCH_DIR="/mnt/sda4/downloads/torrents_watch_dir"
# Команда для подключения к transmission-daemon
TBC_REMOTE="${TBC_REMOTE_BIN} ${ADDRESS}:${PORT} -n ${USER}:${PASSWORD}"
# В переменной хранится максимальное колличество активных загрузок
MAX_ACTIVE=1
# В переменной хранится количество активных загрузок
ACTIVE="$(${TBC_REMOTE} -l | grep -c 'Downloading')"
((ACTIVE +="$(${TBC_REMOTE} -l | grep -c 'Up & Down')"))
if [ "${ACTIVE}" -ge "${MAX_ACTIVE}" ]; then
  exit 0
else
  chown -R transmission:transmission "${TBC_TORRENTS_NEW_DIR}"
  for((i=0; i < (MAX_ACTIVE - ACTIVE); i++)); do
    FILE="$(ls "${TBC_TORRENTS_NEW_DIR}"/*.torrent | head --lines=1)"
    mv "${FILE}" "${TBC_TORRENTS_WATCH_DIR}"
  done
  sleep 10
  rm -rf "${TBC_TORRENTS_WATCH_DIR}"/*.torrent
fi


Вариант 2--http://pastie.org/632212

Quote
#!/bin/sh

# *************
# Configuration
REMOTE="/usr/bin/transmission-remote"
USERNAME="username"
PASSWORD="password"
MAXDOWN="3"
MAXACTIVE="5"
CONFIG="/etc/transmission-daemon/settings.json"

# *************
# Set-up variables
CMD="$REMOTE --auth $USERNAME:$PASSWORD"
LOGCMD="/usr/bin/logger -t transmission-queue "
MAXRATIO=$(cat $CONFIG | grep \"ratio-limit\":)
MAXRATIO=${MAXRATIO#*\"ratio-limit\": }
MAXRATIO=${MAXRATIO%*, }

# *************
# deal with downloads
DOWNACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | wc -l)"
if [ $MAXDOWN -lt $DOWNACTIVE ]; then
    DOWNTOSTOP="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | \
        tail -n $(expr $DOWNACTIVE - $MAXDOWN) | awk '{ print $1; }')"
    for ID in $DOWNTOSTOP; do
        NAME="$($CMD --torrent $ID --info | grep Name:)"
        $LOGCMD "<<< $ID: ${NAME#*Name: }"
        $CMD --torrent $ID --stop >> /dev/null 2>&1
    done
else
    [ $(expr $MAXDOWN - $DOWNACTIVE) -gt 0 ] && (
    DOWNINACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | wc -l)"
    [ $DOWNINACTIVE -gt 0 ] && (
        DOWNTOSTART="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | \
            head -n $(expr $MAXDOWN - $DOWNACTIVE) | awk '{ print $1; }')"
        for ID in $DOWNTOSTART; do
            NAME="$($CMD --torrent $ID --info | grep Name:)"
            $LOGCMD ">>> $ID: ${NAME#*Name: }"
            $CMD --torrent $ID --start >> /dev/null 2>&1
        done
        )
    )
fi
# Then deal with total active
ACTIVE="$($CMD -l | tail --lines=+2 | grep -v Sum | grep -v Stopped | wc -l)"
if [ $MAXACTIVE -lt $ACTIVE ]; then
    TOSTOP="$($CMD -l | tail --lines=+2 | grep 100% | grep -v Stopped | \
        tail -n $(expr $ACTIVE - $MAXACTIVE) | awk '{ print $1; }')"
    for ID in $TOSTOP; do
        NAME="$($CMD --torrent $ID --info | grep Name:)"
        $LOGCMD "<<< $ID: ${NAME#*Name: }"
        $CMD --torrent $ID --stop >> /dev/null 2>&1
    done
else
    [ $(expr $MAXACTIVE - $ACTIVE) -gt 0 ] && (
    SEEDINACTIVE="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | \
        awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | wc -l)"
    [ $SEEDINACTIVE -gt 0 ] && (
        TOSTART="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | \
            awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | \
            head -n $(expr $MAXACTIVE - $ACTIVE) | awk '{ print $1; }')"
        for ID in $TOSTART; do
            NAME="$($CMD --torrent $ID --info | grep Name:)"
            $LOGCMD ">>> $ID: ${NAME#*Name: }"
            $CMD --torrent $ID --start >> /dev/null 2>&1
        done
        )
    )
fi

Заранее благодарен!!!

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #1 on: October 25, 2009, 04:37:20 PM »
Transmission не пользовался ни разу. Если будет время, попробую.
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #2 on: October 25, 2009, 09:10:26 PM »
Transmission не пользовался ни разу. Если будет время, попробую.
Ну и за это уже спасибо, буду только благодарен!!!

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #3 on: October 27, 2009, 02:46:28 PM »
Feromon, все получилось. Спасибо тебе за ценную находку. Использовал второй скрипт, править почти ничего не пришлось. Проверял на 2-х торент файлах, один закачивался, второй стоял на паузе. После закачки первого, запускается второй. Количество одновременно закачиваемых торентов регулируется параметром

MAXDOWN="1"

В скрипте во вложении так и выставлено, можно изменить кому сколько надо. Пути, логин и пароль прописываем тут:

REMOTE="/media/hdd/transmission/bin/transmission-remote"
USERNAME="root"
PASSWORD="dreambox"
MAXDOWN="1"
MAXACTIVE="5"
CONFIG="/media/hdd/transmission/config/settings.json"


В скрипте сделал бесконечный цикл, чтобы с cron не парится и интервал проверки стоит 5 мин.

do sleep 300

Каждый тоже поставит себе сколько считает нужным. Для использования скрипта в cron убираем вначале

while true
do sleep 300;


и в самом конце

done


0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #4 on: October 27, 2009, 10:46:54 PM »
Спасибо огромное!!! su%$
Но есть пара вопросов:
1. Скрипт запускать как обычно?
2. Как будет поступать скрипт, если нечего не качается?
3. У меня Transmission на USB HDD установлен, будет ли скрипт пинать диск каждые пять минут или нет, даже если нечего не качается??
4. Transmission запускается автоматом, как сделать чтобы скрипт запускался вместе с ним?
Заранее благодарен!!

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #5 on: October 28, 2009, 04:48:44 AM »
Блин!! Не могу заставить работать в cron!!! <??> :ab:
Содержимое файла root
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/etc/crontab.txt installed on Wed Oct 28 03:41:39 2009)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
1 * * * * /usr/bin/queue.sh
* * * * *
* * * * *
А вот log:
root (10/28-03:07:33-1279) LIST (root)
root (10/28-03:09:51-1357) LIST (root)
root (10/28-03:12:47-1462) LIST (root)
root (10/28-03:14:20-1499) REPLACE (root)
root (10/28-03:14:42-1528) LIST (root)
root (10/28-03:24:12-1739) LIST (root)
root (10/28-03:27:01-1828) LIST (root)
root (10/28-03:30:50-1915) REPLACE (root)
CRON (10/28-03:36:00-913) STARTUP (fork ok)
root (10/28-03:37:00-1002) CMD ()
root (10/28-03:37:00-1004) CMD ()
root (10/28-03:37:59-1014) CMD ()
root (10/28-03:37:59-1016) CMD ()
root (10/28-03:39:00-1037) CMD ()
root (10/28-03:39:00-1039) CMD ()
root (10/28-03:40:00-1050) CMD ()
root (10/28-03:40:00-1051) CMD ()
root (10/28-03:41:00-1053) CMD ()
root (10/28-03:41:00-1055) CMD ()
root (10/28-03:41:39-1071) REPLACE (root)
root (10/28-03:42:00-913) RELOAD (tabs/root)
root (10/28-03:42:00-1073) CMD ()
root (10/28-03:42:00-1075) CMD ()
CRON (10/28-03:42:13-1087) STARTUP (fork ok)
root (10/28-03:43:00-1093) CMD ()
root (10/28-03:43:00-1095) CMD ()
root (10/28-03:44:00-1149) CMD ()
root (10/28-03:44:00-1151) CMD ()
root (10/28-03:45:00-1155) CMD ()
root (10/28-03:45:00-1157) CMD ()
root (10/28-03:46:00-1159) CMD ()
root (10/28-03:46:00-1161) CMD ()

while true
do sleep 300;

и в самом конце

done----это всё убрал, вручную скрипт запускается, ч\з cron нифига, что я не так делаю??? :ab:

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #6 on: October 28, 2009, 01:06:07 PM »
1 * * * * /usr/bin/queue.sh

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

*/1 * * * * /usr/bin/queue.sh > /dev/null 2>&1

ну и путь к скрипту должен быть правильным.
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #7 on: October 28, 2009, 02:25:39 PM »
1 * * * * /usr/bin/queue.sh

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

*/1 * * * * /usr/bin/queue.sh > /dev/null 2>&1

ну и путь к скрипту должен быть правильным.


Огромнейшее спасибо!!! Я понадеялся на онлайн-генератор!!

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #8 on: October 28, 2009, 07:26:06 PM »
Привет, с cron работает всё отлично, поставил на каждые десять минут, хотел спросить, cron пишет лог, этот лог как-то ограничен в размерах, или можно его как-то ограничить, а то за неделю разрастётся???
Заранее благодарен!!

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #9 on: October 28, 2009, 11:49:02 PM »
На каком имидже у тебя лог пишется. Глянул на нескольких, нигде не увидел. Или ты сам в syslog дописал?
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #10 on: October 29, 2009, 12:18:12 AM »
В Newnigma2.8 в /cron лежит файл log! :ai:
Сам нечего не дописывал, просто установил cron с ихнего фида!!

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #11 on: October 29, 2009, 09:30:38 AM »
Ограничить размер не получится, можно просто удалять его сразу при загрузке Дрима. В Newnigma cron в автозагрузке стоит K65cron, а лог можно удалять после его старта. Делаем скрипт вида


#! /bin/sh
rm -f /cron/log


обзываем его remove_cronlog, даем ему права 755 и помещаем в /etc/init.d/ и делаем чтобы он выполнялся при старте системы

update-rc.d remove_cronlog defaults 70
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #12 on: October 29, 2009, 03:04:11 PM »
Спасибо огромное, выручил очень сильно!!!
Не сочти за наглость, но можно тебя попросить собрать новый Transmission 1.76 для дрима, можно только transmission-daemon и transmission-remote. ::)

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #13 on: October 29, 2009, 06:48:35 PM »
Ну какая наглость. Мне и самому интересно :) Собрал версию за 25.10.2009
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #14 on: October 29, 2009, 07:39:23 PM »
Ну какая наглость. Мне и самому интересно :) Собрал версию за 25.10.2009
Спасибо Огромное!!

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #15 on: November 01, 2009, 04:12:43 PM »
Привет!!
А реально из этих исходников собрать ещё один торрент-клиент для 800??
Буду очень благодарен!!! ;D


Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #16 on: November 01, 2009, 04:20:35 PM »
Надо попробовать, тогда узнаем реально или нет ;D Пока ничего не обещаю ;)
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #17 on: November 01, 2009, 04:31:15 PM »
Понятно, тогда подождём!!
Спасибо!!

Offline dillinger

  • Администратор
  • *
  • Posts: 1629
  • Karma: 1081
Скрипт для организации очереди Transmission 1.75
« Reply #18 on: November 02, 2009, 04:13:06 PM »
Собрал, но пока только консольный вариант. Если кому надо выложу. С разными WebUI надо еще разбираться. Надо будет rtorrent пересобрать с поддержкой xmlrpc, может что то и получиться.
0,9m - 5E+13E+19Е+4W

Offline Feromon

  • Шарящий
  • *
  • Posts: 69
  • Karma: 19
Скрипт для организации очереди Transmission 1.75
« Reply #19 on: November 02, 2009, 08:04:32 PM »
Оооо!! Я смотрю прогресс на лицо!!!
Дело осталось за малым, так держать!!! ;D