#!/bin/sh
#set -x
MP3INFO=/usr/bin/mp3info
OGGINFO=/usr/bin/ogginfo

function rec_dir {
     # enter $source if [ -d $source ]
     # enter directories inside $source
     # convert files in current dir
     cd "$@"
     echo "PWD  `pwd`"
     for file in * ; do
         if [ -d "${file}" ] ; then
             echo "DIR ${file}"
             rec_dir "${file}"
         elif file "${file}" | grep Ogg > /dev/null ; then
             echo -n "OGG${file}"
             extract_ogg_tags "${file}"
         elif file "${file}" | grep MP3 > /dev/null ; then
             echo -n "MP3${file}"
             extract_mp3_tags "${file}"
         else
             echo "SKIP ${file}"
         fi
     done
     cd .. 
}

function extract_ogg_tags {
     # extract tags from ogg file
     ogg_info=$($OGGINFO "$@")
     ogg_info=$(echo ${ogg_info} | sed '
       s/ artist=/artist=/i
       s/ title=/title=/i
       s/ genre=/genre=/i
       s/ date=/date=/i
       s/ album=/album=/i
       s/ tracknumber=/tracknumber=/i
       s/ title=/title=/i
       s/ Vorbis stream 1:/Vorbis stream 1:/i
       s/ Total data length:/Total data length:/i
       s/ Playback length:/Playback length:/i
       s/ Average bitrate:/Average bitrate:/i')
     ogg_artist=$(echo ${ogg_info} | sed 's/^.*artist=\([^]*\).*$/\1/i')
     ogg_album=$(echo ${ogg_info} | sed 's/^.*album=\([^]*\).*$/\1/i')
     ogg_date=$(echo ${ogg_info} | sed 's/^.*date=\([^]*\).*$/\1/i')
     ogg_title=$(echo ${ogg_info} | sed 's/^.*title=\([^]*\).*$/\1/i')
     ogg_tracknum=$(echo ${ogg_info} | sed 's/^.*tracknumber=\([^]*\).*$/\1/i')
     ogg_playlength=$(echo ${ogg_info} | sed 's/^.*Playback length: \([^]*\).*$/\1/i')

    ogg_tags="${ogg_artist}${ogg_album}${ogg_date}${ogg_tracknum}${ogg_title}${ogg_playlength}"
    echo $ogg_tags
}

function extract_mp3_tags {
     mp3_tags=$($MP3INFO -p"%a%l%y%n%t%mm:%ss" "$@")
     echo $mp3_tags
}

rec_dir "/mnt/rubbish/mp3/"
