EDIT : Cette version est vieille et sale, voir plus loin ...
🙂
Je vous présente ce script de génération de galeries photo largement inspiré d'un tuto du «Site du zéro».
Installation :
1-Copier le script dans un fichier vide et le rendre exécutable (chmod u+x)
2-Placer le fichier obtenu dans un répertoire du PATH (→ cf
http://doc.ubuntu-fr.org/variables_d_environnement)
Utilisation :
Deux choix :
-GGalerie /ledossier/en/question [enter]
ou
-GGalerie [enter] puis renseignement du dossier à traiter
Rendu
On obtient un fichier «supergalerie.html» à la racine du dossier traité.
#!/bin/bash
IFS='
'
########################################################
#Acquisition chemin si pas déjà en argument#############
########################################################
if [[ $# = 1 ]]
then
chemin=$1
else
read -p "Chemin voulu:" chemin
fi
########################################################
#PARTIE 1###############################################
########################################################
###########generation de la liste de repertoire#########
########################################################
find "$chemin" -type d > "$chemin"/rep.txt
########################################################
########################################################
#PARTIE 2###############################################
########################################################
###########creation des dossiers mini et galerie.html###
########################################################
while read line
do
cd "$line"
ls *.jpg || ls *.JPG
if [[ "$?" = 0 ]] # si il y a du jpeg
then #alors
if [ ! -d miniatures ] ## si il n'y pas de dossier mini
then #alors
mkdir miniatures # on cree le dossier mini
fi ## is
# En-tête HTML
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma galerie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
a img { border:0; }
</style>
</head>
<body><p>' > galerie.html
fi
# Génération des miniatures et de la page
for image in $(ls *.jpg *.JPG)
do
convert "$image" -thumbnail '200x200>' miniatures/"$image"
echo '[URL='$image']<img src="miniatures/'$image'" alt="" />[/URL] ' >> galerie.html
done
# Pied de page HTML
if [ -f galerie.html ]
then
echo '</p>
</body>
</html>' >> galerie.html
fi
done < "$chemin"/rep.txt
###########################################
#PARTIE 3##################################
###########################################
##########le fichier final#################
###########################################
find "$chemin" -type f -name "galerie.html" > "$chemin"/supergal.txt
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma galerie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
a img { border:0; }
</style>
</head>
<body><p>' > "$chemin"/supergalerie.html
while read line
do
#deb test partie une miniature au hasard
line2=$(echo $line | sed "s/galerie.html/miniatures\//")
line3=$(ls $(echo $line2) | sort -R | head -n1)
line4="$line2$line3"
#fin test
echo '[URL='$line']<img src="'$line4'" alt="" />[/URL]' >> "$chemin"/supergalerie.html
done < "$chemin"/supergal.txt
###########################################
####Nettoyage##############################
###########################################
rm "$chemin"/rep.txt
rm "$chemin"/supergal.txt
# sonnette
exit
à cela vient s'ajouter pour les feignants le script de nettoyage :
A utiliser dans le répertoire concerné.
#!/bin/bash
echo "Attention !!"
echo "a utiliser à la racine du répertoire concerné"
read -p "Continuer ? (y / n )" reponse
if [[ $reponse == "n" ]]
then
exit
fi
find . -type d -iname "miniatures" -exec rm -r {} \;
find . -type f -iname "galerie.html" -delete
find . -type f -iname "supergalerie.html" -delete
echo "done"
sleep 1
exit
Je compte sur vous pour les critiques constructives (ou pas) et les idées d'améliorations.
Faudrait que j'en fasse un script nautilus, mais je commence à rester de plus en plus sur les terminaux...
🙂