#!/usr/local/bin/ksh # # Rip a cd to mp3s # Stores to Artist/Album/TrackName.mp3 CDDB_INFO=/media/rip/current_cd dagrab -iC > $CDDB_INFO 2> $CDDB_INFO.err LINES=`wc -l < $CDDB_INFO.err` if [ $LINES -ne 0 ]; then grep 'inexact matches' $CDDB_INFO.err if [ $? -ne 0 ]; then echo "***" echo "*** Unable to grab CDDB information" echo "***" exit 1 fi fi CD=`cat $CDDB_INFO | grep '^DISK:' | sed -e 's/^DISK://'` ARTIST=`echo "$CD" | awk -F'/' '{print $1}' | perl -ne 's/^\s+//; s/\s+$//; print'` ALBUM=`echo "$CD" | awk -F'/' '{print $2}' | perl -ne 's/^\s+//; s/\s+$//; print'` cd /media/rip mkdir wav > /dev/null 2>&1 cd wav ALBUM=`echo "$ALBUM" | sed -e 's!/!.!'` ARTIST=`echo "$ARTIST" | sed -e 's!/!.!'` echo "Artist: $ARTIST" echo "Album: $ALBUM" mkdir -p "$ARTIST/$ALBUM" cd "$ARTIST/$ALBUM" pwd cp "$CDDB_INFO" ./cddb ls *.wav > /dev/null if [ $? -ne 0 ]; then cdparanoia -B cdcontrol eject fi for TRACK in `ls *.wav`; do TRACKNAME=`perl -lne '$tr = "'$TRACK'"; $tr =~ s/^track([0-9]+).*$/$1/; split(/\s+/,$_,8); print $_[7] if ($_[1] == $tr);' < $CDDB_INFO` TRACKNAME=`echo "$TRACKNAME" | sed -e 's!/!.!'` echo "Encoding: $ARTIST/$ALBUM/$TRACKNAME.mp3" lame -Sb 160 -h --add-id3v2 --tt "$TRACKNAME" --ta "$ARTIST" --tl "$ALBUM" "$TRACK" "$TRACKNAME.mp3" > /dev/null done rm *.wav