meillo@0: #!/bin/sh meillo@0: # meillo@0: # generates a web gallery of static web pages meillo@0: # requires: ImageMagick (convert) meillo@0: # meillo@0: # meillo@marmaro.de meillo@0: # meillo@0: meillo@0: meillo@0: targetDir="web" meillo@0: index="index.htm" meillo@0: sizePic=640 meillo@0: sizeThumb=200 meillo@0: galleryTitle="gallery title" meillo@0: copyright="please mind the copyright" meillo@0: meillo@0: verbose="" meillo@0: meillo@0: meillo@0: function checkCreateDir() { meillo@0: if [ -d "$targetDir" ] ; then meillo@0: echo "Target dir '$targetDir' already exists." meillo@0: echo -n "remove it? [y/n] " meillo@0: meillo@0: read remove meillo@0: if [ $remove = "y" ] ; then meillo@0: rm -r "$targetDir" meillo@0: echo "removing '$targetDir' ..." meillo@0: else meillo@0: exit 1 meillo@0: fi meillo@0: fi meillo@0: mkdir -p "$targetDir" meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: function insertHeader() { meillo@0: echo < meillo@0: meillo@0: meillo@0: meillo@0: $titleName meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: EOF meillo@0: } meillo@0: meillo@0: meillo@0: function insertFooter() { meillo@0: echo < meillo@0: meillo@0: EOF meillo@0: } meillo@0: meillo@0: meillo@0: function log() { meillo@0: if [ $verbose ] ; then meillo@0: echo "$1"; meillo@0: fi meillo@0: } meillo@0: meillo@0: meillo@0: function checkConvert() { meillo@0: log "checking convert installation" meillo@0: (convert -version) 2> /dev/null > /dev/null meillo@0: if [ $? -ne 0 ] ; then meillo@0: echo "Error: Can not find 'convert' (package imagemagick)" meillo@0: echo "ABORT!" meillo@0: exit 2 meillo@0: fi meillo@0: log "`convert -version`" meillo@0: } meillo@0: meillo@0: meillo@0: #### meillo@0: meillo@0: meillo@0: meillo@0: if [ $# -eq 0 ] ; then meillo@0: echo "usage: `basename $0` [OPTIONS] FILES" meillo@0: exit 0 meillo@0: fi meillo@0: meillo@0: meillo@0: while [ "$#" -ge 1 -a "${1:0:1}" = '-' ] ; do meillo@0: case $1 in meillo@0: '--version') meillo@0: echo "genwebgallery version 0.3" meillo@0: exit 0 meillo@0: ;; meillo@0: '--help') meillo@0: echo "`basename $0` meillo@0: meillo@0: generates a web gallery consisting of html pages meillo@0: meillo@0: usage: `basename $0` [OPTIONS] FILES meillo@0: meillo@0: options: meillo@0: --version: echo program version meillo@0: --help: display this output meillo@0: -v: be verbose meillo@0: -o DIR: all generated content is copied to this folder meillo@0: -i FILE: the name of the index file (index.htm) meillo@0: -t TITLE: title of the gallery meillo@0: -c COPYRIGHT: a copyright notice meillo@0: -ps PIXELS: size of the pics meillo@0: -ts PIXELS: size of the thumbnails meillo@0: meillo@0: author: meillo@marmaro.de meillo@0: homepage: http://prog.marmaro.de meillo@0: " meillo@0: exit 0 meillo@0: ;; meillo@0: '-v' | '--verbose') meillo@0: verbose=1 meillo@0: shift meillo@0: ;; meillo@0: '-o' | '--output') meillo@0: targetDir=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-i' | '--index') meillo@0: index=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-t' | '--title') meillo@0: galleryTitle=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-c' | '--copyright') meillo@0: copyright=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-ps' | '--pic-size') meillo@0: sizePic=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-ts' | '--thumb-size') meillo@0: sizeThumb=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: *) meillo@0: echo "invalid option: $1" meillo@0: echo "see: `basename $0` --help" meillo@0: exit 1 meillo@0: esac meillo@0: meillo@0: done meillo@0: meillo@0: if [ $# -eq 0 ] ; then meillo@0: echo "usage: `basename $0` [OPTIONS] FILES" meillo@0: exit 0 meillo@0: fi meillo@0: meillo@0: meillo@0: # verbose output meillo@0: log "verbose on" meillo@0: log "output dir is: $targetDir" meillo@0: log "index file is: $index" meillo@0: log "gallery title is: $galleryTitle" meillo@0: log "copyright notice is: $copyright" meillo@0: log "picture size is: $sizePic" meillo@0: log "thumbnail size is: $sizeThumb" meillo@0: checkConvert meillo@0: log "" meillo@0: meillo@0: meillo@0: checkCreateDir meillo@0: meillo@0: insertHeader > "$targetDir/$index" meillo@0: echo "

$galleryTitle

" >> "$targetDir/$index" meillo@0: meillo@0: for i in "$@" ; do meillo@0: file=`basename $i` meillo@0: targetFile="$targetDir/$file.htm" meillo@0: log "processing file: $file" meillo@0: meillo@0: # generate pic page meillo@0: insertHeader > "$targetFile" meillo@0: echo "

$galleryTitle

" \ meillo@0: "

\"$file\"

" \ meillo@0: "

$copyright

" >> "$targetFile" meillo@0: insertFooter >> "$targetFile" meillo@0: meillo@0: # copy and resize pics meillo@0: convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file" meillo@0: convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file" meillo@0: meillo@0: # generate content for index file meillo@0: echo " \"$file\"" >> "$targetDir/$index" meillo@0: done meillo@0: meillo@0: echo "

$copyright

" >> "$targetDir/$index" meillo@0: insertFooter >> "$targetDir/$index"