2 votos

youtube-dl en archivo de acción de automator; video y audio no muxed

He creado un AppleScript para que se ejecute como un servicio para Safari. Pero me estoy encontrando con un problema en el que el audio y el vídeo no están siendo muxed. Esto no sucede cuando se introduce el mismo comando en la terminal.

Tengo un archivo de configuración para youtube-dl:

-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]'
-o '/Volumes/Godzilla/Video/YouTube Video/%(title)s-%(id)s.%(ext)s'

Este es el automator script que utiliza la URL actual de Safari como entrada:

on run {input, parameters}
    try
        do shell script "/usr/local/bin/youtube-dl " & input
        (display notification input with title "YouTube Video Downloaded") beep
        delay 1 --> avoid quit before notice
    on error
        display notification "YouTube Download Failed" -- show error message
    end try
end run

EDIT: OK, he solicitado el archivo de audio en la configuración de la pregunta es ¿por qué los archivos no se fusionan después de AppleScript ejecuta youtube-dl?

He cambiado mi AppleScript a esto que proporcionó algunos detalles a la cuestión:

on run {input, parameters}
try
    tell application "System Events"
        set pid to do shell script "cd /tmp/; /usr/local/bin/youtube-dl  --newline " & input & " > /tmp/vidstatus 2>&1 & echo $!"
        delay 1
        repeat while ((do shell script "kill -0 " & pid) is "") -- check if pid is still responding
            display dialog "Status: " & (do shell script "tail -n 1 /tmp/vidstatus") -- display last line of output
        end repeat
    end tell
on error
    display notification "YouTube Download Failed" -- show error message
end try end run

Este es el mensaje que recibo de Status:

Estado: [youtube] IrxpSFtGX1k: Descargando página web [youtube] IrxpSFtGX1k: Downloading video info webpage ADVERTENCIA: Ha solicitado varios formatos pero ffmpeg o avconv no están instalados. Los formatos no se fusionarán.

Esto es extraño porque obviamente están instalados. La misma petición funciona desde terminal. Estoy probando este script desde Automator, ¿podría ser este el problema?

0 votos

En PATH pasado a un do shell script comando en un Ejecutar Shell script acción es /usr/bin:/bin:/usr/sbin:/sbin y si algo más que está ejecutando requiere algo fuera de eso ruta tendrás que tenerlo en cuenta. Utilice nombres de ruta completos y o export PATH; other_commands donde PATH en export PATH; ... es el ruta que quieres que se apruebe.

0 votos

Realmente mejoraría esto mostrar una barra de progreso en lugar de un enunciado repetido y también una notificación con una opción para "abrir" el archivo descargado.

2voto

John Puntos 16

Investigué un poco más y descubrí que necesitaba añadir la ubicación del binario ffmpeg en la llamada "do shell script" añadiendo: --ffmpeg-location /usr/local/bin/ffmpeg

on run {input, parameters}
    try
        tell application "System Events"
            set pid to do shell script "cd /tmp/; /usr/local/bin/youtube-dl  --newline --ffmpeg-location /usr/local/bin/ffmpeg " & input & " > /tmp/vidstatus 2>&1 & echo $!"
            delay 1
            repeat while ((do shell script "kill -0 " & pid) is "") -- check if pid is still responding
                display dialog "Status: " & (do shell script "tail -n 1 /tmp/vidstatus") -- display last line of output
                delay 5
            end repeat
        end tell
    on error
        display notification "YouTube Download Finished" -- show error message
    end try
end run

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