2 votos

Añadir variables a un comando shell en Automator

Utilizo el Terminal para ejecutar un comando. Se ejecuta bien desde la línea de comandos, pero quiero poder automatizarlo con Automator. La sintaxis del comando (por supuesto, sin las comillas) es la siguiente:

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

He intentado innumerables veces que Automator lo haga:

  1. Pedir elementos del buscador (para crear la "ruta/al/directorio")
  2. Pedir texto (me pide que pegue el enlace URI/URL de spotify)
  3. Ejecutar Shell script (/bin/bash)

    spotify-ripper user.name "$@"

Lo he intentado con "Pass input" a "stdin" o "as arguments". Sólo obtiene un error. He leído que "$@" pasará las dos variables una tras otra que es justo lo que necesito. También he probado con "$1" "$2" como han sugerido algunos posts. ¿Qué me falta? Sólo quiero pasar información de la ruta y una URL al final de un comando de shell, pero nada parece funcionar. He probado las opciones GET y SET Variable, pero eso tampoco parece ayudar.

¿Alguien tiene alguna idea de lo que debería hacer?

1voto

Saurabh Hirani Puntos 383

Hay múltiples formas de resolver este problema. Una de ellas ya se describe en la pregunta Variable de Automator en el shell script (asegúrese de activar las opciones precisamente de la siguiente manera):

  1. Pedir elementos del Finder (Tipo: Carpetas)
  2. Establecer el valor de la variable (Variable [ejemplo]: Directorio-Ruta)
  3. Preguntar por el texto (Marcado: Ignorar la entrada de esta acción; Marcado: Requerir una respuesta)
  4. Establecer el valor de la variable (Variable [ejemplo]: Spotify-Url)
  5. Obtener el valor de la variable (Variable: Directorio-Ruta; Comprobado: Ignorar la entrada de esta acción)
  6. Obtener el valor de la variable (Variable: Spotify-Url)
  7. Ejecutar Shell script (Pasar entrada: como argumentos; Contenido: export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name "$1" "$2" -cambiar la parte "/ruta/para" por la ruta real de spotify-ripper, por supuesto: probablemente /usr/local/bin/spotify-ripper)

Otra forma es utilizar AppleScript, ya sea en una acción "Ejecutar AppleScript" en Automator o como una aplicación AppleScript guardada en el Editor AppleScript. Aquí hay un ejemplo 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

0 votos

Eso es increíble - pero ahora no puedo averiguar cuál es la ruta de acceso a la aplicación. Se instaló a través de Homebrew, así que no estoy seguro de dónde se instaló.

0 votos

@MarkMonahan En la terminal, which spotify-ripper le indicará la ruta de acceso a spotify-ripper si está en su PATH . Si por alguna extraña razón no está en tu PATH pero sabes que está en /usr, find /usr -name "spotify-ripper" 2>/dev/null debería indicarle también la ruta. Si mi respuesta anterior te ha funcionado, no olvides marcar la respuesta como aceptada.

0 votos

Gracias por todas las aportaciones al respecto. Para complicar las cosas, sigue reportando un error con el shell script. Cuando lo ejecuto a través del método Apple script de arriba dice que falta una dependencia necesaria (Lame) y me dice que la instale y la añada al PATH. Lame ya está instalado y funciona bien cuando spotify-ripper se ejecuta desde la línea de comandos normal. ¿Alguna idea de por qué no puede ver las dependencias cuando se ejecuta a través de Apple script?

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