[PS CC2022] Advanced batch - скрипт для Фотошопа

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
"Плох тот скриптописатель, который ни разу не пытался создать свой батч-процессор" ©

Основной задачей было полностью отказаться от встроенного батча и добавить ряд недостатющих (мне) функций. Сразу обращу внимание - это не имидж-процессор (то есть сам по себе он не производит никаких манипуляций с изображением- по сути это просто навороченная запускалка экшенов).

b523db825163.png


Ссылка на скрипт (ресурсы форума) - https://forum.rudtp.ru/resources/advanced-batch.3311/

Открытие файлов. скрипт последовательно обрабатывает изображения на основании предварительно составленного списка файлов (список не обновляется до окончания задания на обработку, т.е. если в папке в процессе его работы были добавлены или удалены файлы - скрипт их пропустит). Скрипт позволяет использовать три источника файлов: указанная пользователем папка, открытые в данный момент документы, файлы из Adobe bridge. Для каждого источника можно указать, открывать файлы из подкаталогов или нет, открывать файлы, поддерживаемые Adobe camera raw через интерфейс ACR или нет (в архиве со скриптом есть отдельная запускалка для передачи файлов/папок из бридж. В ней написано в какой каталог ее нужно кинуть), выбирать тип фалов для обработки (он генерируется динамически, в зависимости от того что лежит в указанной папке), также есть возможность открывать файлы не по одному, а "пачками" - либо все файлы сразу, либо группируя их по подкаталогам.

Выполнение операций. Advanced batch позволяет составить список до 5 операций (экшенов или скриптов), которые будут последовательно выполняться для каждого файла. Операции можно добавлять/исключать из списка кнопками “+” и “-”, либо включать/выключать из обработки (без удаления из списка) переключателем “включить”. После каждой операции можно поставить “стоп”, т.е. приостановить работу скрипта для ручной обработки файла. Также команда "стоп" может быть записана внутри экшена стандартными средствами Фотошопа. Во время остановки пользователь может выполнять любые операции - скрипт запоминает команду (или экшен) на которой он остановился и при следующем запуске скрипта работа будет возобновлена с места остановки (если вы планируете использовать такой функционал, то для удобства работы целесообразно назначить скрипту горячую клавишу в меню фотошопа или записать его вызов в панель операций). После того как будут выполнены все операции в списке для текущего файла, скрипт будет ждать его закрытия (файл можно закрыть вручную, через экшен, через панель сохранения) и только после этого откроет следующий. Если файл был закрыт до начала выполнения последней операции (т.е. файла на экране нет, а операции в списке еще есть), то Advanced batch приостановит обработку и откроет окно с предложением закончить обработку или открыть следующий файл. Обратите внимание - скрипт отслеживает закрытие не активного документа, а именного того, который был открыт из списка файлов. Т.е. в процессе выполнения операций вы можете открывать/закрывать другие документы - это не вызовет остановку работы скрипта.
Стоп перед первой операцией осуществляется выключением переключателя “автоматически запускать первую операцию при открытии документа” (то есть скрипт откроет файл на экран и сразу же остановится. Чтобы продолжить его нужно запустить еще раз). Переключатель “продолжить с места остановки, если она была внутри операции” отвечает за обработку команд “стоп” внутри экшенов, либо за отмену выполнения экшенов пользователем в процессе их выполнения. Если опция включена, то при следующем запуске скрипт попытается продолжить обработку с команды, на которой был остановлен экшен, если выключена - то посчитает "стоп" ошибкой перейдет к выполнению следующей операции в списке.

Сохранение файлов. Этот блок операций выполняется при каждой итерации. Он позволяет сохранять и закрывать файлы тремя способами: вручную, с помощью отдельной операции и параметров заданных в интерфейсе скрипта и с помощью встроенного в фотошоп batch-процессора.
При сохранении вручную файл можно сохранить, прописав соответствующую команду в любом из экшенов списка операций (при этом закрыть файл можно только в последнем экшене, если в списке их больше одного - иначе он не сможет выполнить следующую операцию и остановится), либо после выполнения всех операций и остановки скрипта самостоятельно закрыть и сохранить файл через меню фотошопа. Для сохранения вручную в панели “после выполнения операций” в выпадающем списке нужно выбрать “ничего”.
Для сохранения файла при помощи параметров заданных в интерфейсе скрипта, следует выбрать либо опцию “сохранить и закрыть” (сохраняет файл в ту же папку, из которой он был открыт), либо “сохранить как... и закрыть” (позволяет задать один из трех форматов и указать каталог, в которой нужно сохранять файлы).

Сохранение файла при помощи встроенного в фотошоп batch-процессора активируется переключателем “переопределить команды “сохранить как” в последней операции” и возможно только если команда (или команды) сохранения прописана в последнем экшене из списка. Сохранение файла при помощи встроенного в фотошоп batch-процессора подразумевает, что в последнем экшене пользователем записана одна или несколько команд сохранения в указанный им формат - Advanced batch заменяет в этих командах только каталог назначения в соответствии с настройками скрипта, при этом сохраняются все параметры сохранения файла (тип файла, настройки компрессии, встроенные профили и т.п), что позволяет использовать для сохранения все доступные форматы файлов фотошопа.

Пресеты. Скрипт пресеты в отдельном файле. WIN: ~User\AppData\Roaming\Adobe\Adobe Photoshop 2020\Adobe Photoshop 2020 Settings\Advanced batch.desc, MACOS: ~Library/Preferences/Adobe Photoshop 2020 Settings/Advanced batch.desc (при штатном обновлении Фотошопа он автоматом переносит все настройки, файл нужен если обновляетесь с полным удалением настроек или нужно перенести на другой комп).

