Raaaaaaah !! enfin il est dispo, fini les applis qui font le boulot, ici c'est un script en bash qui fait le nécessaire : générer un fichier slideshow.xml qui sera lu par Ubuntu pour afficher les photos de Tata Michelle.
#!/bin/bash
# Objectif : générer automatiquement un slideshow pour ubuntu
echo -e "SlideShow XML Autobuilder par \033[1mNikos\033[0m"
# Search for parameters
if [ $# -ne 4 ] # si le nombre de paramètres n'est pas 2
then # affiche l'usage
echo -e "\033[1mCe script nécessite deux paramétres : \033[0m"
echo -e "\t- Un dossier où sont stockées vos images \E[32;1m ~/Images/ \E[32;0m"
echo -e "\t- L'extension de vos images \E[32;1m png \E[32;0m"
echo -e "\t- Le temps d'affichage en secondes entre deux images \E[32;1m 300 \E[32;0m"
echo -e "\t- Durée de la transition \E[32;1m 2 \E[32;0m"
echo -e "\033[4mExemple\033[0m $0 ~/Images/ png"
exit 1
fi
# Parameters OK
# Check if slash is present for the folder path
case $1 in
*/)
# Slash is present nothing to do, keep continue
;;
*)
echo $1 ne comporte pas de slash à la fin. Veuillez corriger le chemin.
exit 1
;;
esac
IMAGES=($(ls -d -1 $1*.$2))
ELEMENTS=${#IMAGES[@]}
if [ ${#IMAGES[@]} -eq 0 ]
then # We have a problem here !! no image found there is an issue
echo Une erreur s''est produite durant l''éxecution du script
if [ ! -d $1 ]
then
echo $1 est introuvable existe ou ne peut être un fichier. 1>&2
exit 1
fi
echo Le script n''a pas trouvé de fichiers $2 dans le dossier $1 1>&2
exit 1
fi
echo ${#IMAGES[@]} trouvés, en cours de création du fichier slideshow 1>&2
echo Ce fichier sera placé dans le dossier $1. Attention ce script doit avoir la permission de créer un fichier dedans 1>&2
echo Le fichier background.xml va être généré.
if [ ! -d "${1}" ] ; then
echo "$1 n'est pas un dossier ou n'existe pas" >&2
exit 1
fi
if [ $3 -lt 0 ]
then
echo -e "La valeur \E[32;1m${3}\E[32;0m ne peut être utilisée comme durée avant une transition"
exit 1
fi
if [ $4 -lt 0 ]
then
echo -e "La valeur \E[32;1m${4}\E[32;0m ne peut être utilisée comme durée de transition"
exit 1
fi
touch "${1}background.xml" /dev/null 2>&1
if [ $? -gt 0 ]
then
echo -e "Le fichier $1background.xml n' a pas pu être créé, code erreur : \E[32;1m $? \E[32;0m"
exit 1
fi
# Start writing to the background.xml file, need to be optimized
echo "<background>
<starttime>
<year>$(date +%Y)</year>
<month>$(date +%m)</month>
<day>$(date +%e)</day>
<hour>$(date +%H)</hour>
<minute>$(date +%M)</minute>
<second>$(date +%S)</second>
</starttime>" >> "${1}background.xml"
# Time to do math
let ELEMENTS=${#IMAGES[@]}-1
# Loop part have fun !!!!!
for (( i = 0 ; i < ${#IMAGES[@]} ; i++ ))
do
#echo ${IMAGES[${i}]} >> "$1background.xml"
echo " <static>
<duration>${3}</duration>
<file>${IMAGES[$i]}</file>
</static>
<transition>
<duration>${4}</duration>
<from>${IMAGES[${i}]}</from>" >> "${1}background.xml"
if [ $i -eq $ELEMENTS ]
then
echo " <to>${IMAGES[0]}</to>" >> "$1background.xml"
else
echo " <to>${IMAGES[$i+1]}</to>" >> "$1background.xml"
fi
echo " </transition>" >> "$1background.xml"
done
echo "</background>" >> "$1background.xml"
echo "Génération du fichier terminé, fin du script."
J'ai testé longuement ce script (il a servi à générer mon wall d'Interfacelift) et il fonctionne plutôt bien. Si vous avez des questions c'est dans les commentaires !
Ces commentaires sont gérés par Disqus