#! /bin/sh
# Demo script for processing all audio tracks with a mp3 decoder
# based on a news article by Tom Kludy
# This variant uses named pipes in order to save space.
# There is another variant of this script, which uses temporary
# wav files (see cdda2mp3.new).
#
# usage: cdda2mp3 <name prefix for all mp3 files>
#
# list_audio_tracks is a (symbolic) link to cdda2wav
# and used to generate a list of audio track numbers and start
# sectors, which in turn are used in a loop to spawn cdda2wav
# and the post processor on a track by track basis.

# specify the sampling program and its options
# do not specify the track option here!
CDDA2WAV=${CDDA2WAV:-cdda2wav}
CDDA2WAV_OPTS=${CDDA2WAV_OPTS:-'-H -P0 -q'}

# for normal use, comment out the next line
#DEBUG='-d1'

# the post processor is fed through a pipe to avoid space waste
# specify the post processing program and its options
MP_CODER=${MP_CODER:-lame}
MP_OPTIONS=${MP_OPTIONS:-''}

export MP_CODER
MP_CODER=$(which $MP_CODER 2>/dev/null)
if [ ! -x "$MP_CODER" ] ; then
   echo "Encoder not found. Install one first!"
   exit 1
fi

CDDA_DEVICE=${CDDA_DEVICE:-/dev/cdrw}

FILEPREFIX=${1:-audiotrack}

if [ -e /etc/default/cdda2mp3 ]; then
	. /etc/default/cdda2mp3
fi

if [ -z "$LIST" ] ; then
   echo Looking for available tracks...
   LIST="$($CDDA2WAV -v trackid -t -1 2>&1|grep T:|cut -f1 -d.|cut -f2 -d:)"
   if [ -z "$LIST" ] ; then
      echo "ERROR: No valid audio tracks detected"
      exit 1
   fi
fi

echo Fetching `echo $LIST | wc -w` tracks in $CDDA_DEVICE, encoding with $MP_CODER.
echo Cancel with Ctrl-C, watch out for error messages.

for TRACK in $LIST ; do
   NAME="`printf "%02d" $TRACK`-$FILEPREFIX.mp3"
   echo
   echo "############ Starting with Track Nr. $TRACK -> $NAME ############"
  $CDDA2WAV $CDDA2WAV_OPTS -t$TRACK $DEBUG - | \
  $MP_CODER $MP_OPTIONS - "$NAME"
  # check result code
  RES=$?
  if [ $RES != 0 ] ; then
    echo File $NAME failed \(result $RES\). Aborted. >&2
    break
  fi
done

