Script Audio Mpd


 

 

Utilité : J'ai volontairement écourté le script original. Le but de ce script est d'utiliser mpd comme un lecteur classique ( c'est à dire je clique sur une musique et mpd la joue. En effet une des limitations de mpd est qu'il ne peut jouer que ce qui se trouve dans son répertoire de musique. De plus ce script ajoute ce qui se trouve dans le répertoire de la chanson .

Fonctionnement :
- J'utilise un répertoire temporaire à l'intérieur du répertoire ou cherche Mpd de la musique.
- Je récupère le nom du fichier ainsi que le chemin du fichier
- Je récupère l'extension du fichier
- Je vérifie que l'extension est prise en charge par mpd
- J'ajoute tous ce qui est dans la repertoire de la chanson dans le repertoire temporaire
- Je fais une temporisation pour laisser du temps à Mpd pour la mise à jour de sa base
- Je joue la chanson
- Si l'extension ne correspond pas, affichage d'une boite de dialogue
d'erreur

 

#!/bin/bash
Je déclare le programme qui va traiter le script ( couramment /usr/bin/bash ), c'est obligatoire.

## Répertoire ou est stocké la musique
music="/mnt/Archives/Musique"
La variable $music est égale au répertoire Musique dans le dossier Archives qui lui même se trouve dans mnt

#### Variables ####
name=`basename "$1" `         
$name est égale au nom ( sans le chemin complet ) que l'on veut jouer ( qui lui même est intégré dans la variable $1 )
$basename est un programme qui permet de récupérer juste le nom, et pas le chemin complet  ( par exemple il récupère music.mp3 et pas /mnt/Archives/Musique/music.mp3 )


dir=`dirname "$1"`  
$dir est égale au répertoire dans lequel se trouve la musique ( par exemple il récupère /mnt/Archives/Musique et pas /mnt/Archives/Musique/music.mp3 )

ext=`echo "$name" |  awk -F. '{print $NF}' `  
$ext est égale à l'extension de la variable name ( dans l'exemple mp3 ), j'affiche le nom ( echo "$name" ) et je le transmet à la commande awk qui affiche la fin du fichier en supprimant le point ( ce qui donne mp3 )

#### Verification de l'extension ####
case "$ext" in

dans le cas ou ma variable $ext est égale à

mp3 | MP3 | ogg | OGG | flac | FLAC | wav | WAV | mp4 | mp4 )
soit mp3, soit MP3, soit etc .... je fais

### Lien ###
rm "$music/Temp/"*                 
je supprime tous ce qui trouve dans le répertoire /mnt/Archives/Musique/Temp ( j'utilise la variable $music définit au dessus, le caractère "*" signifie tout )

ln -s "$dir"/*.$ext "$music/Temp"
je fait un lien symbolique ( si on préfère un "raccourci" ) entre le répertoire ou se trouve la musique et mon dossier temporaire

fin_list=`ls "$music/Temp" | sed '$!d'`
la variable $fin_list indique le dernier morceau du répertoire temporaire ( ls liste les fichiers et envoie le résultat à sed qui affiche la dernière ligne, j'aurais pu utiliser aussi tail -1 )

### Update et tempo ###
mpc update Temp
Je dis au programme mpc de mettre à jour sa base de musique ( et donc il va voir le dossier temporaire )

## Boucle ##
while :
Tant que ( le caractère ":" indique une boucle infini, j'aurais pu utiliser (true) )

do
faire

fin_list_mpc=`mpc ls Temp | sed -n '$p' | cut -f2 -d"/" `
la variable $fin_list_mpc indique le dernier morceau retenu par mpc ( mpc ls Temp liste le contenu du dossier Temp et envoie le résultat à sed qui affiche la dernière ligne et envoie à cut qui va supprimer ce qu'il y a après le "/")

if [ "$fin_list_mpc" != "$fin_list" ] ; then sleep 0.01
Je compare les deux variables $fin_list et $fin_list_mpc, dans le cas ou elles sont différentes ( "!=" ) alors j'attends 0,01 seconde

else break
sinon je coupe la boucle

fi
fin du test

done
fin de la boucle ( retour au "do" )

### Ajout ###
mpc clear
j'efface ce qui avait été joué précédemment

mpc add Temp    
j'ajoute le répertoire les chansons à l'intérieur du répertoire Temp à mpd

## Numero de chanson ##
n=`ls "$music/Temp" | sed '/./='  | sed '/./N; s/ / /' | grep "$name" | awk -F" " '{print $1}' `
Simplement la variables $n va recherché la position de la chanson désirée dans le répertoire Temp

mpc play "$n"
Je joue la chanson numéro $n

;;
fin du test en fonction de l'extension ( soit mp3, soit MP3, soit etc ....)

*)
Dans tout les autres cas ( lorsqu'aucune extension ne correspond )

zenity --warning --text="Format non pris en charge! "
j'affiche Format non pris en charge!

exit 1
sortie du script

;;
fin du test ( tout les autres cas )

esac
fin du test complet


Plan du site Version imprimable Envoyer un mailLivre d'or


Flux Rss