1 votos

Obtener nombres de archivo individuales en Automator

La idea detrás de un pequeño proyecto en el que estoy trabajando es la de ser capaz de cargar un archivo de música y After Effects recogerlo y dejarlo dentro de un archivo de vídeo de la plantilla que tengo.

El flujo de trabajo sería:

Una vez que yo suba un nuevo archivo de música a una carpeta en mi iCloud Drive, que sería supervisado supervisado por mi iMac. Cada nuevo archivo de música desencadena una secuencia de comandos de Adobe que las importaciones de la nueva pista de Adobe After Effects proyecto que exporta AME y luego se cierra. La música es movido a otro directorio.

He ejecutado en un problema con el paso de un nombre de archivo de Adobe script, por lo que para evitar esto han hecho una plantilla de Adobe secuencia de comandos con un marcador de posición de nombre de archivo (la ruta de acceso del archivo sea siempre el mismo) que puede ser duplicado, tiene el marcador de nombre de archivo reemplazado (a través de una secuencia de comandos por lotes, a pesar de que podría haber una manera más sencilla de hacerlo sospecho), se ejecuta y luego se elimina.

Como un primer paso que he estado tratando de centrarse en conseguir que el nombre de los nuevos archivos a la carpeta, ahora, con éxito desigual. Al ejecutar un AppleScript secuencia de comandos (.scpt) archivo adjunto a la carpeta que yo soy capaz de obtener el nombre de archivo se muestra y se pasa a un archivo de proceso por lotes. El problema ahora es que no parecen funcionar con la Automator equivalente.

Código de abajo:

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 ReplaceName por lotes 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í:

enter image description here

Toda la ayuda es muy apreciada!

1voto

user3439894 Puntos 5883

Nota: Esta respuesta fue escrito basado en el original de la publicación de la pregunta y, en particular, los tres primeros párrafos de esta respuesta, sans esta nota. Desde entonces, la OP ha sido actualizado a la dirección de lo que se expresó en los tres primeros párrafos y que ahora puede parecer fuera de contexto. Sin embargo, mirando el historial de edición de la OP, uno puede ver la relevancia en el contexto de la pregunta original. Ellos permanecerán por ahora hasta tengo el tiempo para hacer una edición correspondiente.


Lo siento, pero tu pregunta no está bien definido y no es totalmente claro qué acciones se agrega a la Automator Carpeta Acción de flujo de trabajo, sin la obvia Ejecutar AppleScript acción. Tampoco está claro si hay alguna de las acciones añadido antes o después de Ejecutar AppleScript acción. Además, no está claro cuál es el código se encuentra en /Users/jeffolaa/pointer.sh o la totalidad de lo que está haciendo. Lo que me lleva a creer que, simplemente pasando el name del archivo a pointer.sh puede no ser suficiente. Aunque sin ver el código en pointer.sh, en este punto sólo usted conozca.

También, la forma de la AppleScript código que has mostrado en la cooperativa no es la correcta forma de un Automator Carpeta Acción de flujo de trabajo utilizando un Ejecutar AppleScript acción. El on adding folder items controlador es del tipo utilizado en un AppleScript secuencia de comandos (.scpt) archivo que se ha asignado manualmente a la carpeta de destino el uso de la Carpeta de la Acción de Instalación... de comando de los Servicios de menú de contexto en el Buscador, no Automator, donde es necesario utilizar el on input de controlador en el Ejecutar AppleScript acción.

Usted también no tiene ningún código de control de errores, lo cual es importante en las Acciones de Carpeta y el tipo y la cantidad puede depender de lo que ha codificado en la pointer.sh. En otras palabras, es posible que desee filtrar los elementos agregados a la carpeta por tipo, asegurándose de que es un archivo no es una carpeta, o un tipo particular de archivo con una extensión determinada, etc. Esto se puede hacer en Automator antes de que llegue al Ejecutar AppleScript acción, o en el código de Ejecutar AppleScript acción, o en el código en pointer.sh, o una combinación de cualquiera de ellos o todos.


Con eso dicho, el siguiente ejemplo de AppleScript código es de un mínimo de codificación de lo que tiene sentido para ser capaz de pasar el citado nombre completo de la ruta de el archivo(s) que se agrega a la carpeta de destino se establece en Automator la Carpeta de la Acción recibe el archivo y carpetas añadido a [carpeta] para pasar a pointer.sh, ya que es típico de un argumento se pasa a un comando de la shell.

Mínimo ejemplo de AppleScript código para su uso en Ejecutar AppleScript acción en un Automator Carpeta Acción de flujo de trabajo:

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

Mínimo ejemplo de AppleScript código para su uso en un AppleScript secuencia de comandos (.scpt) archivo asignado manualmente a la carpeta de destino el uso de la Carpeta de la Acción de Instalación... de comando de los Servicios de menú de contexto en el Buscador:

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
  • Nota: Para utilizar un AppleScript secuencia de comandos (.scpt) archivo usando la Carpeta de la Acción de Instalación... de comando de los Servicios de menú de contexto en el Buscador, lo primero que debe agregarse a la ~/Library/Scripts/Folder Action Scripts carpeta que está dentro de su Casa de la carpeta.

Para probar el anterior código, he creado el /Users/jeffolaa/pointer.sh archivo con el siguiente código en ella:

#!/bin/bash

mv "$1" "$HOME/Test/"

Que simplemente mueve los archivos a la carpeta desde la que se han arrastrado desde la carpeta de destino de la Carpeta de la Acción se le asigna, que es una carpeta dentro de la Prueba de la carpeta. Esto me permite saber que estaba funcionando correctamente codificados.



Ahora si es sólo la name de el archivo que desea transferir a pointer.sh, puede utilizar el siguiente:

Mínimo ejemplo de AppleScript código para su uso en Ejecutar AppleScript acción en un Automator Carpeta Acción de flujo de trabajo:

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

Mínimo ejemplo de AppleScript código para su uso en un AppleScript secuencia de comandos (.scpt) archivo asignado manualmente a la carpeta de destino el uso de la Carpeta de la Acción de Instalación... de comando de los Servicios de menú de contexto en el Buscador:

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
  • Nota: Para utilizar un AppleScript secuencia de comandos (.scpt) archivo usando la Carpeta de la Acción de Instalación... de comando de los Servicios de menú de contexto en el Buscador, lo primero que debe agregarse a la ~/Library/Scripts/Folder Action Scripts carpeta que está dentro de su Casa de la carpeta.

Para probar el anterior código, he editado el pointer.sh archivo con el siguiente código:

#!/bin/bash

say "$1"

Que simplemente dice que el name del archivo que se celebró en thisItemsFileName, el cual me dejó saber que estaba funcionando correctamente codificados.



Nota: El ejemplo de AppleScript en el código de arriba es solo que, y sin envolver en un try declaración, no incluye cualquier otro error de manipulación como puede ser apropiado/necesitaba/quería, la responsabilidad recae sobre el usuario para agregar cualquier error de manipulación para cualquier código de ejemplo presentado y / o el código escrito por el mismo.

Dicho esto, si usted desea actualizar su pregunta a llenar la falta de piezas como se ha mencionado en los primeros párrafos de mi respuesta, estaré encantado de editar estos ejemplos de código para reflejar lo adecuado manejo de errores debe ser añadido. No hay ningún sentido en la adición de hasta yo sé los detalles.

0voto

jeffolaa Puntos 6

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 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 construye sobre el código que sería muy apreciado, ¡siempre buscando mejorar!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X