#!/bin/sh # Mieux vaut l'afficher en 130 colonnes # Mise a jour des photos ... # -------------------------- # Script de mise a jour d'un site comptenant des photos. # (c) 2002 - Nicolas Le Scouarnec - nlsn+site@free.fr - http://nlsn.free.fr # Autres logiciels pour generer des albums: # http://bins.sautret.org/ - Bins # http://puchol.com/cpg/software/cthumb/ - Cthumb # ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! # Ce script contient une partie (celle qui s'occupe de la génération des # index et des thumbnails) tiré de genethumn.sh écrit par Samuel Hocevar # et distribué sous license GPL (cf fin) http://sam.zoy.org # ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! # Principe: # --------- # Il utilise ImageMagick et genethumb (un script de Samuel Hocevar) (ici intégré) # il inclut un système de gestion des mot de passes (apache), a partir d'une # base de donnée et d'un fichier de mot de passe, et parcours les dossiers de la racine # $dbase a la recherches de dossiers contenant des image # Suggestion d'organisation de la racine du site: # ----------------------------------------------- # 1) Créer des dossiers dans lesquels on placera des sous dossiers contenant des images # 2) On peut controler les accès sur un dossier ou sur un sous dossier ou un sous-sous...dossier # 3) On peut afficher un mot de bienvenue ou un commentaire à la page d'index genéré par apache # en ajoutant les fichiers HTML ou TXT: "HEADER" et "README" # Format des fichiers pour l'authentification: # -------------------------------------------- # Le fichier de mot de passe est: .pass/all (man htpasswd pour le créer) # (le dossier .pass doit etre protégé par un .htacess) # La base de donnée (.protect) a la forme: # Indicateur Dossiers Utilisateurs # Exemple: cat < /dev/null a Anniversaires/anniv_emilie_2002 marie emilie nlsn remi pjbou b Anniversaires/anniv_marie_2002 marie emilie nlsn guillaume c Anniversaires/anniv_nico_2002 marie emilie nlsn guillaume d FHM helene remi jon nlsn e Foobar marie emilie nlsn guillaume j . helene nlsn remi ... (tous le monde) fin_exemple # Config # --------------------------------------------------------------------------- # Config générale dbase=/home/nlsn/docs/photos_site # Racine dans apache URL="http://photo.india.ath.cx" # Url pour le titre des pages HTML TAILLE_MAXI=700x700 # Taille maxi des photos PROTEGE=1 # 0 ou 1 # Active ou désactive la gestion des mots de passes ZIPFILE=1 # 0 ou 1 # Créé une archive ZIP pour chaque dossier MOGRIFY=1 # 0 ou 1 # Réduire (1), ou ne pas réduire (0) les images a la $TAILLE_MAXI THUMB=1 # 0 ou 1 # Ne pas modifier !! IMG_PAGE=1 # 0 ou 1 # Generer une page par image, avec des boutons: précedents, suivant ... LOCKED=.locked # Fichier lock indiquant a upphoto d'ignorer ce repertoire # a mettre sur les repertoires ou vous ne souhaitez pas # que l'album soit verifié/regenéré # Config de genethumb.sh THFILE=index.html # Fichier index THDIR=.xvpics # Dossier apercus THEXT=png # Format apercus (peut etre png, jpg, ...) THWIDTH=180 # Largeur maxi de l'apercu (il garde la proportionalité) THHEIGHT=135 # Hauteur maxi THCOLS=4 # Nombre de miniatures en Largeur #THTITLE # Titre des pages, défini dans la boucle Genethummb. TARGET="" # Mettre TARGET="_blank" pour ouvrir les photos dans une # nouvelle fenetre par défaut exec 3>~/log.genethumb # Infos de Debug (Mogrify/Genethumb) (mettre 3>&1 pour les afficher) # Paramètres supplémentaires , ne pas modifier NOTICE='Généré par   genethumb.sh (Samuel Hocevar) et   upphoto (Nicolas Le Scouarnec)' CSS=' img { border: 1pt; } body { background: black; color: white; font-family: Arial, Helvetica, sans-serif; font-size: 9pt; margin: 5pt; } h2 { color: white; background: black ; font-size: 14pt; } h3 { color: white; background: black ; font-size: 12pt; } a { text-decoration: none; color: yellow; } a:hover { text-decoration: none; color: yellow; } td.center { text-align: center; } td.nowrap { white-space: nowrap; } blockquote.center { text-align: center; } ' # Config en ligne # °°°°°°°°°°°°°°° if [ x"$1" = "x-help" ] then cat < "$dbase"/"$dossier"/.htaccess < "$dbase"/.pass/"$id" # Création du fichier de mots de passe spécifique au dossier echo $users|tr ' ' '\n' |while read user do grep $user "$dbase"/.pass/all >> "$dbase"/.pass/"$id" done done < .protect fi # Création de la liste des repertoires # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° cd "$dbase" find ./ -name "*.jpg"|grep -v xvpics|sed 's,\(^.*\)/.*.jpg,\1,g'|uniq|grep -v "^.$" > .repertoires # Passage de mogrify sur les nouvelles images... # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° if [ x"$MOGRIFY" = "x1" ] then while read i do cd "$dbase" cd "$i" if [ ! -e $LOCKED ] then find ./ -name "*.jpg" |while read fichier do if identify "$fichier"|sed 's/.*\ \([0-9]*x[0-9]*\)\ .*/\1/g'|grep -qv 700 # Si taille non normalisée then echo Mogrification de "$fichier" ... 1>&3 mogrify -size $TAILLE_MAXI -quality 95 -resize 700x700 "$fichier" && echo "$fichier" : réussie 1>&3 echo "Mogrifié: $fichier" > .log.mogrify fi done && echo Mogrification de $i effecutée fi done < .repertoires fi cd "$dbase" # Mise a jour des thumbnails et de la page HTML # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° # Extrait de Genethumb (cf http://sam.zoy.org) while read i do cd "$dbase" if [ ! -e "${i}"/${LOCKED} ] then # Création de l'archive zip ( a ameliorer: gerer la mise a jour du zip) # --------------------------------------------------------------------- if [ ! -e "$i"/download.zip -a x"$ZIPFILE" = "x1" ] then zip "$i"/download.zip $i/*.jpg fi cd $i # Création du dossier des miniatures # ---------------------------------- if [ ! -e "$THDIR" ] then mkdir "$THDIR" fi # Titre des pages ($i = nom du dossier absolu) THTITLE=`echo $i|sed 's,'$dbase',,g'|sed 's,\./,,g'` # - Genethumb - # # ------------------------------------------------------------------------ # Création de la page HTML listant les apercus cat > $THFILE << EOF $URL $THTILE

