#!/bin/sh
# mp3 to ogg script
#
# Author Thorsten Gunkel <tgunkel@gmx.de>
#
# --- 25.04.2003 Thorsten Gunkel <tgunkel@gmx.de> ---
# * split 2mp3 into ogg2mp3 and mp32ogg
# * FIXME: generes > 115?
# --- Initial Release ---
#

  get_title="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TIT2 | sed s/^[^:]*:\ //"
 get_artist="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TPE1 | sed s/^[^:]*:\ //"
  get_album="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TALB | sed s/^[^:]*:\ //"
   get_date="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TYER | sed s/^[^:]*:\ //"
get_comment="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ COMM | sed s/^[^:]*:\ // | sed s/^\(.*\)\"\[.*\]\":\ //"
 get_trcknr="/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TRCK | sed s/^[^:]*:\ //"
  get_genre="convert_mp3tag \`/usr/bin/id3info \"\$ifilename\" | grep ^\=\=\=\ TCON | sed s/^[^:]*:\ // | sed s/^\(// | sed s/\)$//\`"

 recoder="nice /usr/bin/mpg321 -s -q --stereo \"\$ifilename\" | nice /usr/bin/oggenc -r -q 5 --output=\"\$ofilename\" --tracknum \"\$trcknr\" --title \"\$title\" --album \"\$album\" --artist \"\$artist\" -"

 suffix1="mp3"
 suffix2="ogg"

# convert mp3 tag numeric genre to string
convert_mp3tag()
{
 case $1 in
    0) echo "Blues";;
    1) echo "Classic Rock";;
    2) echo "Country";;
    3) echo "Dance";;
    4) echo "Disco";;
    5) echo "Funk";;
    6) echo "Grunge";;
    7) echo "Hip-Hop";;
    8) echo "Jazz";;
    9) echo "Metal";;
   10) echo "New Age";;
   11) echo "Oldies";;
   12) echo "Other";;
   13) echo "Pop";;
   14) echo "R&B";;
   15) echo "Rap";;
   16) echo "Reggae";;
   17) echo "Rock";;
   18) echo "Techno";;
   19) echo "Industrial";;
   20) echo "Alternative";;
   21) echo "Ska";;
   22) echo "Death Metal";;
   23) echo "Pranks";;
   24) echo "Soundtrack";;
   25) echo "Euro-Techno";;
   26) echo "Ambient";;
   27) echo "Trip-Hop";;
   28) echo "Vocal";;
   29) echo "Jazz+Funk";;
   30) echo "Fusion";;
   31) echo "Trance";;
   32) echo "Classical";;
   33) echo "Instrumental";;
   34) echo "Acid";;
   35) echo "House";;
   36) echo "Game";;
   37) echo "Sound Clip";;
   38) echo "Gospel";;
   39) echo "Noise";;
   40) echo "AlternRock";;
   41) echo "Bass";;
   42) echo "Soul";;
   43) echo "Punk";;
   44) echo "Space";;
   45) echo "Meditative";;
   46) echo "Instrumental Pop";;
   47) echo "Instrumental Rock";;
   48) echo "Ethnic";;
   49) echo "Gothic";;
   50) echo "Darkwave";;
   51) echo "Techno-Industrial";;
   52) echo "Electronic";;
   53) echo "Pop-Folk";;
   54) echo "Eurodance";;
   55) echo "Dream";;
   56) echo "Southern Rock";;
   57) echo "Comedy";;
   58) echo "Cult";;
   59) echo "Gangsta";;
   60) echo "Top 40";;
   61) echo "Christian Rap";;
   62) echo "Pop/Funk";;
   63) echo "Jungle";;
   64) echo "Native American";;
   65) echo "Cabaret";;
   66) echo "New Wave";;
   67) echo "Psychadelic";;
   68) echo "Rave";;
   69) echo "Showtunes";;
   70) echo "Trailer";;
   71) echo "Lo-Fi";;
   72) echo "Tribal";;
   73) echo "Acid Punk";;
   74) echo "Acid Jazz";;
   75) echo "Polka";;
   76) echo "Retro";;
   77) echo "Musical";;
   78) echo "Rock & Roll";;
   79) echo "Hard Rock";;
   80) echo "Folk";;
   81) echo "Folk/Rock";;
   82) echo "National Folk";;
   83) echo "Swing";;
   84) echo "Bebob";;
   85) echo "Latin";;
   86) echo "Revival";;
   87) echo "Celtic";;
   88) echo "Bluegrass";;
   89) echo "Avantgarde";;
   90) echo "Gothic Rock";;
   91) echo "Progressive Rock";;
   92) echo "Psychedelic Rock";;
   93) echo "Symphonic Rock";;
   94) echo "Slow Rock";;
   95) echo "Big Band";;
   96) echo "Chorus";;
   97) echo "Easy Listening";;
   98) echo "Acoustic";;
   99) echo "Humour";;
  100) echo "Speech";;
  101) echo "Chanson";;
  102) echo "Opera";;
  103) echo "Chamber Music";;
  104) echo "Sonata";;
  105) echo "Symphony";;
  106) echo "Booty Bass";;
  107) echo "Primus";;
  108) echo "Porn Groove";;
  109) echo "Satire";;
  110) echo "Slow Jam";;
  111) echo "Club";;
  112) echo "Tango";;
  113) echo "Samba";;
  114) echo "Folklore";;
    *) echo "";;
 esac
}


# --- ...2... ---

# nr of parameters
numb=$#
# do while there are parameters
while [ $numb -gt 0 ]
do
 ifilename="$1"; shift; numb=`expr $numb - 1`
 # Does the input file exist?
 if [ -e "$ifilename" ]; then
  ofilename="`echo "$ifilename" | sed s/".$suffix1"$/".$suffix2"/`"
  echo "< $ifilename"
   # ignore files with wrong suffix
   if [ "$ifilename" != "$ofilename" -a ! -e "$ofilename" ]; then
    echo "> $ofilename"
    title="`eval $get_title`"
    artist="`eval $get_artist`"
    album="`eval $get_album`"
    date="`eval $get_date`"
    comment="`eval $get_comment`"
    trcknr="`eval $get_trcknr`"
    genre="`eval $get_genre`"
    eval "$recoder"; errornr=$?
    echo 
    echo ">--------------"
    echo
   else
    echo 
    echo "XXX Destination file already exists or wrong input file!"
    echo
   fi
  else
   echo "XXX File $ifilename does not exist!"
  fi
done

# --- ...2... ---

