Divers‎ > ‎

Script export Rhythmbox

Ce script permet: 
- d'exporter les fichiers d'une liste de lecture
Rhythmbox vers un média
   ou un répertoire avec une liste *.m3u qui
conserve l'ordre de lecture afin de l'utiliser sur autre machine
-
de lire une liste Rhythmbox dans Totem
- d'afficher les informations
d'une liste


Posté sur http://forum.ubuntu-fr.org/viewtopic.php?id=125066

- Télécharger: http://sites.google.com/site/jovialubuntu/divers/script-export-rhythmbox/Export_playlist_rhythmbox.sh?attredirects=0&d=1
- Rendre exécutable nautilus>clic droit> propriété > onglet permissions > cocher rendre exécutable
- Lancer


#!/bin/bash
#
# export_playlist_rhytmbox.sh by Jean-Luc Tremelet o.jovial@gmail.com
# Thanks to many people who help me on Ubuntu forums to build this code
#
# 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; version 2.

# Ce script permet:
# - d'exporter les fichiers d'une liste de lecture Rhythmbox vers un média
# ou un répertoire avec une liste *.m3u qui conserve l'ordre de lecture afin de l'utiliser sur autre machine
# - de lire une liste Rhythmbox dans Totem
# - d'afficher les informations d'une liste

# Mode d'emploi: copier ce contenu dans un éditeur de texte Gedit par exemple,
# enregistrer par exemple export_playlist_rhytmbox.sh
# rendre exécutable nautilus>clic droit> propriété > onglet permissions > cocher rendre exécutable


# ATTRIBUTION VARIABLES------------------------------------------------------------

#fichxml=~/.gnome2/rhythmbox/playlists.xml #anciennement
fichxml=~/.local/share/rhythmbox/playlists.xml #pour Ubuntu 10.04
echo emplacement de votre playlist Rhythmbox : $fichxm
fichtxt=playlist.txt
ListeTxt=listeLecture.txt
Liste_lecture=listeLecture.m3u
CmdZennityList=./listeSelection.txt
ListeTag=listeTag.txt

rm $fichtxt
rm $ListeTxt
rm $Liste_lecture
rm $CmdZennityList
rm $ListeTag
rm $ListOut

# SELECTION PLAYLIST --------------------------------------------------------------


grep static $fichxml | sed -e 's/\" type="static">//' | sed -e 's/<playlist name="//'

Listchoix=`grep static $fichxml | sed -e 's/\" type="static">//' | sed -e 's/<playlist name="//'|\
zenity --list --title "Listes de lecture Rhythmbox" \
--width=300 --height=300 \
--text "" --column "Sélectionnez une liste"`

if [ "$Listchoix" = "" ];then
exit 0
fi


# on enleve les 2 espaces devant(pas compris pourquoi???)
Listchoix=${Listchoix:2}
ListName=$Listchoix
# on ajoute les apostrophes et
Listchoix=\'$Listchoix\'
echo liste choisie: "$ListName"

xmllint --shell $fichxml >$fichtxt <<EOD
cat //playlist[@name=$Listchoix]
EOD

# TRAITEMENT format xml > txt > m3u --------------------------------------------------------------


# on traite la chaine pour convertire l'url au format local, on envoie dans un fichier texte
# on utilise une instruction perl
grep '<location>' $fichtxt | sed 's/ //g'| sed -e 's/<location>file:\/\///' | sed -e 's/<\/location>//' | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;' > $ListeTxt

# Rhythmbox conserve les fichiers absents (cas fichiers supprimés, déplacé ou média amovible)
# On test l'existence des fichiers et on crée une liste .m3u
while read line
do #pour chaque
if [ -f "$line" ]
then
PathFichier="$line"
#on réecrit dans un fichier
echo "$PathFichier" >>$Liste_lecture
echo "$PathFichier"
else
echo ABSENT: $PathFichier
fi
done < $ListeTxt


