Utiliser `awk` pour générer une série de commandes

Posted on dim. 29 mars 2020 in Software

Récemment, j’ai téléchargé une compilation musicale au format vidéo et ai voulu avoir chaque chanson dans un fichier individuel, avec les metadata correctes, et avec l’audio uniquement. Comme données, outre le fichier vidéo, j’avais une liste des chansons avec les points de départ et d’arrivée (sous forme de temps comme 00:12:43), le nom de l’artiste, le titre de la chanson ; le tout sous forme d’un fichier CSV.

Pour extraire toutes les chansons en batch, j’ai pu m’aider de GNU awk pour générer un fichier sh appelant séquentiellement une commande ffmpeg par chanson.

Le fichier de données se présentait sous la forme : Start_time,End_time,Artist,Title

Commande awk

awk 'BEGIN{FS=","}{printf "ffmpeg -i monfichier.avi -nv -ss %s -to %s -metadata title=\"%s\" -metadata artist=\"%s\" \"%s - %s - %s\.mp3\"\n", $1, $2, $4, $3, NR, $3, $4}' > commandes_conversion.sh

Conversion

Pour exploser le fichier, il n’y à plus qu’à exécuter bash commandes_conversion.sh. Et à patienter…