Sé muy poco acerca de las secuencias de comandos de bash o los comandos de Terminal, todo esto es muy nuevo para mí, por favor, tenga paciencia conmigo.
Script original
Me gustaría usar un script que encontré en littlefield.info como un servicio de automatización. 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)}'
Explicado por el creador:
- Recorra cada archivo de video en una carpeta,
- Pasándolo al programa mediainfo para extraer la duración en milisegundos,
- Pasando ese resultado al programa awk para sumar todos los números para obtener un total,
- Pasando eso a awk nuevamente para dividir ese número por 1000 para dar el número de segundos,
- Pasando eso a la función strftime para mostrar el resultado en formato de Horas: Minutos: Segundos.
Script modificado
Instalé mediainfo y comencé a experimentar. Al parecer, strftime
no está disponible en mac, por lo que tuve que buscar otra forma de convertir los segundos en resultados legibles. Confeccioné el siguiente script (probablemente horriblemente 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 ejecutarlo como un servicio desde Finder da el siguiente resultado:
Duración total de los archivos de video en esta carpeta:
0h00m00s
problema de la variable awk
La duración no debería ser 0. Comencé a solucionar problemas y reduje la secuencia de comandos a 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"
Parece que hay un problema con la variable total
en AWK. No genera nada cuando se ejecuta desde el Finder, pero funciona correctamente desde la Terminal.
¿Tienen alguna idea de lo que estoy haciendo mal?