#!/bin/sh

echo "`basename $0` (c)2006-2008 Paul T.Threshold"
echo "  . add an integer to the cmd line to force a bitrate (96/128/160(dft)/192)"
echo ""

PTT_PARM=$1
IFS=$'\n\t'
PTT_TAGFILE=/tmp/_PTT_TEMP_TAG_FILE_$$
for i in `ls -1 *.mp3` ; do
	echo "Processing \"$i\"..."
	echo "  Extracting tags..."
	id3v2 -l "$i" > $PTT_TAGFILE
	PTTID3TAGS=`grep "id3v2 tag" $PTT_TAGFILE`
	if [ "x$PTTID3TAGS" = "x" ]; then
		echo -n "  File doesn't contain id3v2 tags,"
		PTTID3TAGS=`grep "id3v1 tag" $PTT_TAGFILE`
		if [ "x$PTTID3TAGS" != "x" ]; then
			echo -n " converting from v1..."
			id3v2 -C "$i" > /dev/null
			id3v2 -l "$i" > $PTT_TAGFILE
			echo " done. Let's go!"
		else
			echo " nor id3v1 ones. Bailing out."
			exit 1
		fi
	fi
	PTTTRCKALBUM=`grep "TALB" $PTT_TAGFILE | cut -d":" -f 2`
	if [ "x$PTTTRCKALBUM" = "x" ]; then
		PTTTRCKALBUM=`grep "TAL" $PTT_TAGFILE | cut -d":" -f 2`
	fi
	PTTTRCKALBUM=`echo ${PTTTRCKALBUM# }`
	PTTTRCKALBUM=`echo ${PTTTRCKALBUM% }`
	PTTTRCKAUTH=`grep "TPE1" $PTT_TAGFILE | cut -d":" -f 2`
	if [ "x$PTTTRCKAUTH" = "x" ]; then
		PTTTRCKAUTH=`grep "TP1" $PTT_TAGFILE | cut -d":" -f 2`
	fi
	PTTTRCKAUTH=`echo ${PTTTRCKAUTH% }`
	PTTTRCKAUTH=`echo ${PTTTRCKAUTH# }`
	DYEAR=`grep "TYER" $PTT_TAGFILE | cut -d":" -f 2`
	if [ "x$DYEAR" = "x" ]; then
		DYEAR=`grep "TYE" $PTT_TAGFILE | cut -d":" -f 2`
	fi
	if [ "x$DYEAR" = "x" ]; then
		DYEAR=0
	fi
	DGENRE=`grep "TCON" $PTT_TAGFILE | cut -d":" -f 2 | cut -d"(" -f 2 | cut -d")" -f 1`
	if [ "x$DGENRE" = "x" ]; then
		DGENRE=`grep "TCO" $PTT_TAGFILE | cut -d":" -f 2 | cut -d"(" -f 2 | cut -d")" -f 1`
	fi
	PTTTRCKNMBR=`grep "TRCK" $PTT_TAGFILE | cut -d":" -f 2`
	if [ "x$PTTTRCKNMBR" = "x" ]; then
		PTTTRCKNMBR=`grep "TRK" $PTT_TAGFILE | cut -d":" -f 2`
	fi
	if [ "x$PTTTRCKNMBR" = "x" ]; then
		PTTTRCKNMBR=0
	fi
	PTTTRCKNMBR=`echo ${PTTTRCKNMBR% }`
	PTTTRCKNMBR=`echo ${PTTTRCKNMBR# }`
	PTTTRCKTITLE=`grep "TIT2" $PTT_TAGFILE | cut -d":" -f 2`
	if [ "x$PTTTRCKTITLE" = "x" ]; then
		PTTTRCKTITLE=`grep "TT2" $PTT_TAGFILE | cut -d":" -f 2`
	fi
	PTTTRCKTITLE=`echo ${PTTTRCKTITLE% }`
	PTTTRCKTITLE=`echo ${PTTTRCKTITLE# }`
	echo "    Album: $PTTTRCKALBUM ($PTTTRCKAUTH)"
	echo "    Track: $PTTTRCKNMBR - $PTTTRCKTITLE"
	echo "    Genre: $DGENRE - Year: $DYEAR"
	echo ""

	PTT_BITRATE=160
	case $PTT_PARM in
		32 | 64 | 96 | 128 | 192)
			PTT_BITRATE=$PTT_PARM
		;;
		*);;
	esac
	echo "  Decoding: $i ($PTTTRCKNMBR. $PTTTRCKTITLE)"
	lame --decode "$i" "$i.wav"
	mv -f "$i" "_PTT_DONE_$i"
	echo "  Encoding: $PTTTRCKNMBR. $PTTTRCKTITLE"
	lame -b $PTT_BITRATE --ta "$PTTTRCKAUTH" --tl "$PTTTRCKALBUM" --ty $DYEAR --tg $DGENRE --tn $PTTTRCKNMBR --tt "$PTTTRCKTITLE" --add-id3v2 "$i.wav" "$i";
	id3v2 -T $PTTTRCKNMBR "$i"
	rm -f "$i.wav"
	printf "\a"
done
printf "\a"
sleep 1
printf "\a"
rm -f $PTT_TAGFILE
ls -l *.mp3
echo ""
echo "Do you want to delete original .mp3 files? [y/N]"
read reply
case $reply in
	y* | Y*)
		rm -f _PTT_DONE_*.mp3 
	;;
	*);;
esac

