Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ksh88] Galère avec un script

tagger les pistes de 50 cédés

Sujet résolu
    2 octobre 2023 à 11:34:04

    Salut à tous, j'ai acquéri une compilation de 50 cds, que je suis en train de ripper et dont je voudrais automatiser le tag des métadonnées. Les fichiers et dossiers sont nommés suivant le pattern :

    ./CLASSIQUE - Divers - JE N'AIME PAS - CD01/track01.wav

    J'ai un fichier tags.txt dans lequel se trouve la totalité des noms de piste sous la forme suivante (j'ai simplement c/c la description amazon) :

    Disque : 1
    1       Sonnenaufgang - Chicago Symphony Orchestra
    2       O Fortuna - London Symphony Chorus / Boy's Choir of St. Paul's Cathedral, London, The / London Symphony Orchestra
    3       Die Walkure, Wwv 86b: Walkurenritt - Orchester der Tiroler Festspiele
    ...
    Disque : 2
    ...
    11      Barcarolle - Boston Pops Orchestra
    12      William Tell Overture - Boston Pops Orchestra
    ... et ainsi de suite pour 50 disques

    J'ai rédigé ce script assez simple.

    EDIT : Script vraisemblablement fonctionnel ... ffmpeg est en train de tourner, j'ai rippé la moitié des cédés (25CD). ChatGPT m'a un peu aidé, c'était pas trop ça ce matin quand il m'a sorti un script python qui a foutu en l'air mes enregistrements. Le problème que je n'arrivais pas à résoudre avant d'ouvrir ce sujet était dû à des erreurs de syntaxe, vraisemblablement assez stricte en shell en général.

    EDIT2 : Bilan, j'ai dû utiliser eval plutôt que des array (tableaux) pour enregistrer les titres de pistes (et numéros de piste et d'albums). Cette suggestion de chatgpt me paraît un peu étrange, mais ça semble fonctionner. Je mettrai le topic en résolu si je finis par avoir ma collection de 50CDs au format ogg et correctement taggée : )

    EDIT3 : après quelques bourdes corrigées et 50 cédés rippés, je pense que je tiens le bon bout. Le sujet devrait passer en résolu dans une grosse heure, quand le script aura fini de tourner : )

    Code ci-après :

    #!/bin/ksh
    
    # Parse titles/tracknumber files
    discn=0;
    while IFS="|" read -r track title ; do
            if [[ "$(print "$track" | cut -c 1-6)" != "Disque" ]] ; then
                    var_title="disc$(printf "%02d" "$discn")_track$(printf "%02d" "$track")_title";
                    var_filename="disc$(printf "%02d" "$discn")_track$(printf "%02d" "$track")_filename";
                    escaped_title=$(print "$title" | sed 's/"/\\"/g');
                    clean_title=$(print "$title" | tr -d "'" | tr -d '"/:;,.' | tr -s ' ');
                    eval "$var_title=\"$escaped_title\"";
                    eval "$var_filename=\"$clean_title\"";
            else # the line is a new disc
                    discn=$((discn+1));
                    printf "Going for parsing disc %02d titles ...\n" $discn;
            fi
    done < tags.txt
    
    # Convert and tag files
    for album in CLASSIQUE* ; do
            discn=$(print "$album" | cut -c 40-41);
            cd "/home/sylvain/mac/Music/Classique/$album";
            print "\nGoing for tagging disc #$discn ...";
            for file in track* ; do
                    track=$(print "$file" | cut -c 6-7);
                    var_title="disc${discn}_track${track}_title";
                    var_filename="disc${discn}_track${track}_filename";
                    eval title="\$${var_title}";
                    eval filename="\$${var_filename}";
                    ffmpeg -i $file -f ogg \
                            -metadata artist="Divers Classique" \
                            -metadata track="$track" \
                            -metadata title="$(print "$title" | sed 's/"/\\"/g')" \
                            -metadata album="Je n'aime pas le classique - la totale #$discn" \
                            -metadata genre="Classique" \
                    "$track $filename.ogg"; 
            done
            mkdir JNAPC_wav$discn && mv *.wav JNAPC_wav$discn; 
    done
    cd /home/sylvain/mac/Music/Classique && mkdir JNAPC_wav && mv "CLASSIQUE*/JNAPC_wav*" JNAPC_wav 

    -
    Edité par sylvainsab 5 octobre 2023 à 0:45:20

    • Partager sur Facebook
    • Partager sur Twitter

    [ksh88] Galère avec un script

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown