Bonjour a tous et toute
Voila je vien de réaliser un script sh qui permet de télécharger de la musique que l'on ecoute en stream via internet mais aussi de la convertir en MP3 de mettre les tag ID3 et de ranger le tout propre et net.Le script en lui même est fonctionnelle mais je voudrait faire des amélioration mais je suis bloqué pour le mettre en interface graphique car je ne sais pas du tout faire.
Le script utilise des logiciel ubuntu libre de droit et sous licence GNU (comme ce script) ainsi que les codecs du dépôt medibuntu
Voici un petit tuto de présentation:
*Téléchargement
1/
http://fwd.dyndns.info/T1000-tagi.tar.gz (dernier version 2.0)
*Installation
1/Lancer le script install (sans être root NI SANS SUDO) lol -> juste double clicker sur install et faire lancer dans le terminal
*Utilisation
1/Lancer T1000-tag par le racourci dans application>son et video>T1000-tag
2/Lancer le chargement de la musique (en fesant "play" sur le site)
3/Les tag devront être inseret automatiquement avec votre validation ou si ils sont non conforme a la musique télécharger vous avez la possibiliter de rechercher avec la base de données CDDB ou bien les rentrer manuellement.
Chaque musique est triée selon /home/_USER_/MP3/$ARTISTE/$ALBUM/$TITRE.mp3 (cela trie une bibliotec rapidement et proprement)
Bug connu:
-Probleme avec lltag [resolu]
-Probleme d'accent dans les titre/tag [resolut]
Amélioration prevu (si des gens m'aide):
-Accès a une base de donnée plus complète car si la musique n'est pas sortie en CD et donc pas présente dans la base de donnée CDBD on a pas les Tag.
[réussie]
-Interface grafique avec "Zenity" mais je ne sais pas faire 🙂
[reussit (avec gtkdialog)]
-Essayer de rajouter un module pour trier une biblioteck existant
New en cour
-Enlever les lien deezer et imeem et refonte grafique nom et logiciel
Done
-Ajouter un fichier de configuration pour la sélection du repertoire de destination
Done
Merci
Ps: Voici le script pour ceux qui veulent juste le consulter sans devoir tout télécharger
#!/bin/sh
##########################################################################################################################
## Change log: ##
## ----------- ##
## ##
## -Utilisation de lltag -S au lieu de MP3info (v1.0) ##
## -Correction des fautes de nortograffe :) (All) ##
## -Utilisation de genpuid© et mipcore© pour générer le puid du MP3 Musicip© (http://www.musicip.com) ##
## -Utilisation de la BD Musicbrainz pour récupérer les tags auto (v1.3) ##
## -Ouverture de DEEZER avec la recherche demandée (v1.3) ##
## -Récupération du dernier Flash*** présent dans le /tmp/ (Merci à AnsuzPeorth) (v1.2) ##
## -Utilisation de eyeD3 pour tag v1.1 et V2.4 (v1.2) ##
## -Amélioration des recherches CDDB avec lltag (v1.3) ##
## -Détermine si le chargement est complet automatiquement (Merci à AnsuzPeorth) (v1.3) ##
## -Différent choix de recherche (v1.4) ##
## -Correction du bug quand plusieurs Flash** dans /tmp/ (v1.4) ##
## -Correction du bug pour la requête sur CDDB (v1.4) ##
## -Correction du bug des tag quand le PUID donne plusieurs réponses ##
## -Suppression des underscrore pour le trie des mp3 (v1.4) ##
## -Amélioration de l'affichage (v1.4) ##
## -Utilisation eyeD3 pour la définition des variables de trie (Regle le problème d'accent) (ruse de sioux) (v1.4) ##
## -Mise en Majuscule de la première lettre de chaque tag rentré manuellement (v1.4) ##
## -Conversion réalisée dans /tmp/conv pour que ça soit plus propre et rangé (v1.4) ##
## -Création d'un installeur automatique (v1.5) ##
## -Modification de la requête Imeem pour n'afficher que des musiques (v1.5) ##
## -Ajout en prévision des images de fond et icônes (v1.5) ##
## -Ajout en prévision du raccourci dans Application>Son et videos>T1000-tag (v1.5) ##
## -Raccourci ajouté (v1.6) ##
## -Interface graphique (v1.7) ##
## -Utilisation des genres fournie par eyeD3 -l (1.7) ##
## -Modification du fichier install pour incorporer les images et icones néccesaire pour la version graphique (v1.7) ##
## -Correction de bug divers (v1.7) ##
## -Amélioration de l'exécution du script et simplification des opérations conditionnelles (v1.7) ##
## -Correction du bug avec les "/" (v1.8) ##
## -Conversion effectuée dans le répertoire /tmp/conv (v1.8) ##
## -Ajout d'une progresse bar pour montrer l'avancement du téléchargement / conversion / Puid gen (v1.8) ##
## -Ajout d'un système de configuration (v1.9) ##
## -Supression des recherches Deezer et IMEEM (v2.0) ##
## -Renomage du script en T1000-tag (v2.0) ##
## -Changement du logo (v2.0) ##
## ##
## -Afin de respecter les lois régissant internet dans mon beau pays des droits de l'Homme cette ##
## version sera changer prochainnement pour ne plus laisser de lien avec les sites Deezer et Imeem et devenir ##
## un script sans ambiguité avec le Warez chose dont ce script n'est pas fait et ne sera jamais fait. ##
## ##
## Amicalement 06011988 ##
## ##
##########################################################################################################################
#
##########################
## Auteur : 06011988 ##
## Version: 2.0 ##
## Licence: GNU ##
##########################
#
#L'auteur décline toutes responsabilités de l'utilisation illégale de T1000-tag!
#
# Clé d'utilisation de genpuid (Fourni par Musicdns.com)
key=3839dbda127e29ccd213da2be833b756
#Conversion dans le tmp
mkdir -p /tmp/conv
#Verife du fichier de conf
test -e ~/.T1000-tag
CONFIG=$?
if [ "$CONFIG" = "1" ]; then
{
export MAIN_DIALOG='
<window title="Attention" icon-name="gtk-dialog-warning" resizable="false" window_position="1">
<vbox>
<frame Attention>
<text>
<label>Aucun fichier de configuration. Merci de lancer la configuration!</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program MAIN_DIALOG
}
#fichier de conf présent test de son intégrité
else
{
Test_dir=$(cat ~/.T1000-tag | grep "Chemin" | sed -e 's/Chemin=//')
Test_trie=$(cat ~/.T1000-tag | grep "Trie" | sed -e 's/Trie=//')
Test_nom=$(cat ~/.T1000-tag | grep "Nom" | sed -e 's/Nom=//')
if [ -d "$Test_dir" ]; then
{
echo "config DIR OK"
}
else
{
export MAIN_DIALOG='
<window title="Attention" icon-name="gtk-dialog-warning" resizable="false" window_position="1">
<vbox>
<frame Attention>
<text>
<label>Fichier de configuration erroné!</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program MAIN_DIALOG
#Éviter d'avoir 3 fenêtres annonçant que le fichier de config est corrompu
ERROR="1"
}
fi
if [ "$ERROR" = "1" ] || [ "$Test_trie" = "9" ] || [ "$Test_trie" = "8" ] || [ "$Test_trie" = "7" ] || [ "$Test_trie" = "6" ] || [ "$Test_trie" = "5" ] || [ "$Test_trie" = "4" ] || [ "$Test_trie" = "3" ] || [ "$Test_trie" = "2" ] || [ "$Test_trie" = "1" ]; then
{
echo "config TRIE OK"
}
else
{
export MAIN_DIALOG='
<window title="Attention" icon-name="gtk-dialog-warning" resizable="false" window_position="1">
<vbox>
<frame Attention>
<text>
<label>Fichier de configuration erroné!</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program MAIN_DIALOG
#Éviter d'avoir 3 fenêtres annonçant que le fichier de config est corrompu
ERROR="1"
}
fi
if [ "$ERROR" = "1" ] || [ "$Test_nom" = "8" ] || [ "$Test_nom" = "7" ] || [ "$Test_nom" = "6" ] || [ "$Test_nom" = "5" ] || [ "$Test_nom" = "4" ] || [ "$Test_nom" = "3" ] || [ "$Test_nom" = "2" ] || [ "$Test_nom" = "1" ]; then
{
echo "config NOM OK"
}
else
{
export MAIN_DIALOG='
<window title="Attention" icon-name="gtk-dialog-warning" resizable="false" window_position="1">
<vbox>
<frame Attention>
<text>
<label>Fichier de configuration erroné!</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program MAIN_DIALOG
}
fi
}
fi
#Recherche
export MAIN_DIALOG='
<window icon-name="deezaster" title="T1000-tag" resizable="false" window_position="1">
<vbox>
<hbox>
<pixmap>
<input file>/usr/share/pixmaps/T1000-tagfd.png</input>
</pixmap>
</hbox>
<hbox>
<frame Sur quel site effectuer une recherche?>
<hbox>
<combobox>
<variable>search</variable>
<item>Fichier déjà en cours de chargement</item>
</combobox>
<entry>
<variable>query</variable>
<default>Artiste ou chanson à rechercher ...</default>
</entry>
</hbox>
</frame>
</hbox>
<hbox>
<button ok></button>
<button help></button>
<button>
<input file icon="gtk-preferences">"Configuration"</input><label>Configuration</label>
</button>
<button cancel></button>
</hbox>
</vbox>
</window>
'
# Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
# Créer les variables shell
eval $VARIABLES
# OK
## Supression des recherche sur deezer et IMEEM
# Quitte
if [ "$EXIT" = "Cancel" ] || [ "$EXIT" = "abort" ]; then
{
boulet="Merci d'avoir lancer T1000-tag pour ne pas l'utiliser c'est mâlin ..."
export MAIN_DIALOG='
<window title="Au revoir" icon-name="stop" resizable="false" window_position="1">
<vbox>
<frame Boulet :>
<text>
<label>'"$boulet"'</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG
exit 0
}
# Aide
elif [ "$EXIT" = "Help" ]; then
{
legal="L'auteur décline toutes responsabilités de l'utilisation illégale de T1000-tag!"
export MAIN_DIALOG='
<window title="About" icon-name="help" resizable="false" window_position="1">
<vbox>
<frame Information :>
<text use-markup="true">
<label>"<b>Script réalisé par:</b> 06011988"</label>
</text>
<text>
<label>'"$legal"'</label>
</text>
<text use-markup="true">
<label>"<b>Pour tout bugs:</b>"</label>
</text>
<text selectable="true">
<label>http://forum.ubuntu-fr.org/viewtopic.php?pid=2338606</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG
T1000-tag
exit 0
}
elif [ "$EXIT" = "Configuration" ]; then
{
export MAIN_DIALOG='
<window title="Configuration" icon-name="gtk-preferences" resizable="false" window_position="1">
<vbox>
<notebook labels="Dossier|Trie|Nom">
<vbox>
<text>
<label>Choisir le dossier de destination :</label>
</text>
<hbox>
<entry accept="directory">
<label>Séléctionner le répertoire de destination :</label>
<variable>FILE_DIRECTORY</variable>
</entry>
</hbox>
<hbox>
<button>
<input file stock="gtk-open"></input><label>Séléctionner</label>
<action type="fileselect">FILE_DIRECTORY</action>
</button>
</hbox>
</vbox>
<vbox>
<text>
<label>Paramètre de rangement :</label>
</text>
<radiobutton active="true">
<label>Artist/</label>
<variable>trie1</variable>
</radiobutton>
<radiobutton active="true">
<label>Album/</label>
<variable>trie2</variable>
</radiobutton>
<radiobutton active="true">
<label>Genre/</label>
<variable>trie3</variable>
</radiobutton>
<radiobutton active="true">
<label>Artiste/Album/</label>
<variable>trie4</variable>
</radiobutton>
<radiobutton active="true">
<label>Artiste/Genre/</label>
<variable>trie5</variable>
</radiobutton>
<radiobutton active="true">
<label>Genre/Artiste/</label>
<variable>trie6</variable>
</radiobutton>
<radiobutton active="true">
<label>Genre/Album/</label>
<variable>trie7</variable>
</radiobutton>
<radiobutton active="true">
<label>Genre/Artiste/Album/</label>
<variable>trie8</variable>
</radiobutton>
<radiobutton active="true">
<label>Aucun</label>
<variable>trie9</variable>
</radiobutton>
</vbox>
<vbox>
<text>
<label>Paramètre du nom du mp3 :</label>
</text>
<radiobutton active="true">
<label>titre</label>
<variable>nom1</variable>
</radiobutton>
<radiobutton active="true">
<label>track - titre</label>
<variable>nom2</variable>
</radiobutton>
<radiobutton active="true">
<label>artist - titre</label>
<variable>nom3</variable>
</radiobutton>
<radiobutton active="true">
<label>album - titre</label>
<variable>nom4</variable>
</radiobutton>
<radiobutton active="true">
<label>track - artist - titre</label>
<variable>nom5</variable>
</radiobutton>
<radiobutton active="true">
<label>track - album - titre</label>
<variable>nom6</variable>
</radiobutton>
<radiobutton active="true">
<label>artist - album - titre</label>
<variable>nom7</variable>
</radiobutton>
<radiobutton active="true">
<label>track - artist - album - titre</label>
<variable>nom8</variable>
</radiobutton>
</vbox>
</notebook>
<hbox>
<button ok></button>
<button cancel></button>
</hbox>
</vbox>
</window>
'
# Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
# Créer les variables shell
eval $VARIABLES
if [ "$EXIT" = "OK" ]; then
{
# Définition de la variable de trie
if [ "$trie1" = "true" ]; then
{
TRIE="1"
}
elif [ "$trie2" = "true" ]; then
{
TRIE="2"
}
elif [ "$trie3" = "true" ]; then
{
TRIE="3"
}
elif [ "$trie4" = "true" ]; then
{
TRIE="4"
}
elif [ "$trie5" = "true" ]; then
{
TRIE="5"
}
elif [ "$trie6" = "true" ]; then
{
TRIE="6"
}
elif [ "$trie7" = "true" ]; then
{
TRIE="7"
}
elif [ "$trie8" = "true" ]; then
{
TRIE="8"
}
elif [ "$trie9" = "true" ]; then
{
TRIE="9"
}
fi
#Définition des variables pour l'affichage du nom
if [ "$nom1" = "true" ]; then
{
NOM="1"
}
elif [ "$nom2" = "true" ]; then
{
NOM="2"
}
elif [ "$nom3" = "true" ]; then
{
NOM="3"
}
elif [ "$nom4" = "true" ]; then
{
NOM="4"
}
elif [ "$nom5" = "true" ]; then
{
NOM="5"
}
elif [ "$nom6" = "true" ]; then
{
NOM="6"
}
elif [ "$nom7" = "true" ]; then
{
NOM="7"
}
elif [ "$nom8" = "true" ]; then
{
NOM="8"
}
fi
#Définition du répertoire
REP=$FILE_DIRECTORY
#Création du fichion de configuration
echo "Chemin=$REP">~/.T1000-tag
echo "Trie=$TRIE">>~/.T1000-tag
echo "Nom=$NOM">>~/.T1000-tag
}
fi
T1000-tag
exit 0
}
fi
# Fichier chargé complétement?
export MAIN_DIALOG='
<window title="Attention" icon-name="gtk-dialog-warning" resizable="false" window_position="1">
<vbox>
<frame Attention>
<text>
<label>Merci de lancer le chargement de la musique avant de continuer T1000-tag</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
# Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
# Créer les variables shell
eval $VARIABLES
### Sélection du dernier fichier flv présent dans /tmp/
file=$(ls -lt /tmp/Flash* | cut -d " " -f8 | head -n1)
# OK
if [ "$EXIT" = "OK" ]; then
{
##Fichier existant ?
if [ -e "$file" ]; then
{
### Chargement du fichier test
export MAIN_DIALOG='
<window title="Téléchargement" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Progress :>
<text>
<label>Cette étape peut prendre plus ou moin de temps selon votre connexion.</label>
</text>
<progressbar>
<label>Téléchargement en cours ...</label>
<input>i=33.33333333 ; echo $i</input>
</progressbar>
</frame>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG 2>/dev/null &
var=$(ls -lt /tmp/Flash* | cut -d " " -f5 | head -n1)
(
until [ "$var" = "$var1" ]
do
var1=$var
sleep 2
var=$(ls -lt /tmp/Flash* | cut -d " " -f5 | head -n1)
done
)
killall gtkdialog
export MAIN_DIALOG='
<window title="Conversion Audio" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Progress :>
<text>
<label>Cette étape peut prendre plus ou moin de temps selon la durée de la chanson.</label>
</text>
<progressbar>
<label>Conversion Audio en cours ...</label>
<input>i=66.6666666 ; echo $i</input>
</progressbar>
</frame>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG 2>/dev/null &
### Copie du fichier de /tmp a /home/MP3/
cp $file /tmp/conv/conv.flv
### Conversion FLV->MP3
mplayer -dumpaudio -dumpfile /tmp/conv/conv.mp3 /tmp/conv/conv.flv
### supression du flv
rm -f /tmp/conv/conv.flv
### Tag
#### Génération du PUID du mp3
label="Génération de l'empreinte audio"
PUID=$(genpuid $key /tmp/conv/conv.mp3 | grep " puid: " | sed -e 's/.*puid: //')
#### Récupération des tags avec Musicbrainz©
wget -O /tmp/conv/.PUID http://musicbrainz.org/show/puid/?puid=$PUID
#### Vérification des tags
killall gtkdialog
export MAIN_DIALOG='
<window title="'"$label"'" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Progress :>
<text>
<label>Cette étape peut prendre plus ou moin de temps selon la durée de la chanson.</label>
</text>
<progressbar>
<label>'"$label"'</label>
<input>i=99.9999999; echo $i</input>
</progressbar>
</frame>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG 2>/dev/null &
verif=$(cat /tmp/conv/.PUID | grep "This <" | sed -e 's/.*<strong>//' | sed -e 's/<\/strong>.*//')
if [ "$verif" = "PUID" ]; then
{
##### Tag non trouvé sur Musicbrainz©
killall gtkdialog
export MAIN_DIALOG='
<window title="Tag non trouvé" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Info :>
<text>
<label>Tag non trouvé sur Musicbrainz©. Que faire rentrez les tag :</label>
</text>
</frame>
<hbox>
<button>
<input file icon="emblem-draft">"Manuellement"</input><label>Manuellement</label>
</button>
<button>
<input file icon="emblem-web">Via la CDDB</input><label>Via la base de données CDDB</label>
</button>
</hbox>
</vbox>
</window>
'
# Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
# Créer les variables shell
eval $VARIABLES
if [ "$EXIT" = "Via la base de données CDDB" ]; then
{
###### Tagage avec lltag (ID3 v1)
label="Entrer le nom de l'artiste ou l'album puis laissez vous guider:"
export MAIN_DIALOG='
<window title="Recherche CDDB" icon-name="help" resizable="false" window_position="1">
<vbox>
<text>
<label>'"$label"'</label>
</text>
<entry>
<variable>cddb</variable>
</entry>
<button ok></button>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
###### Lancement de lltag dans un terminal
xterm -geometry 170x60 -sb -rightbar -hold -e lltag --cddb-query "$cddb" /tmp/conv/conv.mp3
use_lltag="1"
}
elif [ "$EXIT" = "Manuellement" ]; then
{
###### Tagage manuel
export MAIN_DIALOG='
<window title="Rentrer les tags manuellement" icon-name="help" resizable="false" window_position="1">
<vbox>
<hbox>
<text>
<label>Artiste :</label>
</text>
<entry>
<variable>martiste</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Album : </label>
</text>
<entry>
<variable>malbum</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Track : </label>
</text>
<entry>
<variable>mtrack</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Genre : </label>
</text>
<combobox>
<variable>mgenre</variable>
<item>Blues</item>
<item>A Cappella</item>
<item>Acid</item>
<item>Acid Punk</item>
<item>Acoustic</item>
<item>Alternative</item>
<item>AlternRock</item>
<item>Ambient</item>
<item>Anime</item>
<item>Avantgarde</item>
<item>Ballad</item>
<item>Bass</item>
<item>Beat</item>
<item>Bebob</item>
<item>Big Band</item>
<item>Black Metal</item>
<item>Bluegrass</item>
<item>Booty Bass</item>
<item>BritPop</item>
<item>Cabaret</item>
<item>Celtic</item>
<item>Chamber Music</item>
<item>Chanson</item>
<item>Chorus</item>
<item>Christian Gangsta Rap</item>
<item>Christian Rap</item>
<item>Christian Rock</item>
<item>Classic Rock</item>
<item>Classical</item>
<item>Club</item>
<item>Club-House</item>
<item>Comedy</item>
<item>Contemporary Christian</item>
<item>Country</item>
<item>Crossover</item>
<item>Cult</item>
<item>Dance</item>
<item>Dance Hall</item>
<item>Darkwave</item>
<item>Death Metal</item>
<item>Disco</item>
<item>Dream</item>
<item>Drum & Bass</item>
<item>Drum Solo</item>
<item>Duet</item>
<item>Easy Listening</item>
<item>Electronic</item>
<item>Ethnic</item>
<item>Euro-House</item>
<item>Euro-Techno</item>
<item>Eurodance</item>
<item>Fast Fusion</item>
<item>Folk</item>
<item>Folk-Rock</item>
<item>Folklore</item>
<item>Freestyle</item>
<item>Funk</item>
<item>Fusion</item>
<item>Game</item>
<item>Gangsta Rap</item>
<item>Goa</item>
<item>Gospel</item>
<item>Gothic</item>
<item>Gothic Rock</item>
<item>Grunge</item>
<item>Hard Rock</item>
<item>Hardcore</item>
<item>Heavy Metal</item>
<item>Hip-Hop</item>
<item>House</item>
<item>Humour</item>
<item>Indie</item>
<item>Industrial</item>
<item>Instrumental</item>
<item>Instrumental Pop</item>
<item>Instrumental Rock</item>
<item>Jazz</item>
<item>Jazz+Funk</item>
<item>JPop</item>
<item>Jungle</item>
<item>Latin</item>
<item>Lo-Fi</item>
<item>Meditative</item>
<item>Merengue</item>
<item>Metal</item>
<item>Musical</item>
<item>National Folk</item>
<item>Native American</item>
<item>Negerpunk</item>
<item>New Age</item>
<item>New Wave</item>
<item>Noise</item>
<item>Oldies</item>
<item>Opera</item>
<item>Other</item>
<item>Polka</item>
<item>Polsk Punk</item>
<item>Pop</item>
<item>Pop / Funk</item>
<item>Pop-Folk</item>
<item>Porn Groove</item>
<item>Power Ballad</item>
<item>Pranks</item>
<item>Primus</item>
<item>Progressive Rock</item>
<item>Psychedelic</item>
<item>Psychedelic Rock</item>
<item>Punk</item>
<item>Punk Rock</item>
<item>R&B</item>
<item>Rap</item>
<item>Rave</item>
<item>Reggae</item>
<item>Retro</item>
<item>Revival</item>
<item>Rhythmic Soul</item>
<item>Rock</item>
<item>Rock & Roll</item>
<item>Rock/Pop</item>
<item>Salsa</item>
<item>Samba</item>
<item>Satire</item>
<item>Showtunes</item>
<item>Ska</item>
<item>Slow Jam</item>
<item>Slow Rock</item>
<item>Sonata</item>
<item>Soul</item>
<item>Sound Clip</item>
<item>Soundtrack</item>
<item>Southern Rock</item>
<item>Space</item>
<item>Speech</item>
<item>Swing</item>
<item>Symphonic Rock</item>
<item>Symphony</item>
<item>Synthpop</item>
<item>Tango</item>
<item>Techno</item>
<item>Techno-Industrial</item>
<item>Terror</item>
<item>Thrash Metal</item>
<item>Top 40</item>
<item>Trailer</item>
<item>Trance</item>
<item>Tribal</item>
<item>Trip-Hop</item>
<item>Vocal</item>
</combobox>
</hbox>
<hbox>
<text>
<label>Titre : </label>
</text>
<entry>
<variable>mtitre</variable>
</entry>
</hbox>
<button ok></button>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
###### Mise en majuscule de la première lettre de chaque variable (plus propre)
martiste=$(echo "$martiste" | sed 's/^./\u&/' | sed -e 's/\//-/g')
malbum=$(echo "$malbum" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mgenre=$(echo "$mgenre" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mtitre=$(echo "$mtitre" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mtrack=$(echo "$mtrack" | sed 's/^./\u&/' | sed -e 's/\//-/g')
eyeD3 -a "$martiste" -A "$malbum" -t "$mtitre" -G "$mgenre" -n "$mbtrack" /tmp/conv/conv.mp3
}
fi
}
else
{
##### Tag trouvé sur Musicbrainz©
##### Définition des variables
mbartist=$(cat /tmp/conv/.PUID | grep "<table class=\"artisttitle\">" | sed -e 's/.*artist page">//g' | sed -e 's/<\/a.*//' | sed -e "s/'/'/g" | head -n1 | sed -e 's/\//-/g')
mbalbum=$(cat /tmp/conv/.PUID | grep "/release/" | sed -e 's/.*">//g' | sed -e 's/<\/a.*//' | sed -e "s/'/'/g" | head -n1 | sed -e 's/\//-/g')
mbtitre=$(cat /tmp/conv/.PUID | grep "/track/" | sed -e 's/.*">//g' | sed -e 's/<\/a.*//' | sed -e "s/'/'/g" | head -n1 | sed -e 's/\//-/g')
mbtrack=$(cat /tmp/conv/.PUID | grep "no\">" | sed -e 's/.*">//g' | sed -e 's/<\/t.*//' | sed -e "s/'/'/g" | head -n1 | sed -e 's/\//-/g')
##### Affichage des Tags trouvés
killall gtkdialog
export MAIN_DIALOG='
<window title="tag trouvé sur Musicbrainz©" icon-name="help" resizable="false" window_position="1">
<vbox>
<hbox>
<frame Artiste : >
<text>
<label># '"$mbartist"'</label>
</text>
</frame>
</hbox>
<hbox>
<frame Album : >
<text>
<label># '"$mbalbum"'</label>
</text>
</frame>
</hbox>
<hbox>
<frame Titre : >
<text>
<label># '"$mbtitre"'</label>
</text>
</frame>
</hbox>
<hbox>
<frame Track : >
<text>
<label># '"$mbtrack"'</label>
</text>
</frame>
</hbox>
<hbox>
<frame Les tags de Musibrainz© sont conforme ?>
<button yes></button>
<button no></button>
</frame>
</hbox>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
##### Vérification des Tags
if [ "$EXIT" = "Yes" ]; then
{
###### Tag conforme puis définition du Genre (pas donné par Musicbrainz©)
export MAIN_DIALOG='
<window title="Entrez le genre" icon-name="help" resizable="false" window_position="1">
<vbox>
<frame Entrez le genre>
<combobox>
<variable>mgenre</variable>
<item>Blues</item>
<item>A Cappella</item>
<item>Acid</item>
<item>Acid Punk</item>
<item>Acoustic</item>
<item>Alternative</item>
<item>AlternRock</item>
<item>Ambient</item>
<item>Anime</item>
<item>Avantgarde</item>
<item>Ballad</item>
<item>Bass</item>
<item>Beat</item>
<item>Bebob</item>
<item>Big Band</item>
<item>Black Metal</item>
<item>Bluegrass</item>
<item>Booty Bass</item>
<item>BritPop</item>
<item>Cabaret</item>
<item>Celtic</item>
<item>Chamber Music</item>
<item>Chanson</item>
<item>Chorus</item>
<item>Christian Gangsta Rap</item>
<item>Christian Rap</item>
<item>Christian Rock</item>
<item>Classic Rock</item>
<item>Classical</item>
<item>Club</item>
<item>Club-House</item>
<item>Comedy</item>
<item>Contemporary Christian</item>
<item>Country</item>
<item>Crossover</item>
<item>Cult</item>
<item>Dance</item>
<item>Dance Hall</item>
<item>Darkwave</item>
<item>Death Metal</item>
<item>Disco</item>
<item>Dream</item>
<item>Drum & Bass</item>
<item>Drum Solo</item>
<item>Duet</item>
<item>Easy Listening</item>
<item>Electronic</item>
<item>Ethnic</item>
<item>Euro-House</item>
<item>Euro-Techno</item>
<item>Eurodance</item>
<item>Fast Fusion</item>
<item>Folk</item>
<item>Folk-Rock</item>
<item>Folklore</item>
<item>Freestyle</item>
<item>Funk</item>
<item>Fusion</item>
<item>Game</item>
<item>Gangsta Rap</item>
<item>Goa</item>
<item>Gospel</item>
<item>Gothic</item>
<item>Gothic Rock</item>
<item>Grunge</item>
<item>Hard Rock</item>
<item>Hardcore</item>
<item>Heavy Metal</item>
<item>Hip-Hop</item>
<item>House</item>
<item>Humour</item>
<item>Indie</item>
<item>Industrial</item>
<item>Instrumental</item>
<item>Instrumental Pop</item>
<item>Instrumental Rock</item>
<item>Jazz</item>
<item>Jazz+Funk</item>
<item>JPop</item>
<item>Jungle</item>
<item>Latin</item>
<item>Lo-Fi</item>
<item>Meditative</item>
<item>Merengue</item>
<item>Metal</item>
<item>Musical</item>
<item>National Folk</item>
<item>Native American</item>
<item>Negerpunk</item>
<item>New Age</item>
<item>New Wave</item>
<item>Noise</item>
<item>Oldies</item>
<item>Opera</item>
<item>Other</item>
<item>Polka</item>
<item>Polsk Punk</item>
<item>Pop</item>
<item>Pop / Funk</item>
<item>Pop-Folk</item>
<item>Porn Groove</item>
<item>Power Ballad</item>
<item>Pranks</item>
<item>Primus</item>
<item>Progressive Rock</item>
<item>Psychedelic</item>
<item>Psychedelic Rock</item>
<item>Punk</item>
<item>Punk Rock</item>
<item>R&B</item>
<item>Rap</item>
<item>Rave</item>
<item>Reggae</item>
<item>Retro</item>
<item>Revival</item>
<item>Rhythmic Soul</item>
<item>Rock</item>
<item>Rock & Roll</item>
<item>Rock/Pop</item>
<item>Salsa</item>
<item>Samba</item>
<item>Satire</item>
<item>Showtunes</item>
<item>Ska</item>
<item>Slow Jam</item>
<item>Slow Rock</item>
<item>Sonata</item>
<item>Soul</item>
<item>Sound Clip</item>
<item>Soundtrack</item>
<item>Southern Rock</item>
<item>Space</item>
<item>Speech</item>
<item>Swing</item>
<item>Symphonic Rock</item>
<item>Symphony</item>
<item>Synthpop</item>
<item>Tango</item>
<item>Techno</item>
<item>Techno-Industrial</item>
<item>Terror</item>
<item>Thrash Metal</item>
<item>Top 40</item>
<item>Trailer</item>
<item>Trance</item>
<item>Tribal</item>
<item>Trip-Hop</item>
<item>Vocal</item>
</combobox>
</frame>
<button ok></button>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
eyeD3 -a "$mbartist" -A "$mbalbum" -t "$mbtitre" -G "$mgenre" -n "$mbtrack" /tmp/conv/conv.mp3
}
elif [ "$EXIT" = "No" ]; then
{
###### Tag non conforme
export MAIN_DIALOG='
<window title="Tag non trouvé" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Info :>
<text>
<label>Tag non trouvé sur Musicbrainz©. Que faire, rentrer les tag :</label>
</text>
</frame>
<hbox>
<button>
<input file icon="emblem-draft">"Manuellement"</input><label>Manuellement</label>
</button>
<button>
<input file icon="emblem-web">Via la CDDB</input><label>Via la base de données CDDB</label>
</button>
</hbox>
</vbox>
</window>
'
# Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
# Créer les variables shell
eval $VARIABLES
if [ "$EXIT" = "Via la base de données CDDB" ]; then
{
###### Tagage avec lltag (ID3 v1)
label="Entrer le nom de l'artiste ou l'album puis laissez vous guider:"
export MAIN_DIALOG='
<window title="Recherche CDDB" icon-name="help" resizable="false" window_position="1">
<vbox>
<text>
<label>'"$label"'</label>
</text>
<entry>
<variable>cddb</variable>
</entry>
<button ok></button>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
###### Lancement de lltag dans un terminal
xterm -geometry 170x60 -sb -rightbar -hold -e lltag --cddb-query "$cddb" /tmp/conv/conv.mp3
use_lltag="1"
}
elif [ "$EXIT" = "Manuellement" ]; then
{
###### Tagage manuel
export MAIN_DIALOG='
<window title="Rentré les tags manuellement" icon-name="help" resizable="false" window_position="1">
<vbox>
<hbox>
<text>
<label>Artiste :</label>
</text>
<entry>
<variable>martiste</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Album : </label>
</text>
<entry>
<variable>malbum</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Track : </label>
</text>
<entry>
<variable>mtrack</variable>
</entry>
</hbox>
<hbox>
<text>
<label>Genre : </label>
</text>
<combobox>
<variable>mgenre</variable>
<item>Blues</item>
<item>A Cappella</item>
<item>Acid</item>
<item>Acid Punk</item>
<item>Acoustic</item>
<item>Alternative</item>
<item>AlternRock</item>
<item>Ambient</item>
<item>Anime</item>
<item>Avantgarde</item>
<item>Ballad</item>
<item>Bass</item>
<item>Beat</item>
<item>Bebob</item>
<item>Big Band</item>
<item>Black Metal</item>
<item>Bluegrass</item>
<item>Booty Bass</item>
<item>BritPop</item>
<item>Cabaret</item>
<item>Celtic</item>
<item>Chamber Music</item>
<item>Chanson</item>
<item>Chorus</item>
<item>Christian Gangsta Rap</item>
<item>Christian Rap</item>
<item>Christian Rock</item>
<item>Classic Rock</item>
<item>Classical</item>
<item>Club</item>
<item>Club-House</item>
<item>Comedy</item>
<item>Contemporary Christian</item>
<item>Country</item>
<item>Crossover</item>
<item>Cult</item>
<item>Dance</item>
<item>Dance Hall</item>
<item>Darkwave</item>
<item>Death Metal</item>
<item>Disco</item>
<item>Dream</item>
<item>Drum & Bass</item>
<item>Drum Solo</item>
<item>Duet</item>
<item>Easy Listening</item>
<item>Electronic</item>
<item>Ethnic</item>
<item>Euro-House</item>
<item>Euro-Techno</item>
<item>Eurodance</item>
<item>Fast Fusion</item>
<item>Folk</item>
<item>Folk-Rock</item>
<item>Folklore</item>
<item>Freestyle</item>
<item>Funk</item>
<item>Fusion</item>
<item>Game</item>
<item>Gangsta Rap</item>
<item>Goa</item>
<item>Gospel</item>
<item>Gothic</item>
<item>Gothic Rock</item>
<item>Grunge</item>
<item>Hard Rock</item>
<item>Hardcore</item>
<item>Heavy Metal</item>
<item>Hip-Hop</item>
<item>House</item>
<item>Humour</item>
<item>Indie</item>
<item>Industrial</item>
<item>Instrumental</item>
<item>Instrumental Pop</item>
<item>Instrumental Rock</item>
<item>Jazz</item>
<item>Jazz+Funk</item>
<item>JPop</item>
<item>Jungle</item>
<item>Latin</item>
<item>Lo-Fi</item>
<item>Meditative</item>
<item>Merengue</item>
<item>Metal</item>
<item>Musical</item>
<item>National Folk</item>
<item>Native American</item>
<item>Negerpunk</item>
<item>New Age</item>
<item>New Wave</item>
<item>Noise</item>
<item>Oldies</item>
<item>Opera</item>
<item>Other</item>
<item>Polka</item>
<item>Polsk Punk</item>
<item>Pop</item>
<item>Pop / Funk</item>
<item>Pop-Folk</item>
<item>Porn Groove</item>
<item>Power Ballad</item>
<item>Pranks</item>
<item>Primus</item>
<item>Progressive Rock</item>
<item>Psychedelic</item>
<item>Psychedelic Rock</item>
<item>Punk</item>
<item>Punk Rock</item>
<item>R&B</item>
<item>Rap</item>
<item>Rave</item>
<item>Reggae</item>
<item>Retro</item>
<item>Revival</item>
<item>Rhythmic Soul</item>
<item>Rock</item>
<item>Rock & Roll</item>
<item>Rock/Pop</item>
<item>Salsa</item>
<item>Samba</item>
<item>Satire</item>
<item>Showtunes</item>
<item>Ska</item>
<item>Slow Jam</item>
<item>Slow Rock</item>
<item>Sonata</item>
<item>Soul</item>
<item>Sound Clip</item>
<item>Soundtrack</item>
<item>Southern Rock</item>
<item>Space</item>
<item>Speech</item>
<item>Swing</item>
<item>Symphonic Rock</item>
<item>Symphony</item>
<item>Synthpop</item>
<item>Tango</item>
<item>Techno</item>
<item>Techno-Industrial</item>
<item>Terror</item>
<item>Thrash Metal</item>
<item>Top 40</item>
<item>Trailer</item>
<item>Trance</item>
<item>Tribal</item>
<item>Trip-Hop</item>
<item>Vocal</item>
</combobox>
</hbox>
<hbox>
<text>
<label>Titre : </label>
</text>
<entry>
<variable>mtitre</variable>
</entry>
</hbox>
<button ok></button>
</vbox>
</window>'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
###### Mise en majuscule de la première lettre de chaque variable (plus propre)
martiste=$(echo "$martiste" | sed 's/^./\u&/' | sed -e 's/\//-/g')
malbum=$(echo "$malbum" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mgenre=$(echo "$mgenre" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mtitre=$(echo "$mtitre" | sed 's/^./\u&/' | sed -e 's/\//-/g')
mtrack=$(echo "$mtrack" | sed 's/^./\u&/' | sed -e 's/\//-/g')
eyeD3 -a "$martiste" -A "$malbum" -t "$mtitre" -G "$mgenre" -n "$mbtrack" /tmp/conv/conv.mp3
}
fi
}
fi
}
fi
export MAIN_DIALOG='
<window title="Insertion terminée" icon-name="dialog-info" resizable="false" window_position="1">
<vbox>
<frame Info :>
<text>
<label>Insertion des Tag (ID3 v2.4) terminé !</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG
### Supression du fichier .PUID
rm -f /tmp/conv/.PUID
### Extraction des variables (ruse siou)
eyeD3 --rename="%Asupr1%asupr2%tsupr3%n" /tmp/conv/conv.mp3
### Définition des variables
ARTIST=$(ls -lt /tmp/conv/*.mp3 | head -n1 | sed -e 's/.*tmp\/conv\///' | sed -e 's/supr1.*//' | sed -e 's/\//-/g')
ALBUM=$(ls -lt /tmp/conv/*.mp3 | head -n1 | sed -e 's/.*tmp\/conv\///' | sed -e 's/.*supr1//' | sed -e 's/supr2.*//' | sed -e 's/\//-/g')
TITRE=$(ls -lt /tmp/conv/*.mp3 | head -n1 | sed -e 's/.*tmp\/conv\///' | sed -e 's/.*supr2//' | sed -e 's/supr3.*//' | sed -e 's/\//-/g')
NUMBER=$(ls -lt /tmp/conv/*.mp3 | head -n1 | sed -e 's/.*tmp\/conv\///' | sed -e 's/.*supr3//' | sed -e 's/.mp3.*//' | sed -e 's/\//-/g')
GENRE=$(echo $mgenre | sed -e 's/\//-/g')
MOVE=$(ls -lt /tmp/conv/*.mp3 | head -n1 | sed -e 's/.*tmp\/conv\///')
### Si on a tag avec la CDDB les variables seront modifiées afin de garder les accents correctement
if [ "$use_lltag" = "1" ];then
{
ARTIST=$(lltag -S /tmp/conv/"$MOVE" | grep "ARTIST" | sed -e 's/.*=//' | sed -e 's/\//-/g')
ALBUM=$(lltag -S /tmp/conv/"$MOVE" | grep "ALBUM" | sed -e 's/.*=//' | sed -e 's/\//-/g')
TITRE=$(lltag -S /tmp/conv/"$MOVE" | grep "TITLE" | sed -e 's/.*=//' | sed -e 's/\//-/g')
NUMBER=$(lltag -S /tmp/conv/"$MOVE" | grep "NUMBER" | sed -e 's/.*=//' | sed -e 's/\//-/g')
GENRE=$(lltag -S /tmp/conv/"$MOVE" | grep "GENRE" | sed -e 's/.*=//' | sed -e 's/\//-/g')
}
fi
### Recuperation des paramètres
dir=$(cat ~/.T1000-tag | grep "Chemin" | sed -e 's/Chemin=//')
trie=$(cat ~/.T1000-tag | grep "Trie" | sed -e 's/Trie=//')
nom=$(cat ~/.T1000-tag | grep "Nom" | sed -e 's/Nom=//')
### Création des dossiers selon la configuration
case "$trie" in
1 ) dir2="$dir/$ARTIST/";;
2 ) dir2="$dir/$ALBUM/";;
3 ) dir2="$dir/$GENRE/";;
4 ) dir2="$dir/$ARTIST/$ALBUM/";;
5 ) dir2="$dir/$ARTIST/$GENRE/";;
6 ) dir2="$dir/$GENRE/$ARTIST/";;
7 ) dir2="$dir/$GENRE/$ALBUM/";;
8 ) dir2="$dir/$GENRE/$ARTIST/$ALBUM/";;
9 ) dir2="$dir/";;
esac
mkdir -p "$dir2"
### Déplacement du mp3 dans le dossier selon la configuration
case "$nom" in
1 ) move2="$TITRE.mp3";;
2 ) move2="$NUMBER-$TITRE.mp3";;
3 ) move2="$ARTIST-$TITRE.mp3";;
4 ) move2="$ALBUM-$TITRE.mp3";;
5 ) move2="$NUMBER-$ARTIST-$TITRE.mp3";;
6 ) move2="$NUMBER-$ALBUM-$TITRE.mp3";;
7 ) move2="$ARTIST-$ALBUM-$TITRE.mp3";;
8 ) move2="$NUMBER-$ARTIST-$ALBUM-$TITRE.mp3";;
esac
mv /tmp/conv/"$MOVE" "$dir2""$move2"
export MAIN_DIALOG='
<window title="Programme terminé" icon-name="redo" resizable="false" window_position="1">
<vbox>
<frame Info :>
<text>
<label>Toute les opérations ont été effectuée avec succès la musique a été rangée dans :</label>
</text>
<text>
<label>'"$dir2$move2"'</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG
}
else
{
export MAIN_DIALOG='
<window title="Erreur" icon-name="error" resizable="false" window_position="1">
<vbox>
<frame Info :>
<text>
<label>Une erreur est survenue!</label>
</text>
</frame>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG
}
fi
}
fi
#Demande de relancement de T1000-tag
export MAIN_DIALOG='
<window title="T1000-tag" icon-name="reload" resizable="false" window_position="1">
<vbox>
<frame Question :>
<text>
<label>Relancer T1000-tag ?</label>
</text>
</frame>
<hbox>
<button yes></button>
<button no></button>
</hbox>
</vbox>
</window>
'
###### Récupérer la sortie standard de Gtkdialog
VARIABLES=`gtkdialog --program MAIN_DIALOG`
###### Créer les variables shell
eval $VARIABLES
if [ "$EXIT" = "Yes" ]; then
{
T1000-tag
}
fi
exit 0