genwebgallery

annotate genwebgallery @ 34:6a3ef869fd68

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