1 votes

Obtenir des noms de fichiers individuels dans Automator

L'idée d'un petit projet sur lequel je travaille est de pouvoir télécharger un fichier de musique et qu'After Effects le récupère et le rende dans un modèle de fichier vidéo que j'ai.

Le flux de travail serait :

Une fois que j'ai téléchargé un nouveau fichier musical dans un dossier de mon iCloud Drive qui serait surveillé par mon iMac. Chaque nouveau fichier musical déclenche un script d'Adobe qui importe la nouvelle piste dans un projet Adobe After Effects qui l'exporte vers AME, puis quitte. La musique est ensuite déplacée dans un autre répertoire.

J'ai rencontré un problème avec le passage d'un nom de fichier à un script d'Adobe, donc pour contourner cela, j'ai créé un modèle d'Adobe script avec un nom de fichier fictif (le chemin du fichier serait toujours le même) qui peut être dupliqué, avoir le nom de fichier fictif remplacé (via un script de lot, bien qu'il pourrait y avoir un moyen plus simple de le faire, je le soupçonne), exécuté et ensuite supprimé.

Dans un premier temps, j'ai essayé de me concentrer sur le transfert du nom des nouveaux fichiers dans le dossier, avec un succès mitigé. Lors de l'exécution d'un AppleScript script (.scpt) attaché au dossier, je suis en mesure d'afficher le nom du fichier et de le transmettre à un fichier batch. Le problème est que cela ne semble pas fonctionner avec l'équivalent d'Automator.

Code ci-dessous :

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

Le lot ReplaceName est une commande unique :

#!/bin/bash
sed -i.bu 's/EDITTHIS/'$1'/' /Users/jeffolaa/Library/Mobile\ Documents/com\~apple\~CloudDocs/Documents/Adobe\ Scripts/AddMusicExport.jsx 

Jusqu'à présent, mon flux de travail Automator ressemble à ceci :

enter image description here

Toute aide est très appréciée !

1voto

user3439894 Points 52496

Note : Cette réponse a été rédigée sur la base du message original de la question et en particulier des trois premiers paragraphes de cette réponse, sans cette note. Depuis lors, le PO a été mis à jour pour répondre à ce qui a été exprimé dans les trois premiers paragraphes et ils peuvent maintenant sembler hors contexte. Cependant, en regardant l'historique des modifications de l'OP, on peut voir la pertinence dans le contexte de la question originale. Ils resteront en place jusqu'à ce que j'aie le temps d'effectuer une modification appropriée.


Désolé, mais votre question n'est pas si bien définie et ce n'est pas totalement clair ce que actions que vous avez ajouté à la Action sur les dossiers dans Automator flux de travail sans l'évidence Exécuter AppleScript action . On ne sait pas non plus s'il existe des actions ajouté avant ou après le Exécuter AppleScript action . En outre, il n'est pas clair quel code est dans /Users/jeffolaa/pointer.sh ou tout ce qu'il fait. Ce qui me pousse à croire que le fait de passer le name de la fichier à pointer.sh peut ne pas être suffisant. Bien que sans voir le code sur pointer.sh à ce stade, vous êtes le seul à le savoir.

En outre, le formulaire de la AppleScript code que vous avez montré dans l'OP n'est pas la bonne. formulaire pour un Action sur les dossiers dans Automator flux de travail en utilisant un Exécuter AppleScript action . Le site on adding folder items manipulateur est de la type utilisé dans un AppleScript script (.scpt) qui est assigné manuellement à l'équipe de la dossier de destination en utilisant le Configuration de l'action du dossier... commande de la Services menu contextuel sur Finder pas Automator où vous devez utiliser l'option on input manipulateur dans le Exécuter AppleScript action .

Vous n'avez pas non plus code de gestion des erreurs qui est important dans Actions des dossiers et le type et la quantité peuvent dépendre de ce que vous avez codé dans le système de gestion de l'information. pointer.sh . En d'autres termes, vous pourriez vouloir filtrer les éléments ajoutés au dossier par type, en vous assurant qu'il s'agit d'un fichier et non d'un dossier, ou d'un type de fichier particulier avec une extension donnée, etc. Cela peut être fait dans Automator avant qu'il n'atteigne le Exécuter AppleScript action ou dans le code de la Exécuter AppleScript action ou dans le code sur pointer.sh ou une combinaison de l'un ou de tous ces éléments.


