¿Cómo puedo hacer que un servicio de Automator ejecute un script de shell y muestre la salida?

6

Estoy usando Automator para ejecutar un script de shell (ffmpeg transcode to h264) como 'Servicio', para que pueda hacer clic derecho en el archivo .mov de alta resolución y seleccionar el servicio. Funciona bien, pero como es ffmpeg, sería bueno ver la salida en una ventana de Terminal. ¿Hay alguna manera de ver la salida en tiempo real?

No debería marcar la diferencia, pero aquí está el script por si acaso:

for f in "$@"
do
/usr/local/bin/ffmpeg -i "$f" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done
usuario1148106
fuente

Respuestas:

5

Este AppleScript abrirá una ventana de Terminal con el comando que especificó:

en ejecución {entrada, parámetros}
    decirle a la aplicación "Terminal"
        activar
        establecer filesString en ""
        repetir con file_ en entrada
            set filesString a filesString & "" y forma citada de (ruta POSIX del archivo_)
        final repetir
        hacer script "para f en" & filesString & "; do
/ usr / local / bin / ffmpeg -i \ "$ f \" -c: v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset lento -movflags faststart -c: una copia $ {f%. *} _ h264_yadif. mov
hecho"
    final decir
    entrada de retorno
fin de carrera

Cree una acción "Ejecutar AppleScript" en Automator y péguela allí.

0942v8653
fuente
Funciona como un encanto, muchas gracias. Sabía que probablemente implicaría un AppleScript, pero no estaba seguro del vudú para llevar la ruta del archivo al script de shell.
user1148106
5

Una solución agradable y limpia es mostrar el mensaje a través del Centro de notificaciones. Simplemente ejecute el siguiente comando de terminal en su script.

osascript -e 'display notification "All files converted" with title "ffmpeg converter"'

El comando 'osascript' ejecuta cualquier AppleScript desde la terminal, 'notificación de visualización' muestra una buena notificación.

ingrese la descripción de la imagen aquí


También puede usar 'mostrar alerta'. No tiene limitación en la longitud del mensaje y es fácil agregarle un OKbotón.

osascript -e 'set alertResult to display alert "Bad news :( Error converting your video file." buttons {"OK"} as warning'

ingrese la descripción de la imagen aquí

Aquí está la referencia de comandos de Apple Script. Busque 'mostrar notificación' y 'mostrar alerta' para obtener más información.

Arseny Kogan
fuente
Gracias, eso es útil para cosas generales, pero realmente me gustaría ver la salida completa de ffmpeg. También tengo un servicio similar que sincroniza un directorio con mi copia de seguridad S3 a través de s3cmd. En ambos casos, la salida completa es una especie de esencial para el manejo de errores adecuadamente ...
user1148106
1

Aquí hay una solución simple que puse a trabajar, que muestra el resultado del comando una vez que está terminado:

  1. Pase el resultado de una acción Ejecutar script de shell a Establecer valor de variable
  2. Use esa variable para, por ejemplo, mostrar una notificación.

Por ejemplo, con el test.pyscript Python, todo lo que estoy haciendo es imprimir los argumentos pasados ​​("Ejecutar un script con ..."), así que cuando lo ejecuto, después de terminar, muestra:

slhck
fuente