genwebgallery
annotate genwebgallery @ 0:9f4fa0bc1584
initial commit
author | meillo@marmaro.de |
---|---|
date | Thu, 22 Nov 2007 21:13:25 +0100 |
parents | |
children | abe1e48e0708 |
rev | line source |
---|---|
meillo@0 | 1 #!/bin/sh |
meillo@0 | 2 # |
meillo@0 | 3 # generates a web gallery of static web pages |
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@0 | 10 targetDir="web" |
meillo@0 | 11 index="index.htm" |
meillo@0 | 12 sizePic=640 |
meillo@0 | 13 sizeThumb=200 |
meillo@0 | 14 galleryTitle="gallery title" |
meillo@0 | 15 copyright="please mind the copyright" |
meillo@0 | 16 |
meillo@0 | 17 verbose="" |
meillo@0 | 18 |
meillo@0 | 19 |
meillo@0 | 20 function checkCreateDir() { |
meillo@0 | 21 if [ -d "$targetDir" ] ; then |
meillo@0 | 22 echo "Target dir '$targetDir' already exists." |
meillo@0 | 23 echo -n "remove it? [y/n] " |
meillo@0 | 24 |
meillo@0 | 25 read remove |
meillo@0 | 26 if [ $remove = "y" ] ; then |
meillo@0 | 27 rm -r "$targetDir" |
meillo@0 | 28 echo "removing '$targetDir' ..." |
meillo@0 | 29 else |
meillo@0 | 30 exit 1 |
meillo@0 | 31 fi |
meillo@0 | 32 fi |
meillo@0 | 33 mkdir -p "$targetDir" |
meillo@0 | 34 } |
meillo@0 | 35 |
meillo@0 | 36 |
meillo@0 | 37 |
meillo@0 | 38 function insertHeader() { |
meillo@0 | 39 echo <<EOF |
meillo@0 | 40 <?xml version="1.0" encoding="utf-8"?> |
meillo@0 | 41 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
meillo@0 | 42 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
meillo@0 | 43 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
meillo@0 | 44 <head> |
meillo@0 | 45 <title>$titleName</title> |
meillo@0 | 46 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
meillo@0 | 47 <meta name="Generator" content="genwebgallery - see http://prog.marmaro.de" /> |
meillo@0 | 48 </head> |
meillo@0 | 49 <body> |
meillo@0 | 50 |
meillo@0 | 51 EOF |
meillo@0 | 52 } |
meillo@0 | 53 |
meillo@0 | 54 |
meillo@0 | 55 function insertFooter() { |
meillo@0 | 56 echo <<EOF |
meillo@0 | 57 |
meillo@0 | 58 </body> |
meillo@0 | 59 </html> |
meillo@0 | 60 EOF |
meillo@0 | 61 } |
meillo@0 | 62 |
meillo@0 | 63 |
meillo@0 | 64 function log() { |
meillo@0 | 65 if [ $verbose ] ; then |
meillo@0 | 66 echo "$1"; |
meillo@0 | 67 fi |
meillo@0 | 68 } |
meillo@0 | 69 |
meillo@0 | 70 |
meillo@0 | 71 function checkConvert() { |
meillo@0 | 72 log "checking convert installation" |
meillo@0 | 73 (convert -version) 2> /dev/null > /dev/null |
meillo@0 | 74 if [ $? -ne 0 ] ; then |
meillo@0 | 75 echo "Error: Can not find 'convert' (package imagemagick)" |
meillo@0 | 76 echo "ABORT!" |
meillo@0 | 77 exit 2 |
meillo@0 | 78 fi |
meillo@0 | 79 log "`convert -version`" |
meillo@0 | 80 } |
meillo@0 | 81 |
meillo@0 | 82 |
meillo@0 | 83 #### |
meillo@0 | 84 |
meillo@0 | 85 |
meillo@0 | 86 |
meillo@0 | 87 if [ $# -eq 0 ] ; then |
meillo@0 | 88 echo "usage: `basename $0` [OPTIONS] FILES" |
meillo@0 | 89 exit 0 |
meillo@0 | 90 fi |
meillo@0 | 91 |
meillo@0 | 92 |
meillo@0 | 93 while [ "$#" -ge 1 -a "${1:0:1}" = '-' ] ; do |
meillo@0 | 94 case $1 in |
meillo@0 | 95 '--version') |
meillo@0 | 96 echo "genwebgallery version 0.3" |
meillo@0 | 97 exit 0 |
meillo@0 | 98 ;; |
meillo@0 | 99 '--help') |
meillo@0 | 100 echo "`basename $0` |
meillo@0 | 101 |
meillo@0 | 102 generates a web gallery consisting of html pages |
meillo@0 | 103 |
meillo@0 | 104 usage: `basename $0` [OPTIONS] FILES |
meillo@0 | 105 |
meillo@0 | 106 options: |
meillo@0 | 107 --version: echo program version |
meillo@0 | 108 --help: display this output |
meillo@0 | 109 -v: be verbose |
meillo@0 | 110 -o DIR: all generated content is copied to this folder |
meillo@0 | 111 -i FILE: the name of the index file (index.htm) |
meillo@0 | 112 -t TITLE: title of the gallery |
meillo@0 | 113 -c COPYRIGHT: a copyright notice |
meillo@0 | 114 -ps PIXELS: size of the pics |
meillo@0 | 115 -ts PIXELS: size of the thumbnails |
meillo@0 | 116 |
meillo@0 | 117 author: meillo@marmaro.de |
meillo@0 | 118 homepage: http://prog.marmaro.de |
meillo@0 | 119 " |
meillo@0 | 120 exit 0 |
meillo@0 | 121 ;; |
meillo@0 | 122 '-v' | '--verbose') |
meillo@0 | 123 verbose=1 |
meillo@0 | 124 shift |
meillo@0 | 125 ;; |
meillo@0 | 126 '-o' | '--output') |
meillo@0 | 127 targetDir=$2 |
meillo@0 | 128 shift |
meillo@0 | 129 shift |
meillo@0 | 130 ;; |
meillo@0 | 131 '-i' | '--index') |
meillo@0 | 132 index=$2 |
meillo@0 | 133 shift |
meillo@0 | 134 shift |
meillo@0 | 135 ;; |
meillo@0 | 136 '-t' | '--title') |
meillo@0 | 137 galleryTitle=$2 |
meillo@0 | 138 shift |
meillo@0 | 139 shift |
meillo@0 | 140 ;; |
meillo@0 | 141 '-c' | '--copyright') |
meillo@0 | 142 copyright=$2 |
meillo@0 | 143 shift |
meillo@0 | 144 shift |
meillo@0 | 145 ;; |
meillo@0 | 146 '-ps' | '--pic-size') |
meillo@0 | 147 sizePic=$2 |
meillo@0 | 148 shift |
meillo@0 | 149 shift |
meillo@0 | 150 ;; |
meillo@0 | 151 '-ts' | '--thumb-size') |
meillo@0 | 152 sizeThumb=$2 |
meillo@0 | 153 shift |
meillo@0 | 154 shift |
meillo@0 | 155 ;; |
meillo@0 | 156 *) |
meillo@0 | 157 echo "invalid option: $1" |
meillo@0 | 158 echo "see: `basename $0` --help" |
meillo@0 | 159 exit 1 |
meillo@0 | 160 esac |
meillo@0 | 161 |
meillo@0 | 162 done |
meillo@0 | 163 |
meillo@0 | 164 if [ $# -eq 0 ] ; then |
meillo@0 | 165 echo "usage: `basename $0` [OPTIONS] FILES" |
meillo@0 | 166 exit 0 |
meillo@0 | 167 fi |
meillo@0 | 168 |
meillo@0 | 169 |
meillo@0 | 170 # verbose output |
meillo@0 | 171 log "verbose on" |
meillo@0 | 172 log "output dir is: $targetDir" |
meillo@0 | 173 log "index file is: $index" |
meillo@0 | 174 log "gallery title is: $galleryTitle" |
meillo@0 | 175 log "copyright notice is: $copyright" |
meillo@0 | 176 log "picture size is: $sizePic" |
meillo@0 | 177 log "thumbnail size is: $sizeThumb" |
meillo@0 | 178 checkConvert |
meillo@0 | 179 log "" |
meillo@0 | 180 |
meillo@0 | 181 |
meillo@0 | 182 checkCreateDir |
meillo@0 | 183 |
meillo@0 | 184 insertHeader > "$targetDir/$index" |
meillo@0 | 185 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index" |
meillo@0 | 186 |
meillo@0 | 187 for i in "$@" ; do |
meillo@0 | 188 file=`basename $i` |
meillo@0 | 189 targetFile="$targetDir/$file.htm" |
meillo@0 | 190 log "processing file: $file" |
meillo@0 | 191 |
meillo@0 | 192 # generate pic page |
meillo@0 | 193 insertHeader > "$targetFile" |
meillo@0 | 194 echo "<h1>$galleryTitle</h1>" \ |
meillo@0 | 195 "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" \ |
meillo@0 | 196 "<p>$copyright</p>" >> "$targetFile" |
meillo@0 | 197 insertFooter >> "$targetFile" |
meillo@0 | 198 |
meillo@0 | 199 # copy and resize pics |
meillo@0 | 200 convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file" |
meillo@0 | 201 convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file" |
meillo@0 | 202 |
meillo@0 | 203 # generate content for index file |
meillo@0 | 204 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index" |
meillo@0 | 205 done |
meillo@0 | 206 |
meillo@0 | 207 echo "<p>$copyright</p>" >> "$targetDir/$index" |
meillo@0 | 208 insertFooter >> "$targetDir/$index" |