genwebgallery
annotate genwebgallery @ 14:6273a788c4fd
removed bashism
author | meillo@marmaro.de |
---|---|
date | Sat, 19 Apr 2008 11:38:29 +0200 |
parents | cb0dff8c48c6 |
children | 326bcd4e1708 |
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@14 | 24 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@14 | 53 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@14 | 71 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@14 | 81 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@14 | 89 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@14 | 103 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@14 | 110 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@14 | 142 while [ "$#" -ge 1 -a `echo "$1" | awk '{print substr($0,1,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" |