#!/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