====== Userscripts: профессиональная работа с сидбоксом ====== Сидбокс имеет функционал, вполне достаточный для решения большинства задач. Тем не менее, мы регулярно сталкиваемся с запросами на дополнительные функции, в частности – на **автоматизацию массовых операций**. Такой функционал, с одной стороны, нужен далеко не всем. С другой стороны, конкретные запросы разных пользователей довольно трудно привести к общему знаменателю. Учитывая все эти факторы, мы пришли к решению запилить новый плагин для наших сидбоксов – userscripts (пользовательские скрипты). ===== Как это работает ===== {{gallery> :howto:uscript1.png?300x300&lightbox}} По умолчанию в окне //**Available scripts**// ничего нет. Мы активируем скрипты по запросу – свяжитесь с нами (см. внизу страницы) и расскажите о своей задаче, после чего мы подберем вам нужный скрипт (или даже напишем новый). Кнопка Usage – справка по скрипту, кнопка Run запускает скрипт. Для работы скрипта может потребоваться указать опции и параметры (см. справку) – это делается в поле //**Script command line**//. Пользовательские скрипты не предполагают интерактивности, поэтому все управление производится через опции/параметры командной строки. Опции начинаются с ''**-**'', например ''**-h**'' или ''**--help**'' и могут быть указаны в любом месте командной строки. //Чаще всего// опции не являются обязательными. Параметры всегда являются //позиционными//, т.е. их количество и взаимное расположение – фиксированы. \\ \\ \\ \\ \\ \\ \\ \\ {{gallery> :howto:uscript2.png?300x300&lightbox}} {{gallery> :howto:uscript3.png?500x100&lightbox}} \\ \\ \\ \\ \\ \\ После запуска ход выполнения задачи отображается в окне //**Console**//, ошибки – в окне //**Diagnostics**//. Кнопка Cancel прерывает работу скрипта, Hide – прячет окно. Журнал задач находится на вкладке //**Tasks**//, там можно посмотреть текущий статус задачи, открыть спрятанное окно //**Console**// или прервать задачу. \\ \\ \\ \\ \\ \\ \\ \\ ===== create_batch ===== {{gallery> :howto:uscript4.png?300x300&lightbox}} Этот скрипт предназначен для массового создания торрентов в указанной папке в автоматическом режиме. Для каждого ((исключая ''**.***'' (скрытые ) и\\ ''***.meta**'' (метаданные magnet) )) файла/папки создается соответствующий файл //**.torrent**// c указанными анонсерами и приватностью. //Пустые файлы// и //папки, содержащие только пустые файлы// – игнорируются. Командная строка: \\ ''**[опции] папка группа_анонсеров1 [группа_анонсеров2 ...]**'', где \\ ''**группа_анонсеров := анонсер || %%'%%анонсер1 анонсер2 ...%%'%%**'' Скрипт имеет 2 режима – создание (по умолчанию) и обновление (опция ''**--update**''). В режиме создания сначала удаляются все файлы //**.torrent**// в выбранной папке, затем для каждого файла/папки создается новый //**.torrent**//. В режиме обновления сначала производится проверка, актуален ли уже имеющийся //**.torrent**// ((Если какой-либо файл/папка, включая вложенные, имеет более позднюю дату модификации, чем соответствующий .torrent, то последний считается неактуальным и будет пересоздан)). Также проверяется соответствие приватности, списка анонсеров и размера сегмента ((проверка на размер сегмента может быть отключена опцией\\ ''**--ignore-piece-change**'')). Опция ''**--private**'' создает приватные торренты (DHT, PeX и LSD отключены). Размер сегмента выбирается автоматически, от 256K до 64M включительно, из расчета 1300 сегментов на торрент. Опция ''**--reduce**'' рассчитывает размер, исходя из соотношения 700 сегментов на торрент, что позволяет уменьшить размер //**.torrent**// файлов. Опции ''**--min-piece VAL**'' и ''**--max-piece VAL**'' ограничивают минимальный/максимальный размер сегмента. Допустимые значения ''**VAL**'' – 256K, 512K, 1M, 2M, 4M, 8M, 16M, 32M и 64M. К примеру, ''**--max-piece 16M**'' будет означать, что автоматически выбираемый размер сегмента **не будет превышать 16M**. Полный список опций и параметров командной строки, а также примеры их использования всегда доступны по нажатию кнопки Usage. В обоих режимах после окончания работы в целевой папке будут содержаться **только актуальные торренты для всех валидных объектов** ((все прочие файлы //**.torrent**// (не соответствующие валидным файлам/папкам) будут удалены)). В абсолютном большинстве случаев режим обновления (опция ''**--update**'') вполне достаточен, поскольку любые операции с файлами (включая скачивание через торрент, заливку/удаление/создание/переименование через FTP/SFTP и File Manager) изменяют **дату модификации файла/папки** и делают соответствующий //**.torrent**// – **неактуальным**. Скрипт имеет защиту против запуска нескольких копий одновременно – при такой попытке будет выдана ошибка ''**Script is already running**'' {{section>:includes#gethelp}}