#!/bin/bash

[ -f /mounts/Media/Musique-oggQ2/.timestamp ] \
    || touch -t 197001010000 /mounts/Media/Musique-oggQ2/.timestamp

function vorbis_info {
    ogg_artist=$(ogginfo "$1" | grep -i artist=)
    ogg_artist=$(echo $ogg_artist | sed 's/artist=//i')

    ogg_album=$(ogginfo "$1" | grep -i album=)
    ogg_album=$(echo $ogg_album | sed 's/album=//i')
    
    ogg_title=$(ogginfo "$1" | grep -i title=)
    ogg_title=$(echo $ogg_title | sed 's/title=//i')
    
    ogg_tracknum=$(ogginfo "$1" | grep -i tracknumber=)
    ogg_tracknum=$(echo $ogg_tracknum | sed 's/tracknumber=//i')

#    echo "-a '$ogg_artist' -l '$ogg_album' -N '$ogg_tracknum' -t '$ogg_title'"
}

function mp3_info {
    mp3_artist=$(mp3info -p %a "$1")
    mp3_album=$(mp3info -p %l "$1")
    mp3_title=$(mp3info -p %t "$1")
    mp3_tracknum=$(mp3info -p %n "$1")
}

function get_info {
    case "$(file "$1")" in
        *MPEG*)
            #infos=$(mp3info -p "-G '%g' -a '%a' -l '%l' -N '%n' -t '%t'" "$1")
	    mp3_info "$1"
	    infos=mp3
            ;;
	*MP3*)
	    #infos=$(mp3info -p "-G '%g' -a '%a' -l '%l' -N '%n' -t '%t'" "$1")
	    mp3_info "$1"
	    infos=mp3
	    ;;
        *Vorbis*)
            vorbis_info "$1"
            ;;
	*)
	    echo "$1: Unrecognize format... skipping!" >&2
	    sleep 2
	    ;;
    esac
}

function MySox {
    get_info "$1"
    tmpfile=/home/Media/Musique-oggQ2/transogg-$UID-$(date +%Y%m%d%H%M%S%N).wav
    sox "$1" -r 44100 -w $tmpfile
    if [ -z "$infos" ]; then
    	oggenc -a "$ogg_artist" -l "$ogg_album" -N "$ogg_tracknum" -t \
            "$ogg_title" -q 2 -o "$2" $tmpfile
    else
    	oggenc -a "$mp3_artist" -l "$mp3_album" -N "$mp3_tracknum" -t \
	    "$mp3_title" -q 2 -o "$2" $tmpfile 
    fi
    rm -f $tmpfile
    unset infos
}


#find /mounts/Media/Musique/ -name '*.mp3' \
find /mounts/Media/Musique/ -newer /mounts/Media/Musique-oggQ2/.timestamp \
    | egrep '(.ogg)|(.mp3)' \
    | (while read filename ; do
	    destfile="$(echo $filename \
            | sed 's:/mounts/Media/Musique/\(.*\)*\.[om][gp][g3]$:/mounts/Media/Musique-oggQ2/\1\.ogg:i')"
        [ -d "${destfile%/?*}" ] ||	mkdir -p "${destfile%/?*}"
	    MySox "$filename" "$destfile"
    done)

find /mounts/Media/Musique-oggQ2/ -name '*' \
    | (while read filename ; do
        origfile="$(echo $filename \
	    | sed s:/Musique-oggQ2/:/Musique/:)"
	if [ ! -e "$origfile" ] ; then
	    echo -e "$filename:\n\t$origfile doesn't seem to exist anymore, deleting"
	    rm -f "$filename"
	fi
    done)

touch /mounts/Media/Musique-oggQ2/.timestamp