$URL $THTITLE

Répertoire parent $NOTICE.
Vous pouvez également télécharger toutes les images en un unique fichier zip

EOF compteur=0 # Compteur pour les colonnes # Gestion de l'index (initialisation) if [ x"$IMG_PAGE" = "x1" ] then rm -f img*.html n_index=1 ln -sf index.html img0.html fi # Création des thumbnails # ------------------------ # Liste tous les fichiers (sauf les fichiers cachés) et les mets dans l'ordre chronologique # (en se basant sur le numero d'index attribué par l'appareil numérique.) find . -type f -maxdepth 1 \! -name ".*" | sed 's,^\./,,' |sort|while read file do # on vérifie que l'image n'est pas déjà un thumbnail ou une page html, et a # une extension quelconque (à améliorer un peu) if echo "$file" | grep -v "~$" | grep -v "\.html$" | grep -qv "download.zip" then newfile="$THDIR/tn_$file.$THEXT" echo -n "* $file: " 1>&3 if [ -r "$newfile" -o "x$THUMB" = "x0" ] then echo "thumbnail already exists." 1>&3 else # Lance convert et ressort et réagit suivant le succès ou l'erreur convert -geometry ${THWIDTH}x${THHEIGHT} "$file" "$newfile" >/dev/null 2>&1 && echo done. 1>&3 || echo FAILED. 1>&3 fi if [ -r "$newfile" ] then # Supprimé toute la partie sur la gestion des coordonnées et taille qui ne # fonctionnait pas sur mon FreeBSD, a réécrire si besoin. On peut utiliser jhead. name=$(echo $file | cut -b1-20) heure=$(jhead "$file"|grep Time|sed 's%.*\([0-9]\{4\}\)\:\([0-9]\{2\}\)\:\([0-9]\{2\}\)\ \([0-9]\{2\}\)\:\([0-9]\{2\}\)\:\([0-9][0-9]\).*%Date: \4h\5, le \3/\2/\1%g') # (Sed c'est barbare) # Gestion des pages ... lien_img=$file lien_html=img${n_index}.html # Génération de pages if [ -r $newfile -a x"$IMG_PAGE" = "x1" ] # -a ! -e $lien_html ] then n1=$(expr 0$n_index + 1); suivante=img${n1}.html n2=$(expr 0$n_index - 1); precedente=img${n2}.html lien=$lien_html cat > $lien_html < $URL $THTILE $name

$URL $THTITLE

Répertoire parent Index
Précédent
Suivant
Download.zip

$file
$name
- $heure

Précédent Suivant


$NOTICE
EOF else lien=$lien_img # Si images brutes.... fi # Ajout d'une entrée a l'index. cat >> $THFILE << EOF $file
$name
EOF fi compteur=$(expr 0$compteur + 1) if [ x"$compteur" = "x$THCOLS" ] then echo " " >> $THFILE compteur=0 fi # incrémentation de l'index n_index=$(expr 0$n_index + 1) fi done # Bouclage de l'index if [ x"$IMG_PAGE" = "x1" ] then n_final=$((`ls img*.html|sed 's/.*\([0-9]\{1,4\}\).*/\1/g'|sort -nr|head -n 1` + 1)) ln -sf index.html img${n_final}.html fi echo "Genethumb a effectué la mise a jour dans $i" cat >> $THFILE << EOF EOF fi # - Genethumb - # done < .repertoires # License de genethumb.sh # ----------------------- # 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; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA