#!/bin/bash

echo probing...

if cdparanoia -Q 2> cd-rip-out.tmp~
then
    echo "track(s) found:"
    grep -e '^[[:blank:]]*[0-9]*\.' cd-rip-out.tmp~ > cd-rip-toc.tmp~
    cut -b -24  cd-rip-toc.tmp~
    tracks=$( cut -d. -f 1 cd-rip-toc.tmp~ )

    read -p "artist : " artist
    read -p "album  : " album
    read -p "year   : " year
    read -p "grab list: [enter=all] " _track_list

    if [ "$_track_list" == "" ]
    then
        track_list=( $tracks ) # found by probing
    else
        track_list=( $_track_list ) # user-specified tracks
    fi

    # to display progression
    t=0
    t_l=${#track_list[@]}

    # main grab loop
    for track in ${track_list[@]}
    do
        ((t++))
        # sed hack from Vincent "gnuvince" Foley
        beautiful_track=$(echo $track \
        | sed 's/\([0-9]*\)/000\1/g;s/[0-9]*\([0-9]\{3\}\)/\1/g')

        read -p "tracks $beautiful_track ($t/$t_l) title: " this_track_title 
        this_track_name="$artist -- $album - $beautiful_track - $this_track_title"

        if cdparanoia --never-skip=3 $track -w "$this_track_name.wav"
        then
            # grab successful!

            # --best = exhaustive?
            #
            lame --vbr-new \
                -q 0 \
                -b 128 \
                -B 320 \
                --ta "$artist" \
                --tl "$album" \
                --tn "$beautiful_track" \
                --tt "$beautiful_track $this_track_title" \
                --ty "$year" \
                "$this_track_name.wav" \
                "$this_track_name.mp3"
        else
            echo An error occurred while grabbing $track
        fi
    done

    read -p "cleanup wave files? [y/N] " cleanup
    if [ "$cleanup" == "y" ]
    then
        rm -v *wav
    fi
else
    echo error!
fi

