faq обучение настройка
Текущее время: Сб июн 21, 2025 13:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Сб авг 21, 2010 14:29 
Не в сети

Зарегистрирован: Пн фев 02, 2009 15:45
Сообщений: 136
Откуда: Киев
Transmission - Скрипт для организации очереди

Авторство принадлежит авторам :)
на просторах инета нашел вот хорошую статью
Скрипт для организации очереди Transmission

Сам давно искал, чтобы немного облегчить жизнь для DNS-323

Цитирую

Цитата:
Пример скрипта для организации очереди:
Так как в клиенте Transmission отсутствует возможность выставлять количество одновременных загрузок, был написан скрипт который отслеживает количество текущих загрузок и сравнивает их с количеством максимально возможных одновременных загрузок. Если количество текущих меньше чем максимально возможное число, то недостающее количество файлов добавляются в загрузки. Для работы скрипта необходимо включить в опциях клиента слежение за папкой с файлами *.torrent. Скрипт запускается по cron'у раз в несколько минут и делает необходимые проверки.
1.
Код:
#!/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="/mnt/HD_a2/ffp/bin/transmission-remote"
# Проверка является ли файл transmission-remote исполняемым
[ -x "${TBC_REMOTE_BIN}" ] && [ -e "${TBC_REMOTE_BIN}" ] || exit 1
# Путь до папки в которой находятся файлы *.torrent ожидающие очереди
TBC_TORRENTS_NEW_DIR="/mnt/HD_a2/downloads/torrents_new_dir"
# Путь до папки которую отслеживает transmission-daemon на предмет появления в
# ней новых файлов как только новый файл появляется в папке он добавляется в
# список загрузки. Данная опция работает только если установленны опции
# "watch-dir" и "watch-dir-enabled" в файле конфигурации transmission-daemon
# (см. документацию на transmission-daemon)
TBC_TORRENTS_WATCH_DIR="/mnt/HD_a2/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
Код:
#!/bin/sh

# *************
# Configuration
REMOTE="/mnt/HD_a2/ffp/bin/transmission-remote"
USERNAME="username"
PASSWORD="password"
MAXDOWN="3"
MAXACTIVE="5"
CONFIG="/mnt/HD_a2/.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


коментарий:
Количество одновременно закачиваемых торентов регулируется параметром

MAXDOWN="1"

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

REMOTE="/mnt/HD_a2/ffp/bin/transmission-remote" #-путь проверить на всякий случай
USERNAME="user"
PASSWORD="pass"
MAXDOWN="1"
MAXACTIVE="5"
CONFIG="/mnt/HD_a2/.transmission-daemon/settings.json" #-путь проверить на всякий случай

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

do sleep 300

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

while true
do sleep 300;

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

done




п.с. признаюсь сам еще не запускал, т.к. нашел их в 4 ночи :)

_________________
DNS323 Firmware Version: 1.08
fun-plug 0.5
Transmission 2.42


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB