1342 lines
41 KiB
Plaintext
1342 lines
41 KiB
Plaintext
|
#!/bin/bash
|
||
|
#
|
||
|
#
|
||
|
# audio convert 0.3.1
|
||
|
#
|
||
|
# a program to convert wav, ogg, mp3, mpc, flac, ape, aac or wma files into
|
||
|
# wav, ogg, mp3, mpc, flac, ape or aac files. with an easy to use interface
|
||
|
# it's actually possible to fill in the tags for a few formats, pass them on
|
||
|
# from format to format, and choose the quality of compression.
|
||
|
#
|
||
|
# copyright (C) 2005 linfasoft
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation; either version 2 of the License, or
|
||
|
# (at your option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with this program; if not, write to the Free Software
|
||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
||
|
# USA
|
||
|
#
|
||
|
# dependencies
|
||
|
# bash
|
||
|
# zenity
|
||
|
# awk
|
||
|
# file >= 4.16
|
||
|
# mplayer -- if you want to decode wma files
|
||
|
# lame
|
||
|
# vorbis tools
|
||
|
# id3tag
|
||
|
# musepack-tools
|
||
|
# flac
|
||
|
# mac
|
||
|
# faac,faad
|
||
|
#
|
||
|
# based on
|
||
|
# wom_audioconverter, by yekcim <yeknan@yahoo.fr>, http://yeknan.free.fr.
|
||
|
#
|
||
|
|
||
|
set -x
|
||
|
|
||
|
version="0.3.1"
|
||
|
#################################################
|
||
|
# TRADUCTIONS
|
||
|
###### Default = English #####
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="please select at least one file."
|
||
|
noselec=""$title" converts audio files. "$pleasesel""
|
||
|
choix="extension of output file:"
|
||
|
warning="warning"
|
||
|
proceed="already exists. overwrite?"
|
||
|
recur=""$title" can't convert a directory. "$pleasesel""
|
||
|
conversion="converting file:"
|
||
|
ask_artist="enter the artist name:"
|
||
|
ask_album="enter the album name:"
|
||
|
ask_song="enter the song name:"
|
||
|
ask_track="enter the track number:"
|
||
|
ask_quality="select the desired quality:"
|
||
|
ask_compression="select the desired compression level:"
|
||
|
confirmation="do you want to convert"
|
||
|
decoding="decoding file:"
|
||
|
ask_fields="manually enter file metatags"
|
||
|
ask_confirmation_question="get prompted a confirmation question before convertin' each file"
|
||
|
no_codec="you don't have the right codec to decode the selected file. missin' codec:"
|
||
|
not_supported="format not supported"
|
||
|
completed="conversion completed. goodbye!"
|
||
|
ask_to_pass="pass the metatags on to the new files"
|
||
|
options="choose from the followin' options:"
|
||
|
options_conflict="options one and two conflict. please unselect one of them"
|
||
|
case $LANG in
|
||
|
######## Français ########
|
||
|
fr* )
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="Merci de selectionner au moins un fichier."
|
||
|
noselec=""$title" permet de convertir des fichiers audio. "$pleasesel""
|
||
|
choix="Format du fichier de sortie :"
|
||
|
warning="Attention"
|
||
|
proceed="existe deja. Ecraser ?"
|
||
|
recur=""$title" ne permet pas la conversion de dossiers. "$pleasesel""
|
||
|
conversion="Conversion du fichier :"
|
||
|
ask_artist="Nom de l'artiste:"
|
||
|
ask_album="Nom de l'album:"
|
||
|
ask_song="Nom de la chanson:"
|
||
|
ask_track="Numero de la piste:"
|
||
|
ask_quality="Choisir la qualite voulue:"
|
||
|
confirmation="voulez-vous convertir"
|
||
|
decoding="decodage du fichier:"
|
||
|
ask_fields="voulez-vous completer les metatags du fichier?"
|
||
|
ask_confirmation_question="voulez-vous confirmer avant de convertir chaque
|
||
|
fichier?";;
|
||
|
######## italiano #########
|
||
|
it* )
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="per favore, scegli almeno un file."
|
||
|
noselec=""$title" converte i file audio. "$pleasesel""
|
||
|
choix="formato di conversione:"
|
||
|
warning="attenzione"
|
||
|
proceed="esiste! sovrascrivo?"
|
||
|
recur=""$title" non può convertire directory. "$pleasesel""
|
||
|
conversion="sto convertendo il file:"
|
||
|
ask_artist="immetti il nome dell'artista:"
|
||
|
ask_album="immetti il nome dell'album:"
|
||
|
ask_song="immetti il nome della canzone:"
|
||
|
ask_track="immetti il numero della traccia:"
|
||
|
ask_quality="scegli la qualità del file:"
|
||
|
ask_compression="scegli il livello di compressione:"
|
||
|
confirmation="vuoi convertire"
|
||
|
decoding="sto decodificando il file:"
|
||
|
ask_fields="completare manualmente le metatags"
|
||
|
ask_confirmation_question="chiedi una conferma per ogni file da convertire"
|
||
|
no_codec="non hai il codec corretto per decodificare il file selezionato. codec mancante:"
|
||
|
not_supported="formato non supportato"
|
||
|
completed="conversione completata. arrivederci!"
|
||
|
ask_to_pass="copiare le metatags nel nuovo file"
|
||
|
options="scegli fra le seguenti opzioni:"
|
||
|
options_conflict="le opzioni uno e due sono in conflitto. per favore deselezionane una";;
|
||
|
###### Brazilian Portuguese ######
|
||
|
pt-br* )
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="por favor, selecione pelo menos um arquivo."
|
||
|
noselec=""$title" converter arquivos de audio. "$pleasesel""
|
||
|
choix="extensão do arquivo de saída:"
|
||
|
warning="atenção"
|
||
|
proceed="já existe! sobrescrever?"
|
||
|
recur=""$title" não e possível converter pasta. "$pleasesel""
|
||
|
conversion="convertendo arquivo:"
|
||
|
ask_artist="digite o nome do artista:"
|
||
|
ask_album="digite o nome do album:"
|
||
|
ask_song="digite o nome da música:"
|
||
|
ask_track="digite o número da faixa:"
|
||
|
ask_quality="selecione a qualidade desejada:"
|
||
|
confirmation="você quer converter"
|
||
|
decoding="decodificando arquivo:";;
|
||
|
######## dutch ########
|
||
|
nl* )
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="selecteer minimaal 1 bestand."
|
||
|
noselec=""$title" converteer audio bestanden. "$pleasesel""
|
||
|
choix="extensie van uitvoerbestanden:"
|
||
|
warning="waarschuwing"
|
||
|
proceed="bestaat al. overschrijven?"
|
||
|
recur=""$title" kan geen directory converteren. "$pleasesel""
|
||
|
conversion="converteren van bestand:"
|
||
|
ask_artist="voer naam van artiest in:"
|
||
|
ask_album="voer naam van album in:"
|
||
|
ask_song="voer naam van nummer in:"
|
||
|
ask_track="voer volgnummer in:"
|
||
|
ask_quality="selecteer de gewenste kwaliteit:"
|
||
|
confirmation="wil je converteren"
|
||
|
decoding="decoderen bestand:"
|
||
|
ask_fields="Wil je metatags aan de bestanden toevoegen?"
|
||
|
ask_confirmation_question="Wil je bevestiging voor het converteren van elk bestand?"
|
||
|
no_codec="Je hebt niet de juiste codec voor het converteren van dit bestand. Missende codec:"
|
||
|
not_supported="Formaat niet ondersteund"
|
||
|
completed="Conversie compleet."
|
||
|
ask_to_pass="Wil je de metatags toevoegen aan de nieuwe bestanden?";;
|
||
|
######## german ########
|
||
|
de* )
|
||
|
title="Audio konvertier Skript "$version""
|
||
|
pleasesel="Bitte wählen Sie mindestens eine Datei."
|
||
|
noselec=""$title" verarbeitet Dateien. "$pleasesel""
|
||
|
choix="Erweiterung der Ausgabedatei:"
|
||
|
warning="Warnung"
|
||
|
proceed="existiert bereits. Überschreiben?"
|
||
|
recur=""$title" kann kein Verzeichnis konvertieren. "$pleasesel""
|
||
|
conversion="Konvertierung der Datei:"
|
||
|
ask_artist="Künstlername:"
|
||
|
ask_album="Albumname:"
|
||
|
ask_song="Songname:"
|
||
|
ask_track="Titelnummer:"
|
||
|
ask_quality="Wählen Sie die gewuenschte Qualitaet:"
|
||
|
confirmation="Wollen Sie jetzt konvertieren?"
|
||
|
decoding="dekodiere Datei:"
|
||
|
ask_compression="gib die gewünschte Komprimierungsstaerke an:"
|
||
|
ask_confirmation_question="willst Du für jede Datei vor der Konvertierung eine Bestätigungsfrage?"
|
||
|
ask_fields="Du willst keine metatags angeben?"
|
||
|
completed="Konvertierung abgeschlossen. Tschüss"
|
||
|
no_codec="Du hast keinen passenden codec um die Datei zu dekodieren"
|
||
|
not_supported="Format wird nicht unterstützt";;
|
||
|
######## Spanish(Español - Castellano) ########
|
||
|
es* )
|
||
|
title="audio convert "$version""
|
||
|
pleasesel="Seleccione al menos un archivo."
|
||
|
noselec=""$title" - Convierte archivos de audio."$pleasesel""
|
||
|
choix="Formato del archivo resultante:"
|
||
|
warning="Atención"
|
||
|
proceed="Ya existe, sobreescribir?"
|
||
|
recur=""$title" No se puede convertir el directorio. "$pleasesel""
|
||
|
conversion="Convirtiendo archivo:"
|
||
|
ask_artist="Nombre del artista:"
|
||
|
ask_album="Nombre del álbum:"
|
||
|
ask_song="Nombre de la canción:"
|
||
|
ask_track="Número de la pista:"
|
||
|
ask_quality="Seleccione la calidad deseada:"
|
||
|
confirmation="Convertir?"
|
||
|
decoding="Decodificando archivo:"
|
||
|
ask_fields="Editar las \"metatags\" del archivo?"
|
||
|
ask_confirmation_question="Desea una pregunta de confirmación antes de convertir cada archivo?"
|
||
|
ask_compression="seleccione el nivel de compresión deseable:"
|
||
|
completed="conversión completo. Adiós!"
|
||
|
no_codec="No tenrs el codec correcto para descodificar el elijido archivo. Falta:"
|
||
|
not_supported="Format no es soportado";;
|
||
|
######## polish ########
|
||
|
pl* )
|
||
|
title="konwersja audio "$version""
|
||
|
pleasesel="wybierz co najmniej jeden plik."
|
||
|
noselec="konwersja pliku "$title". "$pleasesel""
|
||
|
choix="rozszerzenie pliku wynikowego:"
|
||
|
warning="ostrzeÅŒenie"
|
||
|
proceed="juÅŒ istnieje. zastÄ~EpiÄ~G ?"
|
||
|
recur=""$title" nie moÅŒna konwertowaÄ~G katalogów. "$pleasesel""
|
||
|
conversion="konwersja pliku:"
|
||
|
ask_artist="podaj nazwÄ~Y wykonawcy:"
|
||
|
ask_album="podaj nazwÄ~Y albumu:"
|
||
|
ask_song="podaj nazwÄ~Y utworu:"
|
||
|
ask_track="podaj numer Å~[cieÅŒki:"
|
||
|
ask_quality="wybierz wymagany poziom jakoÅ~[ci:"
|
||
|
ask_compression="wybierz wymagany poziom kompresji:"
|
||
|
confirmation="chcesz uÅŒyÄ~G konwersji"
|
||
|
decoding="dekodowany plik:"
|
||
|
ask_fields="chcesz umieÅ~[ciÄ~G tagi ?"
|
||
|
ask_confirmation_question="chcesz uÅŒywaÄ~G potwierdzenia przed kaÅŒdÄ~E konwersjÄ~E ?"
|
||
|
no_codec="nie posiadasz odpowiedniego kodeka dla wykonania wymaganej operacji. missin' codec:"
|
||
|
not_supported="brak obsÅ~Bugi wskazanego formatu"
|
||
|
completed="konwersjÄ~Y zakoÅ~Dczono. Pa, pa!"
|
||
|
ask_to_pass="chcesz eksportowaÄ~G metatagi do innych plików?"
|
||
|
esac
|
||
|
|
||
|
#################################################
|
||
|
# FONCTIONS
|
||
|
get_field_names ()
|
||
|
{
|
||
|
artist_name=`zenity --entry --title="$title" --text="$ask_artist" --entry-text="$artist_name"`
|
||
|
album_name=`zenity --entry --title="$title" --text="$ask_album" --entry-text="$album_name"`
|
||
|
song_name=`zenity --entry --title="$title" --text="$ask_song"`
|
||
|
track_number=`zenity --entry --title="$title" --text="$ask_track"`
|
||
|
}
|
||
|
|
||
|
get_ogg_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_quality" -- "-1" FALSE "0" FALSE "1" FALSE "2" FALSE "3" FALSE "4" FALSE "5" FALSE "6" TRUE "7" FALSE "8" FALSE "9" FALSE "10"
|
||
|
}
|
||
|
|
||
|
get_mp3_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_quality" FALSE "medium" FALSE "standard" TRUE "extreme" FALSE "insane"
|
||
|
}
|
||
|
|
||
|
get_mpc_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_quality" FALSE "thumb" FALSE "radio" TRUE "standard" FALSE "xtreme"
|
||
|
}
|
||
|
|
||
|
get_flac_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_compression" FALSE "0" FALSE "1" FALSE "2" FALSE "3" FALSE "4" FALSE "5" FALSE "6" FALSE "7" TRUE "8"
|
||
|
}
|
||
|
|
||
|
get_mac_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_compression" FALSE "1000" FALSE "2000" TRUE "3000" FALSE "4000" FALSE "5000"
|
||
|
}
|
||
|
|
||
|
get_aac_quality ()
|
||
|
{
|
||
|
zenity --title="$title" --list --radiolist --column="" --column="$ask_compression" FALSE "100" FALSE "200" TRUE "300" FALSE "400" FALSE "500"
|
||
|
}
|
||
|
|
||
|
get_quality ()
|
||
|
{
|
||
|
if [ "$1" == "mp3" ]
|
||
|
then
|
||
|
quality="$(get_mp3_quality)"
|
||
|
fi
|
||
|
if [ "$1" == "ogg" ]
|
||
|
then
|
||
|
quality="$(get_ogg_quality)"
|
||
|
fi
|
||
|
if [ "$1" == "mpc" ]
|
||
|
then
|
||
|
quality="$(get_mpc_quality)"
|
||
|
fi
|
||
|
if [ "$1" == "flac" ]
|
||
|
then
|
||
|
quality="$(get_flac_quality)"
|
||
|
fi
|
||
|
if [ "$1" == "ape" ]
|
||
|
then
|
||
|
quality="$(get_mac_quality)"
|
||
|
fi
|
||
|
if [ "$1" == "aac" ]
|
||
|
then
|
||
|
quality="$(get_aac_quality)"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
get_metatags ()
|
||
|
{
|
||
|
if (is_mp3 "$1")
|
||
|
then
|
||
|
artist_name=`id3info "$1" | awk '/TPE1/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
album_name=`id3info "$1" | awk '/TALB/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
song_name=`id3info "$1" | awk '/TIT2/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
track_number=`id3info "$1" | awk '/TRCK/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
fi
|
||
|
if (is_ogg "$1")
|
||
|
then
|
||
|
artist_name=`ogginfo "$1" | grep artist | cut -d \= -f 2`
|
||
|
album_name=`ogginfo "$1" | grep album | cut -d \= -f 2`
|
||
|
song_name=`ogginfo "$1" | grep title | cut -d \= -f 2`
|
||
|
track_number=`ogginfo "$1" | grep tracknumber | cut -d \= -f 2`
|
||
|
fi
|
||
|
if (is_flac "$1")
|
||
|
then
|
||
|
artist_name=`metaflac --show-tag=artist "$1" | cut -d \= -f 2`
|
||
|
album_name=`metaflac --show-tag=album "$1" | cut -d \= -f 2`
|
||
|
song_name=`metaflac --show-tag=title "$1" | cut -d \= -f 2`
|
||
|
track_number=`metaflac --show-tag=tracknumber "$1" | cut -d \= -f 2`
|
||
|
fi
|
||
|
if (is_aac "$1")
|
||
|
then
|
||
|
artist_name=`faad -i "$1" 2>&1 | awk '/artist/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
album_name=`faad -i "$1" 2>&1 | awk '/album/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
song_name=`faad -i "$1" 2>&1 | awk '/title/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
track_number=`faad -i "$1" 2>&1 | awk '/track/ { print substr($0, match($0, /:/) + 2 ) }'`
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
mp3_parse_fields ()
|
||
|
{
|
||
|
if [ "$artist_name" ]
|
||
|
then
|
||
|
mp3_fields=(-a"$artist_name")
|
||
|
fi
|
||
|
if [ "$album_name" ]
|
||
|
then
|
||
|
mp3_fields=("${mp3_fields[@]}" -A"$album_name")
|
||
|
fi
|
||
|
if [ "$song_name" ]
|
||
|
then
|
||
|
mp3_fields=("${mp3_fields[@]}" -s"$song_name")
|
||
|
fi
|
||
|
if [ "$track_number" ]
|
||
|
then
|
||
|
mp3_fields=("${mp3_fields[@]}" -t"$track_number")
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
ogg_parse_fields ()
|
||
|
{
|
||
|
if [ "$artist_name" ]
|
||
|
then
|
||
|
ogg_fields=(-a "$artist_name")
|
||
|
fi
|
||
|
if [ "$album_name" ]
|
||
|
then
|
||
|
ogg_fields=("${ogg_fields[@]}" -l "$album_name")
|
||
|
fi
|
||
|
if [ "$song_name" ]
|
||
|
then
|
||
|
ogg_fields=("${ogg_fields[@]}" -t "$song_name")
|
||
|
fi
|
||
|
if [ "$track_number" ]
|
||
|
then
|
||
|
ogg_fields=("${ogg_fields[@]}" -N "$track_number")
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
flac_set_tags ()
|
||
|
{
|
||
|
if [ $pass_metatags -eq 0 ] || [ $fields -eq 0 ]
|
||
|
then
|
||
|
if [ "$artist_name" ]
|
||
|
then
|
||
|
metaflac --set-tag=ARTIST="$artist_name" "$1"
|
||
|
fi
|
||
|
if [ "$album_name" ]
|
||
|
then
|
||
|
metaflac --set-tag=ALBUM="$album_name" "$1"
|
||
|
fi
|
||
|
if [ "$song_name" ]
|
||
|
then
|
||
|
metaflac --set-tag=TITLE="$song_name" "$1"
|
||
|
fi
|
||
|
if [ "$track_number" ]
|
||
|
then
|
||
|
metaflac --set-tag=TRACKNUMBER="$track_number" "$1"
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
aac_parse_fields ()
|
||
|
{
|
||
|
if [ "$artist_name" ]
|
||
|
then
|
||
|
aac_fields=(--artist "$artist_name")
|
||
|
fi
|
||
|
if [ "$album_name" ]
|
||
|
then
|
||
|
aac_fields=("${aac_fields[@]}" --album "$album_name")
|
||
|
fi
|
||
|
if [ "$song_name" ]
|
||
|
then
|
||
|
aac_fields=("${aac_fields[@]}" --title "$song_name")
|
||
|
fi
|
||
|
if [ "$track_number" ]
|
||
|
then
|
||
|
aac_fields=("${aac_fields[@]}" --track "$track_number")
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
is_mp3 ()
|
||
|
{
|
||
|
file -b "$1" | grep 'MP3' || echo $1 | grep -i '\.mp3$'
|
||
|
}
|
||
|
|
||
|
is_ogg()
|
||
|
{
|
||
|
file -b "$1" | grep 'Vorbis' || echo $1 | grep -i '\.ogg$'
|
||
|
}
|
||
|
|
||
|
is_mpc()
|
||
|
{
|
||
|
file -b "$1" | grep 'Musepack' || echo $1 | grep -i '\.mpc$'
|
||
|
}
|
||
|
|
||
|
is_flac()
|
||
|
{
|
||
|
file -b "$1" | grep 'FLAC' || echo $1 | grep -i '\.flac$'
|
||
|
}
|
||
|
|
||
|
is_mac()
|
||
|
{
|
||
|
file -b "$1" | grep 'data' && echo $1 | grep -i '\.ape$'
|
||
|
}
|
||
|
|
||
|
is_aac()
|
||
|
{
|
||
|
file -b "$1" | grep 'AAC' || echo $1 | grep -i '\.aac$'
|
||
|
}
|
||
|
|
||
|
is_wav()
|
||
|
{
|
||
|
file -b "$1" | grep 'WAVE' || echo $1 | grep -i '\.wav$'
|
||
|
}
|
||
|
|
||
|
is_wma()
|
||
|
{
|
||
|
file -b "$1" | grep 'Microsoft' || echo $1 | grep -i '\.wma$'
|
||
|
}
|
||
|
|
||
|
mp3_encode ()
|
||
|
{
|
||
|
lame -m auto --preset $quality "$2" "$3" 2>&1 | awk -vRS='\r' '(NR>3){gsub(/[()%|]/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
}
|
||
|
|
||
|
ogg_encode ()
|
||
|
{
|
||
|
if [ $fields -eq 0 ] || [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
ogg_parse_fields
|
||
|
oggenc "$2" "${ogg_fields[@]}" -q $quality -o "$3" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
else
|
||
|
oggenc "$2" -q $quality -o "$3" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
mpc_encode ()
|
||
|
{
|
||
|
mppenc --$quality "$2" "$3" 2>&1 | awk -vRS='\r' '!/^$/{if (NR>5) print $1; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
}
|
||
|
|
||
|
flac_encode ()
|
||
|
{
|
||
|
flac --compression-level-$quality "$2" -o "$3" 2>&1 | awk -vRS='\r' -F':' '!/wrote/{gsub(/ /,"");if(NR>1)print $2; fflush();}' | awk -F'%' '{print $1; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
}
|
||
|
|
||
|
mac_encode ()
|
||
|
{
|
||
|
mac "$2" "$3" -c$quality 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
}
|
||
|
|
||
|
aac_encode ()
|
||
|
{
|
||
|
if [ $fields -eq 0 ] || [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
aac_parse_fields
|
||
|
faac -w "${aac_fields[@]}" -q $quality -o "$3" "$2" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $3; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
else
|
||
|
faac -q $quality -o "$3" "$2" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $3; fflush();}' | zenity --progress --title="$title" --text="$conversion $1" --auto-close
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
mp3_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
lame --decode "$1" "$temp_file" 2>&1 | awk -vRS='\r' -F'[ /]+' '(NR>2){if((100*$2/$3)<=100)print 100*$2/$3; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
ogg_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
oggdec "$1" -o "$temp_file" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
mpc_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
mppdec "$1" "$temp_file" 2>&1 | awk -vRS='\r' -F'[ (]+' '!/s/{gsub(/(%)/," ");if(NR>5)print $5; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
flac_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
flac -d "$1" -o "$temp_file" 2>&1 | awk -vRS='\r' -F':' '!/done/{gsub(/ /,"");gsub(/% complete/,"");if(NR>1)print $2; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
mac_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
mac "$1" "$temp_file" -d 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $2; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
aac_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
faad -o "$temp_file" "$1" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print $1; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
wma_decode ()
|
||
|
{
|
||
|
temp_file=`echo "$1" | sed 's/\.\w*$/'.wav'/'`
|
||
|
mplayer -ao pcm:file="$temp_file" "$1" 2>&1 | awk -vRS='\r' '(NR>1){gsub(/%/," ");print 100-$5; fflush();}' | zenity --progress --title="$title" --text="$2 $1" --auto-close
|
||
|
}
|
||
|
|
||
|
ask_for_fields ()
|
||
|
{
|
||
|
#zenity --question --text="$ask_fields"
|
||
|
#fields=$?
|
||
|
questions=("${questions[@]}" FALSE "$ask_fields")
|
||
|
}
|
||
|
|
||
|
ask_for_confirmation ()
|
||
|
{
|
||
|
#zenity --question --text="$ask_confirmation_question"
|
||
|
#confirmation_question=$?
|
||
|
questions=("${questions[@]}" FALSE "$ask_confirmation_question")
|
||
|
}
|
||
|
|
||
|
ask_to_pass_metatags ()
|
||
|
{
|
||
|
#zenity --question --text="$ask_to_pass"
|
||
|
#pass_metatags=$?
|
||
|
questions=(FALSE "$ask_to_pass")
|
||
|
}
|
||
|
|
||
|
question_list ()
|
||
|
{
|
||
|
if [ "$formatout" == "mp3" ] || [ "$formatout" == "ogg" ] || [ "$formatout" == "flac" ] || \
|
||
|
[ "$formatout" == "aac" ]
|
||
|
then
|
||
|
#pass_metatags=1
|
||
|
|
||
|
if (is_mp3 "$1") || (is_ogg "$1") || (is_flac "$1") || (is_aac "$1")
|
||
|
then
|
||
|
ask_to_pass_metatags # ask if user wants metatags to be passed on
|
||
|
fi
|
||
|
|
||
|
ask_for_fields # ask if user wants to edit metatags
|
||
|
fi
|
||
|
if [ "$2" -gt 1 ]
|
||
|
then
|
||
|
ask_for_confirmation # ask if user wants a confirmation question for each file
|
||
|
#else
|
||
|
# confirmation_question=1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
ask_questions ()
|
||
|
{
|
||
|
repeat=1
|
||
|
|
||
|
while [ $repeat -eq 1 ]
|
||
|
do
|
||
|
answers=`zenity --list --checklist --column "" --column "$options" "${questions[@]}"`
|
||
|
|
||
|
if (echo "$answers" | grep -i "$ask_to_pass") && \
|
||
|
(echo "$answers" | grep -i "$ask_fields")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$options_conflict"
|
||
|
repeat=1
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
repeat=0
|
||
|
done
|
||
|
}
|
||
|
|
||
|
parse_questions ()
|
||
|
{
|
||
|
if (echo "$answers" | grep -i "$ask_to_pass")
|
||
|
then
|
||
|
pass_metatags=0
|
||
|
else
|
||
|
pass_metatags=1
|
||
|
fi
|
||
|
|
||
|
if (echo "$answers" | grep -i "$ask_fields")
|
||
|
then
|
||
|
fields=0
|
||
|
else
|
||
|
fields=1
|
||
|
fi
|
||
|
|
||
|
if (echo "$answers" | grep -i "$ask_confirmation_question")
|
||
|
then
|
||
|
confirmation_question=0
|
||
|
else
|
||
|
confirmation_question=1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
completed_message ()
|
||
|
{
|
||
|
zenity --info --title "$title" --text="$completed"
|
||
|
}
|
||
|
|
||
|
caf () # fonction "convert audio file"
|
||
|
{
|
||
|
### Format in_file = mp3 ###
|
||
|
if (is_mp3 "$1")
|
||
|
then
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # mp3-2-ogg
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mp3_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # mp3-2-mpc
|
||
|
mp3_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # mp3-2-flac
|
||
|
mp3_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # mp3-2-ape
|
||
|
mp3_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # mp3-2-aac
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mp3_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # mp3-2-wav
|
||
|
mp3_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = ogg ###
|
||
|
if (is_ogg "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # ogg-2-mp3
|
||
|
ogg_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
if [ $pass_metatags -eq 0 ] || [ $fields -eq 0 ]
|
||
|
then
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
fi
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # ogg-2-mpc
|
||
|
ogg_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # ogg-2-flac
|
||
|
ogg_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # ogg-2-ape
|
||
|
ogg_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # ogg-2-aac
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
ogg_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # ogg-2-wav
|
||
|
ogg_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = mpc ###
|
||
|
if (is_mpc "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # mpc-2-mp3
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
break
|
||
|
fi
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # mpc-2-ogg
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # mpc-2-flac
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # mpc-2-ape
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # mpc-2-aac
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mpc_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # mpc-2-wav
|
||
|
mpc_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = flac ###
|
||
|
if (is_flac "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # flac-2-mp3
|
||
|
flac_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
if [ $pass_metatags -eq 0 ] || [ $fields -eq 0 ]
|
||
|
then
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
fi
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # flac-2-ogg
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # flac-2-mpc
|
||
|
flac_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # flac-2-ape
|
||
|
flac_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # flac-2-aac
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # flac-2-wav
|
||
|
flac_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = ape ###
|
||
|
if (is_mac "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # ape-2-mp3
|
||
|
mac_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
break
|
||
|
fi
|
||
|
mac_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # ape-2-ogg
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mac_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # ape-2-mpc
|
||
|
mac_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then #ape-2-flac
|
||
|
mac_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # ape-2-aac
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
mac_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then #ape-2-wav
|
||
|
mac_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = aac ###
|
||
|
if (is_aac "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # aac-2-mp3
|
||
|
aac_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
if [ $pass_metatags -eq 0 ] || [ $fields -eq 0 ]
|
||
|
then
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
fi
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # aac-2-ogg
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
aac_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # aac-2-mpc
|
||
|
aac_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # aac-2-flac
|
||
|
aac_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $pass_metatags -eq 0 ]
|
||
|
then
|
||
|
get_metatags "$1"
|
||
|
elif [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # aac-2-ape
|
||
|
aac_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # aac-2-wav
|
||
|
aac_decode "$1" "$conversion"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = wav ###
|
||
|
if (is_wav "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # wav-2-mp3
|
||
|
mp3_encode "$1" "$1" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
break
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # wav-2-ogg
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
ogg_encode "$1" "$1" "$2"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # wav-2-mpc
|
||
|
mpc_encode "$1" "$1" "$2"
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # wav-2-flac
|
||
|
flac_encode "$1" "$1" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # wav-2-aac
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
aac_encode "$1" "$1" "$2"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # wav-2-ape
|
||
|
mac_encode "$1" "$1" "$2"
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
### Format in_file = wma ###
|
||
|
if (is_wma "$1")
|
||
|
then
|
||
|
if [ "$3" = "mp3" ]
|
||
|
then # wma-2-mp3
|
||
|
wma_decode "$1" "$decoding"
|
||
|
mp3_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
mp3_parse_fields
|
||
|
id3tag "${mp3_fields[@]}" "$2"
|
||
|
break
|
||
|
fi
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
|
||
|
if [ "$3" = "wav" ]
|
||
|
then # wma-2-wav
|
||
|
wma_decode "$1" "$conversion"
|
||
|
fi
|
||
|
|
||
|
if [ "$3" = "ogg" ]
|
||
|
then # wma-2-ogg
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
wma_decode "$1" "$decoding"
|
||
|
ogg_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "mpc" ]
|
||
|
then # wma-2-mpc
|
||
|
wma_decode "$1" "$decoding"
|
||
|
mpc_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "flac" ]
|
||
|
then # wma-2-flac
|
||
|
wma_decode "$1" "$decoding"
|
||
|
flac_encode "$1" "$temp_file" "$2"
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
flac_set_tags "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "ape" ]
|
||
|
then # wma-2-ape
|
||
|
wma_decode "$1" "$decoding"
|
||
|
mac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
if [ "$3" = "aac" ]
|
||
|
then # wma-2-aac
|
||
|
if [ $fields -eq 0 ]
|
||
|
then
|
||
|
get_field_names "$1"
|
||
|
fi
|
||
|
wma_decode "$1" "$decoding"
|
||
|
aac_encode "$1" "$temp_file" "$2"
|
||
|
rm -f "$temp_file"
|
||
|
break
|
||
|
fi
|
||
|
break
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
#################################################
|
||
|
# PROGRAMME
|
||
|
#### Pas de fichiers sélectionné ###
|
||
|
if [ $# -eq 0 ]; then
|
||
|
zenity --error --title="$warning" --text="$noselec"
|
||
|
exit 1
|
||
|
fi
|
||
|
######## make a list of available formats, and check if we can decode the file #######
|
||
|
if !(is_mp3 "$1") && !(is_ogg "$1") && !(is_mpc "$1") && !(is_flac "$1") && !(is_mac "$1") && \
|
||
|
!(is_aac "$1") && !(is_wav "$1") && !(is_wma "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$not_supported"
|
||
|
exit 1
|
||
|
fi
|
||
|
depformat=""
|
||
|
if which lame 2>/dev/null
|
||
|
then
|
||
|
if !(is_mp3 "$1") # if we have lame, and the file to convert is not an mp3,
|
||
|
then # add mp3 to the list of formats to convert to
|
||
|
depformat="mp3"
|
||
|
fi
|
||
|
else # if we don't have lame, check if the file to convert is an mp3
|
||
|
if (is_mp3 "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec lame"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if which oggenc 2>/dev/null
|
||
|
then
|
||
|
if !(is_ogg "$1") # if we have vorbis-tools, and the file to convert is not an
|
||
|
then # ogg, add ogg to the list of formats to convert to
|
||
|
depformat="$depformat ogg"
|
||
|
fi
|
||
|
else # if we don't have vorbis-tools, check if the file to convert is an ogg
|
||
|
if (is_ogg "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec vorbis-tools"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if which mppenc 2>/dev/null
|
||
|
then
|
||
|
if !(is_mpc "$1") # if we have musepack-tools, and the file to convert is not
|
||
|
then # an mpc, add mpc to the list of formats to convert to
|
||
|
depformat="$depformat mpc"
|
||
|
fi
|
||
|
fi
|
||
|
if !(which mppdec 2>/dev/null)
|
||
|
then # if we don't have musepack-tools, check if the file to convert is an mpc
|
||
|
if (is_mpc "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec musepack-tools"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if which flac 2>/dev/null
|
||
|
then
|
||
|
if !(is_flac "$1") # if we have flac, and the file to convert is not a
|
||
|
then # flac, add flac to the list of formats to convert to
|
||
|
depformat="$depformat flac"
|
||
|
fi
|
||
|
else # if we don't have flac, check if the file to convert is a flac
|
||
|
if (is_flac "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec flac"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if which mac 2>/dev/null
|
||
|
then
|
||
|
if !(is_mac "$1") # if we have mac, and the file to convert is not an ape,
|
||
|
then # add ape to the list of formats to convert to
|
||
|
depformat="$depformat ape"
|
||
|
fi
|
||
|
else # if we don't have mac, check if the file to convert is an ape
|
||
|
if (is_mac "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec mac"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if which faac 2>/dev/null
|
||
|
then
|
||
|
if !(is_aac "$1") # if we have faac, and the file to convert to is not an aac,
|
||
|
then # add aac to the list of formats to convert to
|
||
|
depformat="$depformat aac"
|
||
|
fi
|
||
|
fi
|
||
|
if !(which faad 2>/dev/null) # if we don't have faad, check if the file to convert to is an aac
|
||
|
then
|
||
|
if (is_aac "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec faad"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if !(which mplayer 2>/dev/null) # if we don't have mplayer, check if the file to convert is a wma
|
||
|
then
|
||
|
if (is_wma "$1")
|
||
|
then
|
||
|
zenity --error --title="$warning" --text="$no_codec mplayer"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
if !(is_wav "$1") # if the file to convert is not a wav, add wav to the list of
|
||
|
then # formats to convert to
|
||
|
depformat="$depformat wav"
|
||
|
fi
|
||
|
######## Fenêtre principale ########
|
||
|
while [ ! "$formatout" ] # Réafficher la fenêtre tant que l'utilisateur n'a pas fait de choix
|
||
|
do
|
||
|
|
||
|
|
||
|
formatout=`zenity --title "$title" --list --column="Format" $depformat --text "$choix"`
|
||
|
###### Choix -> Sortie boucle ######
|
||
|
if [ $? != 0 ]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
[ $? -ne 0 ] && exit 2 # Annulation
|
||
|
done
|
||
|
########## Conversion ############
|
||
|
#let "nbfiles = $#"
|
||
|
#compteur=0;
|
||
|
question_list "$1" "$#" # prepare all of the various conversion questions
|
||
|
ask_questions # ask all of the various conversion questions
|
||
|
parse_questions # parse all of the various conversion questions
|
||
|
if [ "$formatout" != "wav" ]
|
||
|
then
|
||
|
get_quality "$formatout" # ask for quality of compression
|
||
|
fi
|
||
|
file_number=$#
|
||
|
(while [ $# -gt 0 ]; do
|
||
|
for i in $formatout; do
|
||
|
in_file=$1
|
||
|
out_file=`echo "$in_file" | sed 's/\.\w*$/'.$formatout'/'`
|
||
|
#echo "# $conversion $in_file"
|
||
|
i=`echo $i | sed 's/"//g'`
|
||
|
while `true`; do
|
||
|
########## Le fichier de sortie existe déjÃ| , l'écraser ? ##########
|
||
|
if ls "$out_file" | grep -v "^ls"
|
||
|
then
|
||
|
if !(`gdialog --title "$warning" --yesno "$out_file $proceed" 200 100`)
|
||
|
then
|
||
|
break
|
||
|
fi
|
||
|
fi
|
||
|
if [ "$file_number" -gt 1 ] && [ "$confirmation_question" -eq 0 ]
|
||
|
then
|
||
|
zenity --question --text="$confirmation $in_file in $out_file?"
|
||
|
if [ $? -eq 1 ]
|
||
|
then
|
||
|
break
|
||
|
fi
|
||
|
fi
|
||
|
caf "$in_file" "$out_file" "$formatout" # Lancer la conversion
|
||
|
break
|
||
|
shift
|
||
|
done
|
||
|
######### Progression ########
|
||
|
# let "compteur += 1"
|
||
|
# let "progress = compteur*100/nbfiles"
|
||
|
# echo $progress
|
||
|
done
|
||
|
shift
|
||
|
done
|
||
|
)
|
||
|
|
||
|
completed_message
|