Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/02/2009, à 11:30

WW

Génération de playlists pour mpd

Bonjour à tous,

  Voici un petit script qui permet de générer les playlists correspondantes au sous-dossiers de votre répertoire musical.
Il génère également des playlists générales regroupant les sous-dossiers d'un même dossier.

#!/bin/bash

# Liste des formats supportés par MPD
listeFormats="*.mp3 *.mp2 *.ogg *.flac *.wav *.au *.aiff *.aif *.m4a *.mp4 *.mpc *.amf *.dsm *.far *.gdm *.imf *.it *.med *.mod *.mtm *.s3m *.stm *.stx *.ult *.uni *.xm"

# Fichier temporaire pour parcourir le résultat de ls
listingRep="$HOME/.PlayListMPDGenerator"

# Dossier dans lequel mpd cherche les playlists
playlistsMPD=`cat $HOME/.mpdconf | grep "playlist_directory"`
playlistsMPD=`expr "$playlistsMPD" : '.*"\(.*\)"'`

# Dossier dans lequel mpd cherche la musique
music=`cat $HOME/.mpdconf | grep "music_directory"`
music=`expr "$music" : '.*"\(.*\)"'`

# traitementRepertoire prend un argument le répertoire à traiter
traitementRepertoire() {
    sousDossier="false"

    if [ "$1" = "" ]; then
        chemin=""
    else if [ "$chemin" = "" ]; then
            chemin="$1/"
        else
            chemin="$chemin$1/"
        fi
    fi

    for i in $listeFormats; do
        if [ "${i%.*}" != "*" ]; then
            echo "$chemin$i" >> "$playlistsMPD/$1.m3u"
        fi
    done

    ls > $listingRep
    cat $listingRep |   # On parcours les sous-dossiers
    while read repertoire; do
        if [ -d "$repertoire" ]; then
            sousDossier="true"
            cd "$repertoire"

            traitementRepertoire "$repertoire"

            # Création d'une playlist générale pour $1 #
            if [ -e "$playlistsMPD/$repertoire.m3u" ]; then            
                cat "$playlistsMPD/$repertoire.m3u" >> "$playlistsMPD/all_$1.m3u"
            fi

            cd ..
            chemin=`expr "$chemin" : '\(.*/\).*/'` # chemin = tous ce qui se trouve avant l'avant-dernier "/" (avant-dernier "/" compris)
        fi
    done

    if [ "$sousDossier" = "true" ]; then
        cat "$playlistsMPD/$1.m3u" >> "$playlistsMPD/all_$1.m3u" # Création de la playlist générale du répertoire courant ($1)
    fi

    if [ -e "$playlistsMPD/all_$1.m3u" ]; then
        cat "$playlistsMPD/all_$1.m3u" >> "$playlistsMPD/all.m3u" # Ajout d'élements dans la playlist générale de @
    fi
}

#~ Programme ~#
if [ -e "$playlistsMPD/all.m3u" ]; then
    rm "$playlistsMPD/all.m3u" # Suppression de la playlist générale, elle est recréée pour inclure les nouveaux éléments
fi

cd $music

traitementRepertoire ""

if [ -e "$playlistsMPD/.m3u" ]; then
    mv "$playlistsMPD/.m3u" "$playlistsMPD/Non-Classé.m3u" # La première playlist créée est celle des morceaux non classé à la racine
fi
mv "$playlistsMPD/all_.m3u" "$playlistsMPD/tout_sans_les_sous-dossiers.m3u"
rm $listingRep
echo "Génération des playlists effectuée"

Remarque : Ce script récupère des informations dans ~/.mpdconf, si vous utilisez un autre fichier de configuration il faudra modifier les variables $playlistsMPD et $music.

Pour exécuter ce script donner les permissions d'exécution via clic-droit>Propriétés>Permissions puis double-cliquer dessus.

Ou alors chmod 755 /CHEMIN/DU/SCRIPT puis ./CHEMIN/DU/SCRIPT
ou alors bash CHEMIN/DU/SCRIPT

Script pour les playlists m3u pour les autres lecteurs.

Dernière modification par WW (Le 09/04/2009, à 17:43)


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne