#!/bin/sh
#
# re-encode.sh: this script will re-encode audio files to
# ogg formatted files.

DUMPFILE=audiodump.wav
QUALITY=${1:-2}
CONVERT="tee"
CONVERT=" iconv -f gb18030 -t utf8 - "
SOURCE=mp3
TARGET=ogg
DECODER=`which mplayer`
ENCODER=`which oggenc`

# to check if your decoder and encoder really exist.
# if yes then proceed, else quit.

if [ -x "${DECODER}" -a -x "${ENCODER}" ]; then
	for file in *.${SOURCE}; do
		echo "Your files to be encoded from ${SOURCE} to ${TARGET}."
		echo "Encoder is ${ENCODER}."
		echo "Your encoded file name will be ${file%.${SOURCE}}.${TARGET}"
		echo "Press Ctrl-c if I am wrong:)"
		#sleep 1

		TITLE=`id3v2 -l "${file}" | grep TIT2 | ${CONVERT} | sed -e "s/^[^:]*: \(.*\)$/\1/g"`
		if [ -z "${TITLE}" ]; then
			TITLE=`id3v2 -l "${file}" | grep Title | grep Artist | ${CONVERT} | sed -e "s/^Title\s*: \(.*\)Artist\s*: \(.*\)$/\1/g"`
		fi
		TITLE=`echo $TITLE | sed -e "s/\s*$//g" | sed -e "s/\s/\\ /g"`
		TITLE="--title=${TITLE}"
		
		ARTIST=`id3v2 -l "${file}" | grep TPE1 | ${CONVERT} | sed -e "s/^[^:]*: \(.*\)$/\1/g"`
		if [ -z "${ARTIST}" ]; then
			ARTIST=`id3v2 -l "${file}" | grep Title | grep Artist | ${CONVERT} | sed -e "s/^Title\s*: \(.*\)Artist\s*: \(.*\)$/\2/g"`
		fi
		ARTIST=`echo $ARTIST | sed -e "s/\s*$//g" | sed -e "s/\s/\\ /g"`
		ARTIST="--artist=${ARTIST}"
		
		ALBUM=`id3v2 -l "${file}" | grep TALB | ${CONVERT} | sed -e "s/^[^:]*: \(.*\)$/\1/g"`
		if [ -z "${ALBUM}" ]; then
			ALBUM=`id3v2 -l "${file}" | grep Album | grep Year | ${CONVERT} | sed -e "s/^Album\s*: \(.*\)Year\s*: \(.*\),\s*Genre\s*:.*$/\1/g"`
		fi
		ALBUM=`echo $ALBUM | sed -e "s/\s*$//g" | sed -e "s/\s/\\ /g"`
		ALBUM="--album=${ALBUM}"
		
		TRACK=`id3v2 -l "${file}" | grep TRCK | ${CONVERT} | sed -e "s/^[^:]*: \(\d*\)/\1/g"`
		if [ -z "${TRACK}" ]; then
			TRACK=`id3v2 -l "${file}" | grep Comment | grep Track | ${CONVERT} | sed -e "s/^Comment\s*: \(.*\)Track\s*: \(.*\)$/\2/g"`
		fi
		TRACK=`echo $TRACK | sed -e "s/\s*$//g" | sed -e "s/\s/\\ /g"`
		TRACK="--tracknum=${TRACK}"
		
		YEAR=`id3v2 -l "${file}" | grep TYER | ${CONVERT} | sed -e "s/^[^:]*: \(\d*\)/\1/g"`
		if [ -z "${YEAR}" ]; then
			YEAR=`id3v2 -l "${file}" | grep Album | grep Year | ${CONVERT} | sed -e "s/^Album\s*: \(.*\)Year\s*: \(.*\),\s*Genre\s*:.*$/\2/g"`
		fi
		YEAR=`echo $YEAR | sed -e "s/\s*$//g" | sed -e "s/\s/\\ /g"`
		YEAR="--date=${YEAR}"

		$DECODER -ao pcm -vo null "$file"
		echo "Will use the following command line to encode ogg:"
		echo \"${ENCODER} ${DUMPFILE} --quality=${QUALITY} --output="${file%.${SOURCE}}.${TARGET}" "${ARTIST}" "${TITLE}" "${ALBUM}" "${TRACK}" "${YEAR}"\"
		#$CMDLINE
		${ENCODER} ${DUMPFILE} --quality=${QUALITY} --output="${file%.${SOURCE}}.${TARGET}" "${ARTIST}" "${TITLE}" "${ALBUM}" "${TRACK}" "${YEAR}"
		rm -fr "$DUMPFILE"
	done
else
	echo "You need [mplayer] and [oggenc] to proceed!"
	echo "Quitting ...!"
	exit 1
fi
