La idea detrás de un pequeño proyecto en el que estoy trabajando es poder cargar un archivo de música y que After Effects lo recoja y lo reproduzca dentro de una plantilla de archivo de video que tengo.
El flujo de trabajo sería:
Una vez que subo un nuevo archivo de música a una carpeta en mi iCloud Drive, que sería monitoreado por mi iMac. Cada nuevo archivo de música activa una secuencia de comandos de Adobe que importa la nueva pista a un proyecto de Adobe After Effects que la exporta a AME y luego se cierra. La música luego se mueve a otro directorio.
Me encontré con un problema al pasar un nombre de archivo a una secuencia de comandos de Adobe, por lo que, para solucionarlo, he creado una plantilla de secuencia de comandos de Adobe con un nombre de archivo de marcador de posición (la ruta del archivo siempre sería la misma) que se puede duplicar, tener el nombre de archivo de marcador de posición reemplazado (a través de un script por lotes, aunque sospecho que podría haber una forma más simple de hacerlo), ejecutado y luego eliminado.
Como primer paso, he estado tratando de concentrarme en obtener el nombre de los nuevos archivos en la carpeta, ahora con un éxito mixto. Cuando ejecuto un archivo de secuencia de comandos AppleScript (.scpt) adjunto a la carpeta, puedo mostrar el nombre del archivo y pasarlo a un archivo por lotes. El problema ahora es que no parece funcionar con el equivalente de Automator.
Código a continuación:
on adding folder items to thisFolder after receiving theseItems
repeat with i from 1 to count theseItems
try
set thisItem to item i in theseItems
set thisItemsInfo to info for thisItem
set thisItemsFileName to quoted form of name in thisItemsInfo
display dialog thisItemsFileName buttons {"Continue"}
do shell script "/Users/jeffolaa/ReplaceName.sh " & thisItemsFileName
end try
end repeat
end adding folder items to
El lote de ReplaceName es un solo comando:
#!/bin/bash
sed -i.bu 's/EDITTHIS/'$1'/' /Users/jeffolaa/Library/Mobile\ Documents/com\~apple\~CloudDocs/Documents/Adobe\ Scripts/AddMusicExport.jsx
Hasta ahora, mi flujo de trabajo de Automator se ve así:
¡Toda ayuda es muy apreciada!
Nota: Esta respuesta se escribió en base a la publicación original de la pregunta y, en particular, los primeros tres párrafos de esta respuesta, sin esta nota. Desde entonces, el OP se actualizó para abordar lo expresado en los primeros tres párrafos y ahora pueden parecer fuera de contexto. Sin embargo, al observar el historial de edición del OP, se puede ver la relevancia en el contexto de la pregunta original. Se mantendrán por ahora hasta que tenga tiempo para hacer una edición adecuada.
Lo sentimos, pero su pregunta no está tan bien definida y no está totalmente claro qué acciones agregó al flujo de trabajo de Acción de carpeta de Automator , sin la obvia acción Ejecutar AppleScript . Tampoco está claro si hay acciones añadidas antes o después de la acción Ejecutar AppleScript . Además, no está claro en qué código se encuentra o todo lo que está haciendo. Lo que me lleva a creer que simplemente pasar el del archivo a puede no ser suficiente. Aunque sin ver el código en , a estas alturas solo tú lo sabes. /Users/jeffolaa/pointer.sh
name
pointer.sh
pointer.sh
Además, la forma del código AppleScript que ha mostrado en el OP no es la forma adecuada para un flujo de trabajo de Acción de carpeta de Automator que utiliza una acción Ejecutar AppleScript . El controlador es del tipo que se usa en un archivo de secuencia de comandos AppleScript (.scpt) que se asigna manualmente a la carpeta de destino mediante el comando Configuración de acción de carpeta... del menú contextual Servicios en Finder , no en Automator , donde debe usar el manipulador on adding folder items
on input
en la acción Ejecutar AppleScript .
Tampoco tiene un código de manejo de errores , lo cual es importante en las acciones de carpeta y el tipo y la cantidad pueden depender de lo que haya codificado en el archivo pointer.sh
. En otras palabras, es posible que desee filtrar los elementos agregados a la carpeta por tipo, asegurándose de que sea un archivo y no una carpeta, o un tipo particular de archivo con una extensión determinada, etc. Esto se puede hacer en Automator antes de que llegue a la acción Ejecutar AppleScript , o en el código de la acción Ejecutar AppleScript , o en el código en , o una combinación de cualquiera o todas ellas. pointer.sh
Dicho esto, el siguiente código AppleScript de ejemplo es una codificación mínima de lo que tiene sentido para poder pasar el nombre de ruta completo citado de los archivos agregados a la carpeta de destino que configuró en la acción de carpeta de Automator recibe archivos y carpetas agregados a [ carpeta ] para pasar a , ya que eso es típico de un argumento pasado a un comando de shell . pointer.sh
Ejemplo mínimo de código AppleScript para usar en una acción Ejecutar AppleScript en un flujo de trabajo de Acción de carpeta de Automator :
on run {input, parameters}
repeat with i from 1 to count input
try
set thisItem to item i in input
set thisItemsPathname to quoted form of POSIX path of thisItem
do shell script "/Users/jeffolaa/pointer.sh " & thisItemsPathname
end try
end repeat
end run
Código AppleScript de ejemplo mínimo para usar en un archivo de secuencia de comandos AppleScript (.scpt) asignado manualmente a la carpeta de destino mediante el comando Configuración de acción de carpeta... del menú contextual Servicios en Finder :
on adding folder items to thisFolder after receiving theseItems
repeat with i from 1 to count theseItems
try
set thisItem to item i in theseItems
set thisItemsPathname to quoted form of POSIX path of thisItem
do shell script "/Users/jeffolaa/pointer.sh " & thisItemsPathname
end try
end repeat
end adding folder items to
~/Library/Scripts/Folder Action Scripts
Para probar el código anterior , creé el /Users/jeffolaa/pointer.sh
archivo con el siguiente código :
#!/bin/bash
mv "$1" "$HOME/Test/"
Lo que simplemente mueve los archivos de vuelta a la carpeta desde la que fueron arrastrados a la carpeta de destino a la que está asignada la Acción de carpeta , que es una carpeta dentro de la carpeta Prueba . Esto me hizo saber que estaba funcionando correctamente según lo codificado.
Ahora, si es solo el name
del archivo al que desea pasar pointer.sh
, puede usar lo siguiente:
Ejemplo mínimo de código AppleScript para usar en una acción Ejecutar AppleScript en un flujo de trabajo de Acción de carpeta de Automator :
on run {input, parameters}
repeat with i from 1 to count input
try
set thisItem to item i in input
set thisItemsInfo to info for thisItem
set thisItemsFileName to quoted form of name in thisItemsInfo
do shell script "/Users/jeffolaa/pointer.sh " & thisItemsFileName
end try
end repeat
end run
Código AppleScript de ejemplo mínimo para usar en un archivo de secuencia de comandos AppleScript (.scpt) asignado manualmente a la carpeta de destino mediante el comando Configuración de acción de carpeta... del menú contextual Servicios en Finder :
on adding folder items to thisFolder after receiving theseItems
repeat with i from 1 to count theseItems
try
set thisItem to item i in theseItems
set thisItemsInfo to info for thisItem
set thisItemsFileName to quoted form of name in thisItemsInfo
do shell script "/Users/jeffolaa/pointer.sh " & thisItemsFileName
end try
end repeat
end adding folder items to
~/Library/Scripts/Folder Action Scripts
Para probar el código anterior , edité el pointer.sh
archivo con el siguiente código:
#!/bin/bash
say "$1"
Lo que simplemente dice el name
archivo guardado en thisItemsFileName
, lo que me permite saber que estaba funcionando correctamente según lo codificado.
Nota: El ejemplo de código AppleScript anterior es solo eso, y sin envolverlo en una declaración , no incluye ningún otro manejo de errores que pueda ser apropiado/necesario/deseable, el usuario tiene la responsabilidad de agregar cualquier manejo de errores apropiado para cualquier ejemplo . código presentado y/o código escrito por uno mismo.try
Dicho esto, si actualiza su pregunta para completar las piezas faltantes como se menciona en los párrafos iniciales de mi respuesta, estaré encantado de editar estos ejemplos de código para reflejar qué manejo de errores apropiado se debe agregar. Simplemente no tiene sentido agregarlo hasta que sepa los detalles.
Logré resolver mi bloqueador gracias a algunas sugerencias increíbles de @ user34393894.
En lugar de usar Automator, pude obtener el resultado que necesitaba a través de un script de AppleScript adjunto como una acción de carpeta.
Para cualquier persona interesada, el código que estoy usando ahora y que está obteniendo excelentes resultados es:
on adding folder items to thisFolder after receiving theseItems
repeat with i from 1 to count theseItems
try
set thisItem to item i in theseItems
set thisItemsInfo to info for thisItem
set thisItemsFileName to quoted form of name in thisItemsInfo
tell application "System Events" -- get item info
set theKind to kind of thisItem
set theExtension to name extension of thisItem
end tell
if theKind is "Folder" then
-- do folder stuff
else if theExtension is "mp3" then
do shell script "/Users/jeffolaa/ReplaceName.sh " & thisItemsFileName
end if
end try
end repeat
end adding folder items to
Si alguien tiene algún comentario o se basa en el código, sería muy apreciado, ¡siempre buscando mejorar!
System Events
para obtener información del elemento , ya que info for
hay un AppleScript incorporado y eso ya se hizo y está contenido en thisItemsInfo
for thisItem
. Es decir, la línea set thisItemsInfo to info for thisItem
ya contiene la información , simplemente acceda a ella como se hace en la siguiente línea, pero según corresponda para el valor de la propiedad que desea recuperar, por ejemplo:set theKind to kind in thisItemsInfo
jeffolaa