genwebgallery

annotate genwebgallery @ 46:b991e188f1fa

added some quotes around vars; increased to version 0.8
author meillo@marmaro.de
date Mon, 23 Jun 2008 20:05:50 +0200
parents 039f9a8b823b
children d1ad806b6ee3
rev   line source
meillo@0 1 #!/bin/sh
meillo@0 2 #
meillo@6 3 # generates a web gallery
schnalke@42 4 # requires: ImageMagick (mogrify)
schnalke@42 5 # or: resize-gd
meillo@0 6 #
meillo@0 7 # meillo@marmaro.de
meillo@25 8 # http://prog.marmaro.de/genwebgallery
meillo@0 9 #
meillo@0 10
meillo@0 11
meillo@15 12 PROGRAM=genwebgallery
meillo@46 13 VERSION=0.8
meillo@2 14
meillo@6 15 verbose="no"
meillo@6 16 targetDir="webgallery"
meillo@6 17 overwrite="no"
meillo@6 18 index="index.html"
meillo@6 19 sizePic=800
meillo@6 20 sizeThumb=150
meillo@16 21 galleryTitle=""
meillo@23 22 footer=""
meillo@0 23
schnalke@42 24 resizer=""
schnalke@42 25
meillo@6 26
meillo@0 27
meillo@0 28
meillo@14 29 checkCreateDir() {
meillo@6 30 remove="no"
meillo@6 31 if [ -e "$targetDir" ] ; then
meillo@6 32 if [ "$overwrite" = "no" ] ; then
meillo@6 33 echo "output directory '$targetDir' already exists."
meillo@15 34 printf "remove it? [y/n] "
meillo@6 35 read remove
meillo@6 36 fi
meillo@0 37
meillo@6 38 if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
meillo@6 39 echo "removing '$targetDir' ..."
meillo@0 40 rm -r "$targetDir"
meillo@6 41 if [ $? -ne 0 ] ; then
meillo@6 42 echo "ABORT"
meillo@6 43 exit 4
meillo@6 44 fi
meillo@0 45 else
meillo@6 46 echo "keep output directory"
meillo@6 47 echo "ABORT"
meillo@6 48 exit 3
meillo@0 49 fi
meillo@0 50 fi
meillo@6 51
meillo@0 52 mkdir -p "$targetDir"
meillo@0 53 }
meillo@0 54
meillo@0 55
meillo@0 56
meillo@6 57
meillo@14 58 insertHeader() {
meillo@6 59 echo "
meillo@6 60 <?xml version=\"1.0\" encoding=\"utf-8\"?>
meillo@6 61 <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
meillo@6 62 \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
meillo@6 63 <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
meillo@0 64 <head>
meillo@0 65 <title>$titleName</title>
meillo@6 66 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
meillo@23 67 <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de/genwebgallery\" />
meillo@0 68 </head>
meillo@0 69 <body>
meillo@0 70
meillo@6 71 "
meillo@0 72 }
meillo@0 73
meillo@0 74
meillo@6 75
meillo@14 76 insertFooter() {
meillo@6 77 echo "
meillo@0 78
meillo@0 79 </body>
meillo@0 80 </html>
meillo@6 81 "
meillo@0 82 }
meillo@0 83
meillo@0 84
meillo@6 85
meillo@14 86 log() {
meillo@6 87 if [ $verbose = "yes" ] ; then
meillo@0 88 echo "$1";
meillo@0 89 fi
meillo@0 90 }
meillo@0 91
meillo@0 92
meillo@6 93
schnalke@42 94 checkResizer() {
schnalke@42 95 if [ `command -v mogrify` ] ; then
meillo@43 96 log "using 'mogrify' to resize images"
schnalke@42 97 log "`mogrify -version`"
schnalke@42 98 resizer="mogrify"
schnalke@42 99 elif [ `command -v resize-gd` ] ; then
meillo@43 100 log "using 'resize-gd' to resize images"
schnalke@42 101 log "`resize-gd --version`"
schnalke@42 102 resizer="resize-gd"
schnalke@42 103 else
meillo@43 104 echo "No supported image resize program found."
meillo@43 105 echo "Supported are:"
meillo@43 106 echo "- 'mogrify' (from package 'imagemagick')"
meillo@43 107 echo "- 'resize-gd'"
meillo@6 108 echo "ABORT"
meillo@0 109 exit 2
meillo@0 110 fi
meillo@0 111 }
meillo@0 112
meillo@0 113
schnalke@42 114 # call with: resize <size> <file>
schnalke@42 115 resize() {
schnalke@42 116 if [ "$resizer" = "mogrify" ] ; then
schnalke@42 117 mogrify -resize "${1}x${1}" "$2"
schnalke@42 118 elif [ "$resizer" = "resize-gd" ] ; then
schnalke@42 119 resize-gd "$1" "$2"
schnalke@42 120 else
schnalke@42 121 echo "No resize program available."
meillo@43 122 echo
meillo@43 123 echo "It's most likely a program bug if you see this message."
schnalke@42 124 echo "Please contact the author or maintainer (see man page)."
schnalke@42 125 echo "ABORT"
schnalke@42 126 exit 2
schnalke@42 127 fi
schnalke@42 128 return "$?"
schnalke@42 129 }
schnalke@42 130
meillo@0 131
meillo@14 132 usage() {
meillo@16 133 echo "usage: $PROGRAM [OPTIONS] PICTURES"
meillo@6 134 exit 1
meillo@6 135 }
meillo@0 136
meillo@0 137
meillo@6 138
meillo@14 139 help() {
meillo@15 140 echo "$PROGRAM
meillo@6 141
meillo@6 142 generates a web gallery consisting of html pages
meillo@6 143
meillo@15 144 usage: $PROGRAM [OPTIONS] PICTURES
meillo@6 145
meillo@6 146 options:
meillo@6 147 --version print program version
meillo@6 148 --help display this output
meillo@6 149 -v be verbose ($verbose)
meillo@6 150 -o DIR folder where generated files go to ($targetDir)
meillo@6 151 -i FILE the name of the index file ($index)
meillo@6 152 -t TEXT title of the gallery ($galleryTitle)
meillo@23 153 -f TEXT footer text ($footer)
meillo@15 154 -ps PIXELS size of the pictures ($sizePic)
meillo@6 155 -ts PIXELS size of the thumbnails ($sizeThumb)
meillo@6 156 --overwrite overwrite output directory ($overwrite)
meillo@6 157
meillo@15 158 for more information see man page: $PROGRAM(1)
meillo@6 159
meillo@6 160 author: meillo@marmaro.de
meillo@23 161 homepage: http://prog.marmaro.de/genwebgallery
meillo@6 162 "
meillo@0 163 exit 0
meillo@6 164 }
meillo@0 165
meillo@0 166
meillo@6 167
meillo@6 168
meillo@6 169 # option processing
meillo@6 170
meillo@44 171 while [ "$#" -ge 1 ] && [ "`echo "$1" | awk '{print substr($0,1,1)}'`" = '-' ] ; do
meillo@0 172 case $1 in
meillo@0 173 '--version')
meillo@15 174 echo "$PROGRAM version $VERSION"
meillo@0 175 exit 0
meillo@0 176 ;;
meillo@0 177 '--help')
meillo@6 178 help
meillo@0 179 ;;
meillo@0 180 '-v' | '--verbose')
meillo@6 181 verbose="yes"
meillo@0 182 shift
meillo@0 183 ;;
meillo@0 184 '-o' | '--output')
meillo@6 185 targetDir="$2"
meillo@0 186 shift
meillo@0 187 shift
meillo@0 188 ;;
meillo@0 189 '-i' | '--index')
meillo@46 190 index="$2"
meillo@0 191 shift
meillo@0 192 shift
meillo@0 193 ;;
meillo@0 194 '-t' | '--title')
meillo@6 195 galleryTitle="$2"
meillo@0 196 shift
meillo@0 197 shift
meillo@0 198 ;;
meillo@23 199 '-f' | '--footer')
meillo@46 200 footer="$2"
meillo@0 201 shift
meillo@0 202 shift
meillo@0 203 ;;
meillo@0 204 '-ps' | '--pic-size')
meillo@46 205 sizePic="$2"
meillo@0 206 shift
meillo@0 207 shift
meillo@0 208 ;;
meillo@0 209 '-ts' | '--thumb-size')
meillo@46 210 sizeThumb="$2"
meillo@0 211 shift
meillo@0 212 shift
meillo@0 213 ;;
meillo@6 214 '--overwrite')
meillo@6 215 overwrite="yes"
meillo@6 216 shift
meillo@6 217 ;;
meillo@0 218 *)
meillo@0 219 echo "invalid option: $1"
meillo@15 220 echo "see: $PROGRAM --help"
meillo@0 221 exit 1
meillo@0 222 esac
meillo@0 223
meillo@0 224 done
meillo@0 225
meillo@0 226 if [ $# -eq 0 ] ; then
meillo@6 227 usage
meillo@0 228 fi
meillo@0 229
meillo@0 230
meillo@6 231
meillo@0 232 # verbose output
meillo@6 233 log "verbose: $verbose"
meillo@6 234 log
meillo@6 235 log "output dir: $targetDir"
meillo@6 236 log "index file: $index"
meillo@6 237 log "gallery title: $galleryTitle"
meillo@23 238 log "footer text: $footer"
meillo@6 239 log "picture size: ${sizePic}px"
meillo@6 240 log "thumbnail size: ${sizeThumb}px"
meillo@6 241 log "overwrite output dir: $overwrite"
meillo@6 242 log
schnalke@42 243 checkResizer
meillo@6 244 log
meillo@0 245
meillo@0 246
meillo@6 247
meillo@6 248 # generate web gallery
meillo@6 249
meillo@0 250 checkCreateDir
meillo@0 251
meillo@6 252 echo `insertHeader` > "$targetDir/$index"
meillo@6 253 if [ "$galleryTitle" != "" ] ; then
meillo@6 254 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
meillo@6 255 fi
meillo@0 256
meillo@0 257 for i in "$@" ; do
meillo@6 258 file="`basename $i`"
meillo@0 259 targetFile="$targetDir/$file.htm"
meillo@0 260 log "processing file: $file"
meillo@0 261
meillo@24 262 # copy and resize pics
schnalke@42 263 cp "$i" "$targetDir/$file"
schnalke@42 264 resize "$sizePic" "$targetDir/$file"
meillo@24 265 if [ $? -ne 0 ] ; then
meillo@24 266 log " skipping"
schnalke@42 267 rm "$targetDir/$file"
meillo@24 268 continue
meillo@24 269 fi
schnalke@42 270 cp "$i" "$targetDir/_$file"
schnalke@42 271 resize "$sizeThumb" "$targetDir/_$file"
meillo@24 272
meillo@0 273 # generate pic page
meillo@6 274 echo `insertHeader` > "$targetFile"
meillo@6 275 if [ "$galleryTitle" != "" ] ; then
meillo@6 276 echo "<h1>$galleryTitle</h1>" >> "$targetFile"
meillo@6 277 fi
meillo@6 278 echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
meillo@23 279 if [ "$footer" != "" ] ; then
meillo@23 280 echo "<p>$footer</p>" >> "$targetFile"
meillo@6 281 fi
meillo@6 282 echo `insertFooter` >> "$targetFile"
meillo@0 283
meillo@0 284 # generate content for index file
meillo@0 285 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
meillo@0 286 done
meillo@0 287
meillo@23 288 if [ "$footer" != "" ] ; then
meillo@23 289 echo "<p>$footer</p>" >> "$targetDir/$index"
meillo@6 290 fi
meillo@6 291 echo `insertFooter` >> "$targetDir/$index"