# CHOIX ACTION-------------------------------------------------------------------------------------
radio1="Copiers les fichiers vers ..."
radio2="Voir la liste des fichiers"
radio3="Afficher les informations des fichiers(tag)"
radio4="Ecouter avec le lecteur Totem"
Action=$(zenity --list --title "Liste de lecture Rhythmbox" --width=400 --height=400 --text "Liste de lecture: ambiance \n23 fichiers \nQue voulez vous faire ?" --radiolist --column "Choix" --column "Action" TRUE "$radio1" FALSE "$radio2" FALSE "$radio3" FALSE "$radio4")

# AFFICHER LISTE FICHIER
if [ "$Action" = "$radio2" ] ;then
zenity --text-info --filename="$Liste_lecture" --width 640 --height 480
exit 0
fi

# AFFICHER LISTE TAG -> en recherche des instructions pour construire ce code
if [ "$Action" = "$radio3" ] ;then
echo "Opération non disponible dans cette version" >$ListeTag
zenity --text-info --title="Info audio" --filename=$ListeTag
exit 0
fi

# LIRE TOTEM
if [ "$Action" = "$radio4" ] ;then
`totem --fullscreen "$Liste_lecture" &`; exit 0
fi

# COPIER LES FICHIERS
if [ "$Action" = "$radio1" ] ;then
echo "choix: copier"
fi

# ANNULATION
if [ "$Action" = "" ] ;then
zenity --info --title="Export liste" --text="Opération annulée"
exit 0
fi

# On continue à executer le script

# REPERTOIRE CIBLE ------------------
# sélectionne le répertoire de destination des fichiers à copier - vous pouvez en créer un nouveau
if DirCible=`zenity --file-selection= --directory --title="Choix du répertoire cible" ` #--filename=$DirCible
then
echo repertoire exportation: $DirCible
else
exit 0;
fi

# SELECTION --------------------------
# suite à problème problème de caractères spéciaux on contruit une commande dans un bash
# pour chaque ligne on ajoute TRUE et des "
while read line
do
cmd="$cmd TRUE \"$line\" "
done <$Liste_lecture
echo "$cmd"
# on crée la commande de la boite de dialogue zenity de sélection
cmd="zenity --list --checklist --title \" export des fichiers de la liste multimédiat\" --text \"Selectionner les fichiers à copier vers $DirCible\" --width 800 --height 600 --column copier --column fichiers $cmd"
# on écrit le fichier bash pour l'affichage de la boite de dialogue
echo "#!/bin/bash" > $CmdZennityList
echo "$cmd" >> $CmdZennityList
# on le rend executable
chmod +x $CmdZennityList
#on l'execute
echo $CmdZennityList
if cmd=`$CmdZennityList` ; then
echo "execution cmd"
else
zenity --info --title="Export liste" --text="Opération annulée"
exit 0;
fi

# COPIE FICHIER avec liste *.m3u-------------------------------------------------------------------

# on ajoute un séparateur à la fin du résultat
cmd="$cmd|"


echo DirCible: "$DirCible"
NomList="0-Playlist-"$ListName".m3u"
ListOut="$DirCible"\/$NomList
echo Liste de sortie: "$ListOut"
# on execute une boucle sur le résultat à chaque séparateur |
# copie des fichiers suivants
echo "$cmd" | while read -d '|' line
do

# ajout du nom de fichier dans la liste *.m3u de sortie
echo `basename "$line"` >>"$ListOut"
# copie fichier vers repertoire cible
cp "$line" "$DirCible"
echo copie "$line"
done
# FIN OUVERTURE CIBLE---------------------------------------------------------------------------
zenity --question --title "Export liste" --text "Fichiers copiés sur:\n $DirCible \nCréation de la liste portable:\n $ListOut\n \n Voulez vous ouvrir le répertoire cible?"
if [ "$?" != "1" ]
then
echo ouverture nautilus
nautilus "$DirCible"
fi

# zenity --info --title=" " --text="Fin de script"
Č
ċ
ď
Export_playlist_rhythmbox.sh
(7k)
jean-luc Tremelet,
Jul 20, 2010, 2:57 AM