Cela dit, les points suivants exemple AppleScript code est un codage minimal de ce qui a du sens pour pouvoir faire passer le nom de chemin entièrement qualifié cité du ou des fichiers ajoutés à la dossier de destination que vous mettez en L'action Dossier d'Automator reçoit les fichiers et les dossiers ajoutés à [ ]. dossier ] à passer à pointer.sh car c'est typique d'un argument transmis à un commande shell .

Minimal exemple AppleScript code pour une utilisation dans un Exécuter AppleScript action dans un Action sur les dossiers dans Automator flux de travail :

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

Minimal exemple AppleScript code pour une utilisation dans un AppleScript script (.scpt) attribué manuellement à l'équipe de la dossier de destination en utilisant le Configuration de l'action du dossier... commande de la Services menu contextuel sur 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
  • Remarque : Pour utiliser un AppleScript script (.scpt) en utilisant le Configuration de l'action du dossier... commande de la Services menu contextuel sur Finder il faut d'abord l'ajouter à la ~/Library/Scripts/Folder Action Scripts qui se trouve dans votre Accueil dossier.

Pour tester ce qui précède code j'ai créé le /Users/jeffolaa/pointer.sh avec le fichier suivant code en elle :

#!/bin/bash

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

Ce qui a pour effet de replacer les fichiers dans le dossier à partir duquel ils ont été glissés vers le dossier de l'utilisateur. dossier de destination le site Action des dossiers est affecté, qui est un dossier au sein de l'arborescence de l'entreprise. Test dossier. Cela m'a permis de savoir qu'il fonctionnait correctement comme codé.


Maintenant, si c'est juste le name de la fichier que vous voulez transmettre à pointer.sh vous pouvez utiliser ce qui suit :

Minimal exemple AppleScript code pour une utilisation dans un Exécuter AppleScript action dans un Action sur les dossiers dans Automator flux de travail :

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

Minimal exemple AppleScript code pour une utilisation dans un AppleScript script (.scpt) attribué manuellement à l'équipe de la dossier de destination en utilisant le Configuration de l'action du dossier... commande de la Services menu contextuel sur 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
  • Remarque : Pour utiliser un AppleScript script (.scpt) en utilisant le Configuration de l'action du dossier... commande de la Services menu contextuel sur Finder il faut d'abord l'ajouter à la ~/Library/Scripts/Folder Action Scripts qui se trouve dans votre Accueil dossier.

Pour tester ce qui précède code j'ai édité le pointer.sh avec le code suivant :

#!/bin/bash

say "$1"

Qui dit simplement que name du dossier détenu dans thisItemsFileName ce qui m'a permis de savoir qu'il fonctionnait correctement comme codé.


Note : Le site exemple AppleScript code ci-dessus n'est que cela, et sans l'envelopper dans une balise try déclaration ne comprend pas d'autres traitement des erreurs comme cela peut être approprié/nécessaire/souhaité, il incombe à l'utilisateur d'ajouter toute information appropriée à l'information. traitement des erreurs pour tout exemple de code présenté et ou code écrit par soi-même.

Cela dit, si vous voulez bien mettre à jour votre question pour y ajouter les éléments manquants mentionnés dans les premiers paragraphes de ma réponse, je serai heureux de les modifier. exemples de code pour refléter ce qui est approprié gestion des erreurs doit être ajouté. Ça n'a aucun sens de l'ajouter tant que je ne connais pas les détails.

0voto

jeffolaa Points 11

J'ai réussi à résoudre mon blocage grâce aux suggestions étonnantes de @user34393894.

Au lieu d'utiliser Automator, j'ai pu obtenir le résultat dont j'avais besoin grâce à un AppleScript script joint en tant qu'action de dossier.

Pour ceux qui sont intéressés, le code que j'utilise maintenant et qui donne d'excellents résultats est le suivant :

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 quelqu'un a des commentaires ou construit sur le code, ce serait grandement apprécié, toujours à la recherche d'amélioration !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X