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…