meillo@0: #!/bin/sh meillo@0: # meillo@6: # generates a web gallery meillo@0: # requires: ImageMagick (convert) meillo@0: # meillo@0: # meillo@marmaro.de meillo@25: # http://prog.marmaro.de/genwebgallery meillo@0: # meillo@0: meillo@0: meillo@15: PROGRAM=genwebgallery meillo@34: VERSION=0.6 meillo@2: meillo@6: verbose="no" meillo@6: targetDir="webgallery" meillo@6: overwrite="no" meillo@6: index="index.html" meillo@6: sizePic=800 meillo@6: sizeThumb=150 meillo@16: galleryTitle="" meillo@23: footer="" meillo@0: meillo@6: meillo@0: meillo@0: meillo@14: checkCreateDir() { meillo@6: remove="no" meillo@6: if [ -e "$targetDir" ] ; then meillo@6: if [ "$overwrite" = "no" ] ; then meillo@6: echo "output directory '$targetDir' already exists." meillo@15: printf "remove it? [y/n] " meillo@6: read remove meillo@6: fi meillo@0: meillo@6: if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then meillo@6: echo "removing '$targetDir' ..." meillo@0: rm -r "$targetDir" meillo@6: if [ $? -ne 0 ] ; then meillo@6: echo "ABORT" meillo@6: exit 4 meillo@6: fi meillo@0: else meillo@6: echo "keep output directory" meillo@6: echo "ABORT" meillo@6: exit 3 meillo@0: fi meillo@0: fi meillo@6: meillo@0: mkdir -p "$targetDir" meillo@0: } meillo@0: meillo@0: meillo@0: meillo@6: meillo@14: insertHeader() { meillo@6: echo " meillo@6: meillo@6: meillo@6: meillo@0: meillo@0: $titleName meillo@6: meillo@23: meillo@0: meillo@0: meillo@0: meillo@6: " meillo@0: } meillo@0: meillo@0: meillo@6: meillo@14: insertFooter() { meillo@6: echo " meillo@0: meillo@0: meillo@0: meillo@6: " meillo@0: } meillo@0: meillo@0: meillo@6: meillo@14: log() { meillo@6: if [ $verbose = "yes" ] ; then meillo@0: echo "$1"; meillo@0: fi meillo@0: } meillo@0: meillo@0: meillo@6: meillo@14: checkConvert() { meillo@0: log "checking convert installation" meillo@15: if [ ! `command -v convert` ] ; then meillo@6: echo "Can not find 'convert' (package imagemagick)" meillo@6: echo "ABORT" meillo@0: exit 2 meillo@0: fi meillo@6: log "convert found:" meillo@0: log "`convert -version`" meillo@0: } meillo@0: meillo@0: meillo@0: meillo@14: usage() { meillo@16: echo "usage: $PROGRAM [OPTIONS] PICTURES" meillo@6: exit 1 meillo@6: } meillo@0: meillo@0: meillo@6: meillo@14: help() { meillo@15: echo "$PROGRAM meillo@6: meillo@6: generates a web gallery consisting of html pages meillo@6: meillo@15: usage: $PROGRAM [OPTIONS] PICTURES meillo@6: meillo@6: options: meillo@6: --version print program version meillo@6: --help display this output meillo@6: -v be verbose ($verbose) meillo@6: -o DIR folder where generated files go to ($targetDir) meillo@6: -i FILE the name of the index file ($index) meillo@6: -t TEXT title of the gallery ($galleryTitle) meillo@23: -f TEXT footer text ($footer) meillo@15: -ps PIXELS size of the pictures ($sizePic) meillo@6: -ts PIXELS size of the thumbnails ($sizeThumb) meillo@6: --overwrite overwrite output directory ($overwrite) meillo@6: meillo@15: for more information see man page: $PROGRAM(1) meillo@6: meillo@6: author: meillo@marmaro.de meillo@23: homepage: http://prog.marmaro.de/genwebgallery meillo@6: " meillo@0: exit 0 meillo@6: } meillo@0: meillo@0: meillo@6: meillo@6: meillo@6: # option processing meillo@6: meillo@16: while [ "$#" -ge 1 ] && [ `echo "$1" | awk '{print substr($0,1,1)}'` = '-' ] ; do meillo@0: case $1 in meillo@0: '--version') meillo@15: echo "$PROGRAM version $VERSION" meillo@0: exit 0 meillo@0: ;; meillo@0: '--help') meillo@6: help meillo@0: ;; meillo@0: '-v' | '--verbose') meillo@6: verbose="yes" meillo@0: shift meillo@0: ;; meillo@0: '-o' | '--output') meillo@6: 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@6: galleryTitle="$2" meillo@0: shift meillo@0: shift meillo@0: ;; meillo@23: '-f' | '--footer') meillo@23: footer=$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@6: '--overwrite') meillo@6: overwrite="yes" meillo@6: shift meillo@6: ;; meillo@0: *) meillo@0: echo "invalid option: $1" meillo@15: echo "see: $PROGRAM --help" meillo@0: exit 1 meillo@0: esac meillo@0: meillo@0: done meillo@0: meillo@0: if [ $# -eq 0 ] ; then meillo@6: usage meillo@0: fi meillo@0: meillo@0: meillo@6: meillo@0: # verbose output meillo@6: log "verbose: $verbose" meillo@6: log meillo@6: log "output dir: $targetDir" meillo@6: log "index file: $index" meillo@6: log "gallery title: $galleryTitle" meillo@23: log "footer text: $footer" meillo@6: log "picture size: ${sizePic}px" meillo@6: log "thumbnail size: ${sizeThumb}px" meillo@6: log "overwrite output dir: $overwrite" meillo@6: log meillo@0: checkConvert meillo@6: log meillo@0: meillo@0: meillo@6: meillo@6: # generate web gallery meillo@6: meillo@0: checkCreateDir meillo@0: meillo@6: echo `insertHeader` > "$targetDir/$index" meillo@6: if [ "$galleryTitle" != "" ] ; then meillo@6: echo "

$galleryTitle

" >> "$targetDir/$index" meillo@6: fi meillo@0: meillo@0: for i in "$@" ; do meillo@6: file="`basename $i`" meillo@0: targetFile="$targetDir/$file.htm" meillo@0: log "processing file: $file" meillo@0: meillo@24: # copy and resize pics meillo@24: convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file" meillo@24: if [ $? -ne 0 ] ; then meillo@24: log " skipping" meillo@24: continue meillo@24: fi meillo@24: convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file" meillo@24: meillo@0: # generate pic page meillo@6: echo `insertHeader` > "$targetFile" meillo@6: if [ "$galleryTitle" != "" ] ; then meillo@6: echo "

$galleryTitle

" >> "$targetFile" meillo@6: fi meillo@6: echo "

\"$file\"

" >> "$targetFile" meillo@23: if [ "$footer" != "" ] ; then meillo@23: echo "

$footer

" >> "$targetFile" meillo@6: fi meillo@6: echo `insertFooter` >> "$targetFile" meillo@0: meillo@0: # generate content for index file meillo@0: echo " \"$file\"" >> "$targetDir/$index" meillo@0: done meillo@0: meillo@23: if [ "$footer" != "" ] ; then meillo@23: echo "

$footer

" >> "$targetDir/$index" meillo@6: fi meillo@6: echo `insertFooter` >> "$targetDir/$index"