genwebgallery

annotate genwebgallery @ 6:cb0dff8c48c6

added option --overwrite; refactored checkCreateDir; fixed HTML output; introduced exit code 3 and 4; better help output
author meillo@marmaro.de
date Fri, 23 Nov 2007 22:43:41 +0100
parents abe1e48e0708
children 6273a788c4fd
rev   line source
meillo@0 1 #!/bin/sh
meillo@0 2 #
meillo@6 3 # generates a web gallery
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@6 10 VERSION=0.4
meillo@2 11
meillo@6 12 verbose="no"
meillo@6 13 targetDir="webgallery"
meillo@6 14 overwrite="no"
meillo@6 15 index="index.html"
meillo@6 16 sizePic=800
meillo@6 17 sizeThumb=150
meillo@6 18 galleryTitle="photo gallery"
meillo@6 19 copyright=""
meillo@0 20
meillo@6 21
meillo@0 22
meillo@0 23
meillo@0 24 function checkCreateDir() {
meillo@6 25 remove="no"
meillo@6 26 if [ -e "$targetDir" ] ; then
meillo@6 27 if [ "$overwrite" = "no" ] ; then
meillo@6 28 echo "output directory '$targetDir' already exists."
meillo@6 29 echo -n "remove it? [y/n] "
meillo@6 30 read remove
meillo@6 31 fi
meillo@0 32
meillo@6 33 if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
meillo@6 34 echo "removing '$targetDir' ..."
meillo@0 35 rm -r "$targetDir"
meillo@6 36 if [ $? -ne 0 ] ; then
meillo@6 37 echo "ABORT"
meillo@6 38 exit 4
meillo@6 39 fi
meillo@0 40 else
meillo@6 41 echo "keep output directory"
meillo@6 42 echo "ABORT"
meillo@6 43 exit 3
meillo@0 44 fi
meillo@0 45 fi
meillo@6 46
meillo@0 47 mkdir -p "$targetDir"
meillo@0 48 }
meillo@0 49
meillo@0 50
meillo@0 51
meillo@6 52
meillo@0 53 function insertHeader() {
meillo@6 54 echo "
meillo@6 55 <?xml version=\"1.0\" encoding=\"utf-8\"?>
meillo@6 56 <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
meillo@6 57 \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
meillo@6 58 <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
meillo@0 59 <head>
meillo@0 60 <title>$titleName</title>
meillo@6 61 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
meillo@6 62 <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de\" />
meillo@0 63 </head>
meillo@0 64 <body>
meillo@0 65
meillo@6 66 "
meillo@0 67 }
meillo@0 68
meillo@0 69
meillo@6 70
meillo@0 71 function insertFooter() {
meillo@6 72 echo "
meillo@0 73
meillo@0 74 </body>
meillo@0 75 </html>
meillo@6 76 "
meillo@0 77 }
meillo@0 78
meillo@0 79
meillo@6 80
meillo@0 81 function log() {
meillo@6 82 if [ $verbose = "yes" ] ; then
meillo@0 83 echo "$1";
meillo@0 84 fi
meillo@0 85 }
meillo@0 86
meillo@0 87
meillo@6 88
meillo@0 89 function checkConvert() {
meillo@0 90 log "checking convert installation"
meillo@0 91 (convert -version) 2> /dev/null > /dev/null
meillo@0 92 if [ $? -ne 0 ] ; then
meillo@6 93 echo "Can not find 'convert' (package imagemagick)"
meillo@6 94 echo "ABORT"
meillo@0 95 exit 2
meillo@0 96 fi
meillo@6 97 log "convert found:"
meillo@0 98 log "`convert -version`"
meillo@0 99 }
meillo@0 100
meillo@0 101
meillo@0 102
meillo@6 103 function usage() {
meillo@6 104 echo "usage: `basename $0` [OPTIONS] FILES"
meillo@6 105 exit 1
meillo@6 106 }
meillo@0 107
meillo@0 108
meillo@6 109
meillo@6 110 function help() {
meillo@6 111 echo "`basename $0`
meillo@6 112
meillo@6 113 generates a web gallery consisting of html pages
meillo@6 114
meillo@6 115 usage: `basename $0` [OPTIONS] PICTURES
meillo@6 116
meillo@6 117 options:
meillo@6 118 --version print program version
meillo@6 119 --help display this output
meillo@6 120 -v be verbose ($verbose)
meillo@6 121 -o DIR folder where generated files go to ($targetDir)
meillo@6 122 -i FILE the name of the index file ($index)
meillo@6 123 -t TEXT title of the gallery ($galleryTitle)
meillo@6 124 -c TEXT a copyright notice ($copyright)
meillo@6 125 -ps PIXELS size of the pics ($sizePic)
meillo@6 126 -ts PIXELS size of the thumbnails ($sizeThumb)
meillo@6 127 --overwrite overwrite output directory ($overwrite)
meillo@6 128
meillo@6 129 for more information see man page: genwebgallery(1)
meillo@6 130
meillo@6 131 author: meillo@marmaro.de
meillo@6 132 homepage: http://prog.marmaro.de
meillo@6 133 "
meillo@0 134 exit 0
meillo@6 135 }
meillo@0 136
meillo@0 137
meillo@6 138
meillo@6 139
meillo@6 140 # option processing
meillo@6 141
meillo@0 142 while [ "$#" -ge 1 -a "${1:0:1}" = '-' ] ; do
meillo@0 143 case $1 in
meillo@0 144 '--version')
meillo@2 145 echo "genwebgallery version $VERSION"
meillo@0 146 exit 0
meillo@0 147 ;;
meillo@0 148 '--help')
meillo@6 149 help
meillo@0 150 ;;
meillo@0 151 '-v' | '--verbose')
meillo@6 152 verbose="yes"
meillo@0 153 shift
meillo@0 154 ;;
meillo@0 155 '-o' | '--output')
meillo@6 156 targetDir="$2"
meillo@0 157 shift
meillo@0 158 shift
meillo@0 159 ;;
meillo@0 160 '-i' | '--index')
meillo@0 161 index=$2
meillo@0 162 shift
meillo@0 163 shift
meillo@0 164 ;;
meillo@0 165 '-t' | '--title')
meillo@6 166 galleryTitle="$2"
meillo@0 167 shift
meillo@0 168 shift
meillo@0 169 ;;
meillo@0 170 '-c' | '--copyright')
meillo@0 171 copyright=$2
meillo@0 172 shift
meillo@0 173 shift
meillo@0 174 ;;
meillo@0 175 '-ps' | '--pic-size')
meillo@0 176 sizePic=$2
meillo@0 177 shift
meillo@0 178 shift
meillo@0 179 ;;
meillo@0 180 '-ts' | '--thumb-size')
meillo@0 181 sizeThumb=$2
meillo@0 182 shift
meillo@0 183 shift
meillo@0 184 ;;
meillo@6 185 '--overwrite')
meillo@6 186 overwrite="yes"
meillo@6 187 shift
meillo@6 188 ;;
meillo@0 189 *)
meillo@0 190 echo "invalid option: $1"
meillo@0 191 echo "see: `basename $0` --help"
meillo@0 192 exit 1
meillo@0 193 esac
meillo@0 194
meillo@0 195 done
meillo@0 196
meillo@0 197 if [ $# -eq 0 ] ; then
meillo@6 198 usage
meillo@0 199 fi
meillo@0 200
meillo@0 201
meillo@6 202
meillo@0 203 # verbose output
meillo@6 204 log "verbose: $verbose"
meillo@6 205 log
meillo@6 206 log "output dir: $targetDir"
meillo@6 207 log "index file: $index"
meillo@6 208 log "gallery title: $galleryTitle"
meillo@6 209 log "copyright notice: $copyright"
meillo@6 210 log "picture size: ${sizePic}px"
meillo@6 211 log "thumbnail size: ${sizeThumb}px"
meillo@6 212 log "overwrite output dir: $overwrite"
meillo@6 213 log
meillo@0 214 checkConvert
meillo@6 215 log
meillo@0 216
meillo@0 217
meillo@6 218
meillo@6 219 # generate web gallery
meillo@6 220
meillo@0 221 checkCreateDir
meillo@0 222
meillo@6 223 echo `insertHeader` > "$targetDir/$index"
meillo@6 224 if [ "$galleryTitle" != "" ] ; then
meillo@6 225 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
meillo@6 226 fi
meillo@0 227
meillo@0 228 for i in "$@" ; do
meillo@6 229 file="`basename $i`"
meillo@0 230 targetFile="$targetDir/$file.htm"
meillo@0 231 log "processing file: $file"
meillo@0 232
meillo@0 233 # generate pic page
meillo@6 234 echo `insertHeader` > "$targetFile"
meillo@6 235 if [ "$galleryTitle" != "" ] ; then
meillo@6 236 echo "<h1>$galleryTitle</h1>" >> "$targetFile"
meillo@6 237 fi
meillo@6 238 echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
meillo@6 239 if [ "$copyright" != "" ] ; then
meillo@6 240 echo "<p>$copyright</p>" >> "$targetFile"
meillo@6 241 fi
meillo@6 242 echo `insertFooter` >> "$targetFile"
meillo@0 243
meillo@0 244 # copy and resize pics
meillo@0 245 convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file"
meillo@0 246 convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file"
meillo@0 247
meillo@0 248 # generate content for index file
meillo@0 249 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
meillo@0 250 done
meillo@0 251
meillo@6 252 if [ "$copyright" != "" ] ; then
meillo@6 253 echo "<p>$copyright</p>" >> "$targetDir/$index"
meillo@6 254 fi
meillo@6 255 echo `insertFooter` >> "$targetDir/$index"