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