#!/bin/bash

# ce script extrait toutes les pistes d'un CD audio au format MP3.
# auteur : Matthieu Petiot
# url : http://giminik.developpez.com/articles/debian-gnu-linux/gravure-audio-ligne-commande/

# périphérique représentant le lecteur CD
# convient la plupart du temps
CD_DEV=/dev/cdrom;

# résultat de la dernière commande cdparanoia
# initialisée à zéro pour pouvoir entrer dans le while
RESULT=0;

# numéro de la piste à encoder une fois dans le while
TRACK_NUM=1;

# longueur du numéro de piste : ici 3 chiffres : 001, 002...
# 4 chiffres : 0001, 0002
NUMBER_LENGHT=3;

# tant que l'on n'a pas trouvé la dernière piste, on continue.
while [ $RESULT -eq 0 ]; do

    NUMBER=`printf "%.${NUMBER_LENGHT}d" $TRACK_NUM`;

    # appel de la commande d'extraction
    cdparanoia --force-cdrom-device $CD_DEV --output-wav "$TRACK_NUM" "track$NUMBER.wav";

    # récupération du résultat de la dernière commande
    RESULT=$?;
    
    # on suppose que le CD n'est pas rayé et que le disque dur n'est pas plein.
    # s'il y a erreur, c'est que le numéro de piste n'existe pas.
    if [ $RESULT -eq 0 ]; then
    
        # conversion du WAVE en MP3
        lame --verbose -h -b 320 "track$NUMBER.wav" "track$NUMBER.mp3";
    
    fi

    # effacement du fichier WAVE temporaire
    rm -f "track$NUMBER.wav";
    
    # incrémentation du numéro de piste
    TRACK_NUM=$(($TRACK_NUM + 1));

done

