#!/bin/bash
################################################################################
# Fichier : cd2mp3.sh
# Auteur  : Sebastien Beaugrand
# Date    : 11/09/2007
# Url     : http://www.chez.com/beaugrand/
################################################################################
dev="hdc"
bitrate=192
m3u="00.m3u"
cddb="audio.cddb"

# cdda2wav + cddb
size=0
if [ -f $cddb ]; then
  size=`stat -c%s $cddb`
fi
echo -n "cdda2wav + cddb ? (O/n) "
read ret
if [ "$ret" != n ]; then
  cdda2wav -interface cooked_ioctl -D/dev/$dev -x -B -L0 -d99999 -Owav\
  2>&1 | tee diskid.txt
elif [ $size = 0 ]; then
  discid=`cat diskid.txt | grep "CDDB discid" | cut -dx -f2`
  genres="rock misc folk classical country blues\
          jazz newage reggae soundtrack data"
  n=1
  for i in $genres; do
    wget -O cddb.tmp http://www.freedb.org/freedb/$i/$discid 2> /dev/null
    if (($n < 10)); then
      echo -n " "
    fi
    echo "$n : "`grep DTITLE cddb.tmp | cut -d '=' -f 2`
    n=$(($n+1))
  done
  echo -n "? "
  read ret
  n=1
  for i in $genres; do
    if [ $n = $ret ]; then
      wget -O $cddb http://www.freedb.org/freedb/$i/$discid
    fi
    n=$(($n+1))
  done
fi

# encode
title=`grep DTITLE $cddb | sed 's/\ \/\ /=/g'`
artist=`echo $title | cut -d '=' -f 2`
album=`echo $title | cut -d '=' -f 3`
year=`grep DYEAR $cddb | cut -d '=' -f 2`
comment=`grep DISCID $cddb | cut -d '=' -f 2`
echo "artist=$artist"
echo "album=$album"
echo "year=$year"
echo "comment=$comment"
echo -n "continue ? (O/n) "
read ret
if [ "$ret" = n ]; then
  exit 0
fi
echo -n "bitrate ? [$bitrate] "
read ret
if [ -n "$ret" ]; then
  bitrate=$ret
fi
mkdir "$artist - $year - $album"
cd "$artist - $year - $album"
cddb="../$cddb"
last=`ls ../*.wav | tail -n 1 | cut -d '_' -f 2 | sed s/\.wav//g`
last=`echo ${last:0:2} | gawk 'END { print $0+0 }'`
for ((i=0;$i<$last;i++)); do
  title=`grep "TTITLE$i=" $cddb | cut -d '=' -f 2`
  track=$(($i+1))
  mp3=`printf %02d $track`" - $title.mp3"
  if [ -f "$mp3" ]; then
    echo -n "$mp3 existe, ecraser ? (o/N) "
    read ret
    if [ "$ret" != o ]; then
      continue
    fi
  fi
  lame -s 44.1 -m j -q 0 -b $bitrate --cbr\
    --tt "$title"\
    --ta "$artist"\
    --tl "$album"\
    --tc "$comment"\
    --ty $year\
    --tn $track\
    ../audio_`printf %02d $track`.wav "$mp3"
done

# playlist
if [ -f $m3u ]; then
  echo -n "$m3u existe, ecraser ? (o/N) "
  read ret
  if [ "$ret" != o ]; then
    exit 0
  fi
  rm $m3u
fi
echo "#EXTM3U" > $m3u
for ((i=0;$i<$last;i++)); do
  title=`grep "TTITLE$i=" $cddb | cut -d '=' -f 2`
  track=$(($i+1))
  mp3=`printf %02d $track`" - $title.mp3"
  time=`stat -c%s "$mp3"`
  time=$((($time-128)*8/$bitrate/1000))
  echo "#EXTINF:$time,$artist - $title" >> $m3u
  echo "$mp3" >> $m3u
done

# Fin du fichier cd2mp3.sh