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"