Je ne connais que très peu de choses sur les scripts bash ou les commandes de terminal, tout ceci est très nouveau pour moi, alors soyez indulgent avec moi.
Original script
Je voudrais utiliser un script que j'ai trouvé sur littlefield.info comme un service d'automatisation. C'est le 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)}'
Expliqué par le créateur :
- Passez en revue tous les fichiers vidéo d'un dossier,
- En le passant au programme mediainfo, on obtient la durée en millisecondes,
- Nous passons ce résultat au programme awk pour additionner tous les chiffres et obtenir un total,
- En passant à nouveau à awk pour diviser ce nombre par 1000 et obtenir le nombre de secondes,
- En passant cela à la fonction strftime pour afficher le résultat au format Heures:Minutes:Secondes.
Modifié script
J'ai installé le mediainfo CLI et a commencé à expérimenter. Apparemment, strftime
n'est pas disponible sur mac, donc j'ai dû chercher un autre moyen sur la façon de convertir les secondes en sortie lisible. J'ai bricolé le script suivant (probablement horriblement inefficace, mais hé ça marche) :
# 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
Il fonctionne parfaitement bien dans le Terminal. Mais l'exécuter en tant que service depuis le Finder donne le résultat suivant :
Durée totale des fichiers vidéo dans ce dossier :
0h00m00s
problème de variable awk
La durée ne devrait pas être 0. J'ai commencé à dépanner, et j'ai réduit le script à ce qui suit :
for file in *.flv *.mov *.mp4
do mediainfo "--Inform=Video;%Duration%" $file
done | awk '{total+=$0}END{print total}' > "test_file_awk.txt"
Il semble y avoir un problème avec la variable total
en AWK. Il ne produit rien lorsqu'il est exécuté à partir du Finder mais fonctionne correctement à partir du Terminal.
Vous avez une idée de ce que je fais de mal ?