Sé muy poco acerca de bash scripts o comandos de Terminal, todo esto es muy nuevo para mí así que por favor tengan paciencia conmigo.
Guión Original
Me gustaría utilizar una secuencia de comandos que se encuentran en littlefield.info como automator servicio. Este es el script original:
for file in *.flv *.mov *.mp4
do mediainfo "--Inform=Video;%Duration%" $file
done | awk '{total+=$0}END{total=total/1000}END{print strftime("%H:%M:%S",total,1)}'
Se explica por el creador:
- Ciclo a través de cada archivo de vídeo en una carpeta,
- Pasando a la mediainfo programa para extraer la duración en milisegundos,
- Pasar el resultado a la awk programa para sumar todos los números que nos dan un total,
- Que pasa que a awk de nuevo a dividir ese número por 1000 para dar el número de segundos,
- Que pasa que a la función strftime para mostrar el resultado en Horas:Minutos:Segundos.
Modificado el script
He instalado el mediainfo CLI y comenzó a experimentar. Al parecer, strftime
no está disponible en mac, por lo que tuve que buscar otra forma en cómo convertir los segundos en una salida legible. Me armó la siguiente secuencia de comandos (probablemente terriblemente ineficiente, pero bueno.. funciona):
# the cd is needed for automator
cd "$1"
i=$(for file in *.flv *.mov *.mp4
do mediainfo "--Inform=Video;%Duration%" $file
done | awk '{total+=$0}END{print total}')
((i/=1000, sec=i%60, i/=60, min=i%60, hrs=i/60))
timestamp=$(printf "%dh%02dm%02ds" $hrs $min $sec)
echo -e "Total duration of video files in this folder:\n\n$timestamp" > _total_duration.txt
Funciona perfectamente bien en la Terminal. Pero se ejecuta como un servicio del Buscador da el siguiente resultado:
La duración Total de los archivos de vídeo en esta carpeta:
0h00m00s
awk variable problema
La duración no debe ser 0. Empecé solución de problemas, y la reducción de la secuencia de comandos lo siguiente:
for file in *.flv *.mov *.mp4
do mediainfo "--Inform=Video;%Duration%" $file
done | awk '{total+=$0}END{print total}' > "test_file_awk.txt"
No parece ser un problema con la variable total
en AWK. No salida de la nada cuando se ejecuta desde el Finder, pero funciona correctamente desde la Terminal.
¿Ustedes tienen alguna idea de lo que estoy haciendo mal?