Tengo un AppleScript que gestiona mi granja de renderización casera de After Effects. La granja se compone de tres máquinas de renderizado.
El script pide al usuario que seleccione en qué máquina(s) quiere renderizar. Toma su(s) elección(es) y ejecuta una aplicación AppleScript externa dependiendo de la(s) elección(es) que hayan hecho.
Cada aplicación externa de AppleScript ejecuta un comando que inicia un renderizado de After Effects utilizando ExtendScript así
set scriptfile to (POSIX file ("/Applications/Render Farm/Scripts/jsx/render_1.jsx"))
tell application "Adobe After Effects 2020"
DoScriptFile scriptfile
end tell
El archivo JSX al que se ha hecho referencia indica a After Effects que inicie un renderizado en la máquina de renderizado 1. La idea del master script es que el usuario pueda seleccionar varias máquinas de renderizado e iniciarlas todas a la vez.
set Options to {"Render Node 1", "Render Node 2", "Render Node 3"}
set ListA to (choose from list Options with prompt "Choose items" with title "Select Stuff" with multiple selections allowed)
if (ListA contains "Render Node 1") then
tell application "Render Node 1 App" to activate
end if
if (ListA contains "Render Node 2") then
tell application "Render Node 2 App" to activate
end if
if (ListA contains "Render Node 3") then
tell application "Render Node 3 App" to activate
end if
Mi script permite múltiples opciones para lograr esto, pero odio lo secuencial que es. After Effects tiene que recibir el primer comando AppleScript, luego ejecutar el comando JSX que ssh en la máquina de renderizado, luego abre el programa de línea de comandos aerender varias veces por máquina (cada instancia puede tardar unos 10-15 segundos en abrirse). Sólo después de que la última instancia de aerender se haya abierto, After Effects está finalmente listo para escuchar otro comando AppleScript y hacer todo de nuevo para la segunda máquina.
Sin embargo, tengo un comando JSX diferente que puede iniciar un render en todas las máquinas de render al mismo tiempo desde After Effects sin esperar. También tengo otros que pueden iniciar un render en Render Node 1 & 2, Render Node 1 & 3, y Render Node 2 & 3 (básicamente un script diferente para cada combinación.
Me gustaría hacer lo mismo dentro de mi AppleScript maestro script. Pero no quiero mostrar una lista de todas las combinaciones posibles, quiero algo que funcione de forma más elegante.
Lo que me gustaría es modificar el script maestro para que si, por ejemplo, se detectan dos selecciones entonces no ejecute dos , sólo ejecute un diferentes script.
Algo así, pero con una sintaxis que funcione
if (ListA contains "Render Node 1" and "Render Node 2") then
tell application "Render Node 1 & 2 App" to activate
end if
Cuando lo ejecuto, me sale el error "No se puede convertir "Render Node 2" en tipo booleano". Pero seguro que hay una forma de conseguirlo.
También tiene que funcionar de forma inteligente. Si elijo Render Node 1
y Render Node 3
sólo debería abrir la aplicación Render Node 1 & 3 App
. No quiero que también se abra Render Node 1 App
o Render Node 1, 2 & 3 App
.
0 votos
¿Los nombres de las combinaciones utilizan parte de las opciones (como la última palabra), o es necesario hacer coincidir las opciones con otra lista arbitraria?