#!/bin/bash

#####################
# @todo autretende Fehler ausgeben / abfangen
# @todo if funktion check_for_all_files zusammenlegen
# @todo Dateianme mit ogg endung vorhalte
# @todo dokumentieren + debian bug beachten -> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=564550
#####################

#####################
# --- Anpassen! --- #
#####################
eingangsverzeichnis="/var/www/archiv.radiotux.de"
#eingangsverzeichnis="/var/www/archiv.radiotux.de/sendungen/talk"
dateiendung="mp3"
#####################
#
###################
# Beispieldateiname
###################
# (Leerzeichen zu Unterstrichen, Felder durch "-" getrennt)
#
# Datum-Autor-Titel-Nummer_oder_Kommentar.wav
# 20090623-Ingo_Ebel-RadioTux-Folge_69_Interview_mit_einem_Vampir.wav
#
# soll die Dateien (mp3 und ogg)
# 20090623-RadioTux-Folge_69_Interview_mit_einem_Vampir
# mit entsprechenden Tags erzeugen
# 
##############################
# Benoetigte externe Programme
##############################
#
# seq
# lsof
# find
# sox (mit mp3-Support!)
# tagtool.py
# python-mutagen

############################
function check_for_files() {
############################
# prueft, ob es Dateien im Eingangsverzeichnis gibt
# und fuellt ein Array mit den Dateinamen von Dateien,
# die zugreifbar sind
#
	anzahl=0
	for datei in $(find ${eingangsverzeichnis} -type f -iname "*.${dateiendung}")
	do
		if [[ -r "${datei}" ]]
		then
		    if [[ ! -e "${datei%.*}.ogg" ]]
		    then
			    files[${anzahl}]="${datei}"
			    anzahl=$(( ${anzahl} + 1 ))
		    fi
		fi
	done
}

########################
function expand_tags() {
########################
    python $(dirname $0)/tagtool.py "$1" "${1%.*}.ogg"
}

###########################
function convert_to_ogg() {
###########################
# konvertiert eine uebergebene Datei nach ogg
    sox "$1" --comment "" "${1/.mp3/}.ogg"
}

check_for_files

if [[ "${anzahl}" -eq "0" ]]
then
	echo "Nix gefunden!"
	exit
fi

echo "${anzahl} Dateien gefunden!"
for i in $( seq 0 $(( ${anzahl} - 1 )) )
do
	echo "${files[$i]}"
	if ! lsof "${files[$i]}" 2>&1 >/dev/null
	then
        echo "Datei wird nicht benutzt"
        convert_to_ogg "${files[$i]}"
        expand_tags "${files[$i]}"
    fi
done
