genwebgallery
annotate genwebgallery @ 41:8bc7566a9086
fixed a small bug if no valid filenames are mentioned
author | meillo@marmaro.de |
---|---|
date | Thu, 12 Jun 2008 22:01:48 +0200 |
parents | 42bf012f6045 |
children | 8f69055cf7ed |
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@36 | 12 VERSION=0.7 |
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@41 | 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" |