Интерфейс как обычно ru/eng (локализация зависит от настроек интерфейса фотошопа). Поменять можно в 15 строке скрипта.
 
Последнее редактирование модератором:

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
Перечитал текст - куча опечаток '%)'
В любом случае, если будут вопросы по конкретным сценариям использования или проблемы (скрипт хоть и неплохо обкатан, но в любом коде могут быть ошибки) - я на связи.
 
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
Перечитал текст - куча опечаток '%)'
В любом случае, если будут вопросы по конкретным сценариям использования или проблемы (скрипт хоть и неплохо обкатан, но в любом коде могут быть ошибки) - я на связи.
Cs6 СС 2014 СС2015 СС2015.3 совместим?
 

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
CC2015+

Что-то накрутил в последней версии, сейчас не могу заставить его работать ни на чем ниже CC2020.
В выходные посмотрю, заодно добавлю поддержку CC2014.


Файл временно удалил из ресурсов.
 
Последнее редактирование:

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
CC2015+

Что-то накрутил в последней версии, сейчас не могу заставить его работать ни на чем ниже CC2020. В выходные посмотрю, заодно добавлю поддержку CC2014.

Файл временно удалил из ресурсов.
Да желательно чтоб хотя бы CC поддерживал... ))))
У многих даже Cs6 стоит ...
 

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
Тут проблема в том, что начинка фотошопа постоянно развивается (даже если внешне одна версия от другой мало отличаются). Многие вещи просто невозможно сделать на старых релизах.
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
Тут проблема в том, что начинка фотошопа постоянно развивается (даже если внешне одна версия от другой мало отличаются). Многие вещи просто невозможно сделать на старых релизах.
но если скрипт работает на старой версии то по идее он будет работать и на новой....))) 'otbline'
 

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
Не факт. Если используется стандартная Extend Script DOM модель (которую Адоб продвигал до появления UXP), то там высокая совместимость (но низкий функционал изначально). Если используется Action Manager (подсистема событий и внутренние структуры данных), то там различия между двумя версиями могут быть огромны (появляются, исчезают переменные, меняются структуры объектов и т.п.) - там они не то чтобы совсем плюют на обратную совместимость, но порой бывают столь радикальные изменения, что скрипт написанный 5 лет назад с использованием Action Manager на новых версиях без адаптации работать не будет.
 
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
Не факт. Если используется стандартная Extend Script DOM модель (которую Адоб продвигал до появления UXP), то там высокая совместимость (но низкий функционал изначально). Если используется Action Manager (подсистема событий и внутренние структуры данных), то там различия между двумя версиями могут быть огромны (появляются, исчезают переменные, меняются структуры объектов и т.п.) - там они не то чтобы совсем плюют на обратную совместимость, но порой бывают столь радикальные изменения, что скрипт написанный 5 лет назад с использованием Action Manager на новых версиях без адаптации работать не будет.
новички скриптами не пользуются... они про них просто не знают )))) :D
а кто освоил программу предпочитают не менять версию (у многих вообще Cs 6). 'otbline'
 
Последнее редактирование:

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
Я наоборот фанат новых версий :) (возможно потому что занимаюсь скриптами - там постоянно есть что-то новое и интересное под капотом).

По поводу обратной совместимости вспомнил такой момент: как только в Фотошоп добавили artboards, во внутренних структурах у каждого слоя сразу же появилась такая переменная. Поначалу она принимала значение true или false и была у каждого слоя. Через пару версий они решили "а нафига нам ее хранить в каждом слое, давайте она теперь будет только у самих artboards. И почему только булево значение? Давайте запихаем внутрь нее объект, который будет описывать параметры artboard!". Т.е. с одной стороны все хорошо и логично, а с другой у всех людей, которые использовали эту переменную в скриптах сразу же порушилась вся логика...
 
Последнее редактирование:
  • Спасибо
Реакции: _MBK_

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
Djj,ot rfrjq cvsck
Я наоборот фанат новых версий :) (возможно потому что занимаюсь скриптами - там постоянно есть что-то новое и интересное под капотом).

По поводу обратной совместимости вспомнил такой момент: как только в Фотошоп добавили artboards, во внутренних структурах у каждого слоя сразу же появилась такая переменная. Поначалу она принимала значение true или false и была у каждого слоя. Через пару версий они решили "а нафига нам ее хранить в каждом слое, давайте она теперь будет только у самих artboards. И почему только булево значение? Давайте запихаем внутрь нее объект, который будет описывать параметры artboard)". Т.е. с одной стороны все хорошо и логично, а с другой у всех людей, которые использовали эту переменную в скриптах сразу же порушилась вся логика...
ну вот именно по этой причине не все хотят менять версию... Вот зачем мне новая если работает и вполне устраивает та что стоит на компе?
Баги разгребать...? 'otbline'
 

jazzy

Участник
Топикстартер
Сообщения
330
Реакции
175
Нашел в чем проблема (начиная с CC2019 изменились параметры функции для открытия файлов, Фотошоп стал поддерживать передачу файлов списком, чем я и воспользовался, поломав совместимость с более старшими версиями).

- весь функционал доступен на актуальной версии Фотошоп.
- CC2018 и старше: не поддерживается открытие RAW файлов в режиме "открыть все сразу" (файлы будут упорно открываться по-одному). С обычными файлами всё Ок.
- CC2014 и старше: не доступен системный прогресс-бар с информацией о текущем файле.

Самая старшая версия на которой тестировался - CS6 (функционально скрипт совместим со всеми версиями вплоть до CS3, но могут быть Нюансы)

Ссылка на скрипт - Advanced batch
 
Последнее редактирование:
  • Спасибо
Реакции: NatalieRedFox_333 и densen