Передача параметров из Python в ExtendScript - PullRequest
0 голосов
/ 10 ноября 2018

Я работаю в команде видеоредакторов и пытаюсь создать инструмент, который автоматизирует некоторые части нашего конвейера. Основная часть этого инструмента - небольшая программа, написанная на Python с PyQt, которая создает каталог проекта и файлы проекта Premiere на основе правильного соглашения об именах, которое мы используем в нашем конвейере.

Главное, чего сейчас не хватает, - это возможность использовать одно и то же имя для последовательностей внутри проекта. Я хотел бы, чтобы это также было автоматизировано, чтобы избежать ошибок оператора, если редакторы сами ответственны за ввод названия последовательности.

У меня проблема в том, что я не уверен, как передать имя из Python скрипту * .jsx, который создает последовательности и переименовывает их.

Одной из идей, которые у меня были, было использование пакетного скрипта, который запускает файл jsx с использованием ExtendScript Toolkit.exe. Внутри jsx я запускал скрипт Python с использованием system.callSystem, а затем передавал выходные данные функции, отвечающей за создание и переименование последовательностей. Однако есть две проблемы с этой идеей:

  1. Это означает, что мне придется пройти через After Effects, поскольку в Premiere нет системного модуля.

  2. Мне нужно будет получить путь к скрипту jsx и оттуда запустить скрипт Python, который будет находиться по некоторому относительному пути. Я знаю, как получить путь к сценарию jsx, но проблема, с которой я столкнулся сейчас, заключается в следующем: если я пытаюсь запустить сценарий jsx с помощью этой команды ExtendScript Toolkit.exe -run script.jsx, путь сценария представляется временным путем, что означает, что путь к скрипту Python неверен. Если я использую ExtendScript Toolkit.exe -cmd script.jsx, он получает правильный путь к сценарию, но тогда ничего не происходит.

Чтобы дать вам представление о том, что я пытался сделать, вот сценарии, которые я пытался использовать.

python.py

print("Hello World!")

script.jsx

#target aftereffect

var path = (new Folder(new File($.fileName)).parent).fsName + "\\python.py"

var cmd = 'python.exe ' + path

var stdout = system.callSystem(cmd)

alert(stdout)

Как я уже сказал, с переключателем -run в командной строке это в основном работает, и я получаю окно с предупреждением, что Python не может найти указанный файл, что имеет смысл, потому что путь к файлу jsx временный путь. С переключателем -cmd я не получаю окно с предупреждением, но я не получаю никаких ошибок в командной строке. Он просто выходит, как будто ничего не случилось.

Я что-то не так делаю? Есть ли способ, которым я могу достичь того, что я хочу сделать?

...