genwebgallery

annotate genwebgallery @ 23:7f3cea97b789

"copyright notice" is known as "footer text" now
author meillo@marmaro.de
date Mon, 12 May 2008 12:37:14 +0200
parents 84c08287caa1
children 572f219cf0f4
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@15 10 PROGRAM=genwebgallery
meillo@15 11 VERSION=0.5
meillo@2 12
meillo@6 13 verbose="no"
meillo@6 14 targetDir="webgallery"
meillo@6 15 overwrite="no"
meillo@6 16 index="index.html"
meillo@6 17 sizePic=800
meillo@6 18 sizeThumb=150
meillo@16 19 galleryTitle=""
meillo@23 20 footer=""
meillo@0 21
meillo@6 22
meillo@0 23
meillo@0 24
meillo@14 25 checkCreateDir() {
meillo@6 26 remove="no"
meillo@6 27 if [ -e "$targetDir" ] ; then
meillo@6 28 if [ "$overwrite" = "no" ] ; then
meillo@6 29 echo "output directory '$targetDir' already exists."
meillo@15 30 printf "remove it? [y/n] "
meillo@6 31 read remove
meillo@6 32 fi
meillo@0 33
meillo@6 34 if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
meillo@6 35 echo "removing '$targetDir' ..."
meillo@0 36 rm -r "$targetDir"
meillo@6 37 if [ $? -ne 0 ] ; then
meillo@6 38 echo "ABORT"
meillo@6 39 exit 4
meillo@6 40 fi
meillo@0 41 else
meillo@6 42 echo "keep output directory"
meillo@6 43 echo "ABORT"
meillo@6 44 exit 3
meillo@0 45 fi
meillo@0 46 fi
meillo@6 47
meillo@0 48 mkdir -p "$targetDir"
meillo@0 49 }
meillo@0 50
meillo@0 51
meillo@0 52
meillo@6 53
meillo@14 54 insertHeader() {
meillo@6 55 echo "
meillo@6 56 <?xml version=\"1.0\" encoding=\"utf-8\"?>
meillo@6 57 <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
meillo@6 58 \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
meillo@6 59 <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
meillo@0 60 <head>
meillo@0 61 <title>$titleName</title>
meillo@6 62 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
meillo@23 63 <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de/genwebgallery\" />
meillo@0 64 </head>
meillo@0 65 <body>
meillo@0 66
meillo@6 67 "
meillo@0 68 }
meillo@0 69
meillo@0 70
meillo@6 71
meillo@14 72 insertFooter() {
meillo@6 73 echo "
meillo@0 74
meillo@0 75 </body>
meillo@0 76 </html>
meillo@6 77 "
meillo@0 78 }
meillo@0 79
meillo@0 80
meillo@6 81
meillo@14 82 log() {
meillo@6 83 if [ $verbose = "yes" ] ; then
meillo@0 84 echo "$1";
meillo@0 85 fi
meillo@0 86 }
meillo@0 87
meillo@0 88
meillo@6 89
meillo@14 90 checkConvert() {
meillo@0 91 log "checking convert installation"
meillo@15 92 if [ ! `command -v convert` ] ; 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@14 103 usage() {
meillo@16 104 echo "usage: $PROGRAM [OPTIONS] PICTURES"
meillo@6 105 exit 1
meillo@6 106 }
meillo@0 107
meillo@0 108
meillo@6 109
meillo@14 110 help() {
meillo@15 111 echo "$PROGRAM
meillo@6 112
meillo@6 113 generates a web gallery consisting of html pages
meillo@6 114
meillo@15 115 usage: $PROGRAM [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@23 124 -f TEXT footer text ($footer)
meillo@15 125 -ps PIXELS size of the pictures ($sizePic)
meillo@6 126 -ts PIXELS size of the thumbnails ($sizeThumb)
meillo@6 127 --overwrite overwrite output directory ($overwrite)
meillo@6 128
meillo@15 129 for more information see man page: $PROGRAM(1)
meillo@6 130
meillo@6 131 author: meillo@marmaro.de
meillo@23 132 homepage: http://prog.marmaro.de/genwebgallery
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@16 142 while [ "$#" -ge 1 ] && [ `echo "$1" | awk '{print substr($0,1,1)}'` = '-' ] ; do
meillo@0 143 case $1 in
meillo@0 144 '--version')
meillo@15 145 echo "$PROGRAM 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@23 170 '-f' | '--footer')
meillo@23 171 footer=$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@15 191 echo "see: $PROGRAM --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@23 209 log "footer text: $footer"
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@23 239 if [ "$footer" != "" ] ; then
meillo@23 240 echo "<p>$footer</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@23 252 if [ "$footer" != "" ] ; then
meillo@23 253 echo "<p>$footer</p>" >> "$targetDir/$index"
meillo@6 254 fi
meillo@6 255 echo `insertFooter` >> "$targetDir/$index"