#!/bin/sh
# Programmeur : WW
# 25/08/08
# Script permettant d'extraire le son d'une vidéo

#------- Déclaration des variables -------

listeFormats="*.avi *.divx *.xvid *.mpg *.dat *.ogm *.flv *.mov *.AVI *.DIVX *.XVID *.MPG *.DAT *.OGM *.FLV *.MOV" # Représente la liste des formats des vidéos à traiter dans le dossier

#------- Déclaration des fonctions -------

# Fonction qui traite les vidéos contenus dans un dossier
traitementDossier() {
	nombre=0

	for i in $listeFormats; do # On compte les vidéos
		if [ "${i%.*}" != "*" ]; then
			nombre=$(($nombre+1))
		fi
	done

	n=1

	(for i in $listeFormats; do
       		if [ "${i%.*}" != "*" ]; then # Permet d'éviter un traitement inutile quand aucun fichier n'est trouvé pour un format sans ce test *.ogm (ou autres) serai considéré comme un fichier lorsqu'il n'y a pas de fichier .ogm (ou autres) dans le dossier
			echo "# "$i;
			progression=$((100*n/nombre));
			echo $progression;
			n=$((n+1));
			traitementFichier "$i"
		fi
	done;)|zenity --height="350" --width="400" --progress --percentage=0;
}

# Fonction qui traite une vidéo à passer en paramètre
traitementFichier() {
	if [ -e "${1%.*}".$extension ]; then # Si le fichier existe déjà

		creation="faux" # On n'écrase pas

		zenity --question --title="~ Ecraser ~" --text="Le fichier ${1%.*}.$extension existe déjà. Voulez-vous l'écraser ?" # On pose la question
		if [ $? = "0" ]; then # Si la réponse est oui
			creation="vrai" # On écrase
		fi
	else
		creation="vrai" # Le fichier n'existe pas on veux forcément le créer
	fi

	if [ "$creation" = "vrai" ]; then
		mplayer -dumpaudio -dumpfile "${1%.*}".$extension "$1" 2>&1 | zenity --progress --pulsate --title="Extraction en cours" --text="Vidéo : $1" --auto-close --auto-kill;
	fi
}

# Fonction d'annulation requière un paramètre
annuler() {
	if [ "$1" = "" ]; then
        	exit 0;
	fi
}

#------- Fin des définitions de fonctions -------

# Choix de l'extension
extension=$(zenity --list --column="Choix" --column=" " --height="250" --width="300" --radiolist --text="Quel format voulez-vous pour le(s) fichier(s) de sortie ?" --title="Extensions" false "mp3" true "ogg" false "wav")

annuler $extension

while [ $# -gt 0 ]; do
    
	if [ -d "$1" ]; then    
		cd "$1" #On entre dans le dossier des vidéos à traiter
		traitementDossier
	else
		traitementFichier "$1"
	fi
	shift
done
