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 undo 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 oexport PATH; other_commands
dondePATH
enexport 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.