2 votes

Ajouter des variables à une commande shell dans Automator

J'utilise Terminal pour exécuter une commande. Elle fonctionne bien à partir de la ligne de commande, mais je veux pouvoir l'automatiser avec Automator. La syntaxe de la commande (bien sûr, sans les guillemets) est la suivante :

 spotify-ripper user.name "/path/to/directory" "spotifyURI" 

J'ai essayé un nombre incalculable de fois de faire fonctionner Automator :

  1. Demander les éléments du finder (pour créer le "chemin/vers/répertoire")
  2. Demande de texte (me demandant de saisir le lien URI/URL de Spotify)
  3. Exécuter le shell script (/bin/bash)

    spotify-ripper user.name "$@"

J'ai essayé avec "Pass input" vers "stdin" ou "as arguments". Je n'obtiens qu'une erreur. J'ai lu que "$@" passait les deux variables l'une après l'autre, ce qui est exactement ce dont j'ai besoin. J'ai également essayé "$1" "$2" comme certains messages l'ont suggéré. Qu'est-ce qui me manque ? Je veux simplement transmettre des informations sur le chemin et une URL à la fin d'une commande shell, mais rien ne semble fonctionner. J'ai essayé les options GET et SET Variable, mais cela ne semble pas non plus fonctionner.

Quelqu'un a une idée de ce que je devrais faire ?

1voto

Saurabh Hirani Points 383

Il existe plusieurs façons de résoudre ce problème. L'une d'entre elles est déjà décrite dans la question Variable Automator dans le shell script (assurez-vous d'activer les options précisément comme suit) :

  1. Demander des éléments du Finder (Type : Dossiers)
  2. Définir la valeur de la variable (Variable [exemple] : Directory-Path)
  3. Demander un texte (coché : ignorer l'entrée de cette action ; coché : exiger une réponse)
  4. Définir la valeur de la variable (Variable [exemple] : Spotify-Url)
  5. Obtenir la valeur d'une variable (Variable : Directory-Path ; Vérifié : Ignorer l'entrée de cette action)
  6. Obtenir la valeur d'une variable (Variable : Spotify-Url)
  7. Exécuter le Shell script (Passer l'entrée : comme arguments ; Contenu : export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name "$1" "$2" -changer la partie "/path/to" avec le vrai chemin d'accès à spotify-ripper, bien sûr : probablement /usr/local/bin/spotify-ripper)

Une autre solution consiste à utiliser AppleScript, soit dans une action "Exécuter AppleScript" dans Automator, soit sous la forme d'une application AppleScript enregistrée dans AppleScript Editor. Voici un exemple en AppleScript :

on run
    try
        set spotifyDialog to display dialog "Enter a Spotify URL:" buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel" default answer "https://" with title "Spotify Ripper"
        if the button returned of spotifyDialog is "OK" then
            set spotifyURL to text returned of spotifyDialog
            choose folder with prompt "Choose a folder:"
            set theDirectory to the result
            do shell script "export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name " & quoted form of POSIX path of theDirectory & space & spotifyURL
        end if
    end try
end run

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