genwebgallery
annotate genwebgallery @ 43:b526a65d5066
improved printout messages
author | meillo@marmaro.de |
---|---|
date | Mon, 23 Jun 2008 16:54:09 +0200 |
parents | 8f69055cf7ed |
children | 039f9a8b823b |
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@36 | 13 VERSION=0.7 |
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@41 | 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@0 | 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@23 | 200 footer=$2 |
meillo@0 | 201 shift |
meillo@0 | 202 shift |
meillo@0 | 203 ;; |
meillo@0 | 204 '-ps' | '--pic-size') |
meillo@0 | 205 sizePic=$2 |
meillo@0 | 206 shift |
meillo@0 | 207 shift |
meillo@0 | 208 ;; |
meillo@0 | 209 '-ts' | '--thumb-size') |
meillo@0 | 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" |