genwebgallery

annotate genwebgallery @ 0:9f4fa0bc1584

initial commit
author meillo@marmaro.de
date Thu, 22 Nov 2007 21:13:25 +0100
parents
children abe1e48e0708
rev   line source
meillo@0 1 #!/bin/sh
meillo@0 2 #
meillo@0 3 # generates a web gallery of static web pages
meillo@0 4 # requires: ImageMagick (convert)
meillo@0 5 #
meillo@0 6 # meillo@marmaro.de
meillo@0 7 #
meillo@0 8
meillo@0 9
meillo@0 10 targetDir="web"
meillo@0 11 index="index.htm"
meillo@0 12 sizePic=640
meillo@0 13 sizeThumb=200
meillo@0 14 galleryTitle="gallery title"
meillo@0 15 copyright="please mind the copyright"
meillo@0 16
meillo@0 17 verbose=""
meillo@0 18
meillo@0 19
meillo@0 20 function checkCreateDir() {
meillo@0 21 if [ -d "$targetDir" ] ; then
meillo@0 22 echo "Target dir '$targetDir' already exists."
meillo@0 23 echo -n "remove it? [y/n] "
meillo@0 24
meillo@0 25 read remove
meillo@0 26 if [ $remove = "y" ] ; then
meillo@0 27 rm -r "$targetDir"
meillo@0 28 echo "removing '$targetDir' ..."
meillo@0 29 else
meillo@0 30 exit 1
meillo@0 31 fi
meillo@0 32 fi
meillo@0 33 mkdir -p "$targetDir"
meillo@0 34 }
meillo@0 35
meillo@0 36
meillo@0 37
meillo@0 38 function insertHeader() {
meillo@0 39 echo <<EOF
meillo@0 40 <?xml version="1.0" encoding="utf-8"?>
meillo@0 41 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
meillo@0 42 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
meillo@0 43 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
meillo@0 44 <head>
meillo@0 45 <title>$titleName</title>
meillo@0 46 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
meillo@0 47 <meta name="Generator" content="genwebgallery - see http://prog.marmaro.de" />
meillo@0 48 </head>
meillo@0 49 <body>
meillo@0 50
meillo@0 51 EOF
meillo@0 52 }
meillo@0 53
meillo@0 54
meillo@0 55 function insertFooter() {
meillo@0 56 echo <<EOF
meillo@0 57
meillo@0 58 </body>
meillo@0 59 </html>
meillo@0 60 EOF
meillo@0 61 }
meillo@0 62
meillo@0 63
meillo@0 64 function log() {
meillo@0 65 if [ $verbose ] ; then
meillo@0 66 echo "$1";
meillo@0 67 fi
meillo@0 68 }
meillo@0 69
meillo@0 70
meillo@0 71 function checkConvert() {
meillo@0 72 log "checking convert installation"
meillo@0 73 (convert -version) 2> /dev/null > /dev/null
meillo@0 74 if [ $? -ne 0 ] ; then
meillo@0 75 echo "Error: Can not find 'convert' (package imagemagick)"
meillo@0 76 echo "ABORT!"
meillo@0 77 exit 2
meillo@0 78 fi
meillo@0 79 log "`convert -version`"
meillo@0 80 }
meillo@0 81
meillo@0 82
meillo@0 83 ####
meillo@0 84
meillo@0 85
meillo@0 86
meillo@0 87 if [ $# -eq 0 ] ; then
meillo@0 88 echo "usage: `basename $0` [OPTIONS] FILES"
meillo@0 89 exit 0
meillo@0 90 fi
meillo@0 91
meillo@0 92
meillo@0 93 while [ "$#" -ge 1 -a "${1:0:1}" = '-' ] ; do
meillo@0 94 case $1 in
meillo@0 95 '--version')
meillo@0 96 echo "genwebgallery version 0.3"
meillo@0 97 exit 0
meillo@0 98 ;;
meillo@0 99 '--help')
meillo@0 100 echo "`basename $0`
meillo@0 101
meillo@0 102 generates a web gallery consisting of html pages
meillo@0 103
meillo@0 104 usage: `basename $0` [OPTIONS] FILES
meillo@0 105
meillo@0 106 options:
meillo@0 107 --version: echo program version
meillo@0 108 --help: display this output
meillo@0 109 -v: be verbose
meillo@0 110 -o DIR: all generated content is copied to this folder
meillo@0 111 -i FILE: the name of the index file (index.htm)
meillo@0 112 -t TITLE: title of the gallery
meillo@0 113 -c COPYRIGHT: a copyright notice
meillo@0 114 -ps PIXELS: size of the pics
meillo@0 115 -ts PIXELS: size of the thumbnails
meillo@0 116
meillo@0 117 author: meillo@marmaro.de
meillo@0 118 homepage: http://prog.marmaro.de
meillo@0 119 "
meillo@0 120 exit 0
meillo@0 121 ;;
meillo@0 122 '-v' | '--verbose')
meillo@0 123 verbose=1
meillo@0 124 shift
meillo@0 125 ;;
meillo@0 126 '-o' | '--output')
meillo@0 127 targetDir=$2
meillo@0 128 shift
meillo@0 129 shift
meillo@0 130 ;;
meillo@0 131 '-i' | '--index')
meillo@0 132 index=$2
meillo@0 133 shift
meillo@0 134 shift
meillo@0 135 ;;
meillo@0 136 '-t' | '--title')
meillo@0 137 galleryTitle=$2
meillo@0 138 shift
meillo@0 139 shift
meillo@0 140 ;;
meillo@0 141 '-c' | '--copyright')
meillo@0 142 copyright=$2
meillo@0 143 shift
meillo@0 144 shift
meillo@0 145 ;;
meillo@0 146 '-ps' | '--pic-size')
meillo@0 147 sizePic=$2
meillo@0 148 shift
meillo@0 149 shift
meillo@0 150 ;;
meillo@0 151 '-ts' | '--thumb-size')
meillo@0 152 sizeThumb=$2
meillo@0 153 shift
meillo@0 154 shift
meillo@0 155 ;;
meillo@0 156 *)
meillo@0 157 echo "invalid option: $1"
meillo@0 158 echo "see: `basename $0` --help"
meillo@0 159 exit 1
meillo@0 160 esac
meillo@0 161
meillo@0 162 done
meillo@0 163
meillo@0 164 if [ $# -eq 0 ] ; then
meillo@0 165 echo "usage: `basename $0` [OPTIONS] FILES"
meillo@0 166 exit 0
meillo@0 167 fi
meillo@0 168
meillo@0 169
meillo@0 170 # verbose output
meillo@0 171 log "verbose on"
meillo@0 172 log "output dir is: $targetDir"
meillo@0 173 log "index file is: $index"
meillo@0 174 log "gallery title is: $galleryTitle"
meillo@0 175 log "copyright notice is: $copyright"
meillo@0 176 log "picture size is: $sizePic"
meillo@0 177 log "thumbnail size is: $sizeThumb"
meillo@0 178 checkConvert
meillo@0 179 log ""
meillo@0 180
meillo@0 181
meillo@0 182 checkCreateDir
meillo@0 183
meillo@0 184 insertHeader > "$targetDir/$index"
meillo@0 185 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
meillo@0 186
meillo@0 187 for i in "$@" ; do
meillo@0 188 file=`basename $i`
meillo@0 189 targetFile="$targetDir/$file.htm"
meillo@0 190 log "processing file: $file"
meillo@0 191
meillo@0 192 # generate pic page
meillo@0 193 insertHeader > "$targetFile"
meillo@0 194 echo "<h1>$galleryTitle</h1>" \
meillo@0 195 "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" \
meillo@0 196 "<p>$copyright</p>" >> "$targetFile"
meillo@0 197 insertFooter >> "$targetFile"
meillo@0 198
meillo@0 199 # copy and resize pics
meillo@0 200 convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file"
meillo@0 201 convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file"
meillo@0 202
meillo@0 203 # generate content for index file
meillo@0 204 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
meillo@0 205 done
meillo@0 206
meillo@0 207 echo "<p>$copyright</p>" >> "$targetDir/$index"
meillo@0 208 insertFooter >> "$targetDir/$index"