====== 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}}