Partagez ce billet sur ces sites web
Twitter Delicious Digg

Créer simplement vos slideshows sous Ubuntu

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