[mpd] lancer musique de n'importe où

Bonsoir!
Jusqu’à présent, je lançais les chansons souhaitées via un script, ajoutant les chansons à la playlist de mpd et les jouant. Cependant, ce script ne marche plus dernièrement. Vous faites comment vous?

Le script : [code]#!/bin/sh
#Script pour charger des musiques dans mpd

#Dans Thunar, choisir Edition > Configurer les actions personnalisées >

> Ajoutez une nouvelles entrée

Nom : Jouer dans mpd

Commande : /chemin/vers/le/script %F

Conditions d’apparition : Fichier Video, Fichier audio, Repertoires

#préciser la bibliothèque pour mpd.
#Afin de lire tous vos fichier audio, il faudra que ce soit votre home la bibliothèque

MUSDIR="/home/xavier/Musique/" # ne pas oublier le dernier /

#Ajustement pour les noms de fichier avec espace
v_=$IFS
IFS=’
'
NUM=$(mpc playlist |wc -l)
for i in $@ ; do
ZIC=$(echo “${i}” |sed “s|”$MUSDIR"||" )
mpc add "${i}"
done
mpc play $(( $NUM + 1 ))

IFS=$v_
exit[/code]

Bon, je l’ai remplacé par ça, ça fonctionne mais c’est pas hyper propre, les liens restent…
Comment feriez-vous?

[code]#!/bin/sh
#Script pour charger des musiques dans mpd

utilise un dossier temporaire

#préciser la bibliothèque pour mpd.
#Afin de lire tous vos fichier audio, il faudra que ce soit votre home la bibliothèque

MUSDIR="/home/xavier/Musique" # La bibliothèque
TEMPDIR="$MUSDIR/temp"
#c’est parti
mpc --wait update

mkdir -p $MUSDIR/temp
NUM=$(mpc playlist |wc -l)

#On vide le dossier temporaire
#rm -v $TEMPDIR/*

#Ajustement pour les noms de fichier avec espace
v_=$IFS
IFS=’

for i in $@ ; do
ln -s $i $TEMPDIR/$(basename $i)
mpc --wait update
mpc add temp/$(basename $i)
done
mpc play $(( $NUM + 1 ))

IFS=$v_
exit

[/code]

Bonjour

J’ai regardé ton script.

Une question: mpd voit les liens symboliques vers des fichiers audio?
Chez moi ca ne fonctionne pas!!!
Je n’ai pas de problème avec des dossiers symbolique mais pas les mp3 :think:

Sinon j’avais pour idée de créer dans /tmp/ comme cela le dossier est vidé à chaque redémarrage.

[quote=“limax”]Bonjour

J’ai regardé ton script.

Une question: mpd voit les liens symboliques vers des fichiers audio?
Chez moi ca ne fonctionne pas!!!
Je n’ai pas de problème avec des dossiers symbolique mais pas les mp3 :think:
.[/quote]
Bonjour,
aucun problème pour les liens vers des mp3 à l’extérieur de la bibliothèque.
J’ai ça dans la conf, peut-être que ça joue :

[quote=".mpdconf"]

If this setting is set to “yes”, MPD will discover audio files by following

symbolic links outside of the configured music_directory

follow_outside_symlinks “yes”

If this setting is set to “yes”, MPD will discover audio files by following

symbolic links inside of the configured music_directory.

follow_inside_symlinks “yes”[/quote]

Sinon Thuban désolé,rien de constructif à te proposer,
Je fais à peu près comme toi.

Chez moi, ton premier script fonctionne en remplaçant :

par :

Ce qui semble être ce que tu voulais faire au départ…

EDIT : Vu qu’il n’y a pas que thunar dans la vie :

for i in $@ ; do
    ZIC=$(cd $(dirname "${i}");pwd |sed "s|"$MUSDIR"||")/$(basename "${i}")
    mpc add "$ZIC"
done

Ainsi ça fonctionne aussi avec des chemins relatifs :wink:

j’ai réglé mon problème de lien symbolique, c’est le dossier qui n’avait pas les bon droits. J’ai donc réglé ce problème avec chmod :confused:

Sinon voici ce que j’ai fait avec un seul lien symbolique de $HOME/Musique/Musique-tmp vers /tmp/Musique-tmp

Puis on crée les liens symbolique des mp3 dans /tmp/Musique-tmp

Comme cela à chaque redémarrage de la machine le dossier est effacé et il ne reste que le lien symbolique dans $HOME/Musique/ qui pointera vers rien à chaque redémarrage.

C’est compatible bash mais pas dash

[code]#!/bin/bash
#Script pour charger des musiques dans mpd

#Ajustement pour les noms de fichier avec espace
v_=$IFS
IFS=$’\n\t’

MUSDIR="$HOME/Musique/" # ne pas oublier le dernier /
NameDirTmp="Musique-tmp"
NUM=$(mpc playlist |wc -l)

#convertion en chemin absolu
function chemabs
{
if [[ ! ${1:0:1} == “/” ]] # 1 pour $1, on commence à 0 et on ne prend que 1 caractère
then echo $PWD/$1
else echo $1
fi
}

On créer le dossier musique dans /tmp/ s’il n’existe pas

if [[ ! -d /tmp/$NameDirTmp ]]
then mkdir /tmp/$NameDirTmp
fi

#On crée le lien symbolique des dossiers
if [[ ! -d $MUSDIR/$NameDirTmp ]]
then ln -fs /tmp/$NameDirTmp $MUSDIR
fi

#On créer les liens symboliques des fichiers audio
for i in $@ ; do
ln -fs $( chemabs $i) /tmp/$NameDirTmp/
done

mpc --wait update

for i in $@ ; do
mpc add "$NameDirTmp/$(basename $i)"
done

mpc play $(( $NUM + 1 ))

IFS=$v_
exit[/code]