genwebgallery

view genwebgallery @ 46:b991e188f1fa

added some quotes around vars; increased to version 0.8
author meillo@marmaro.de
date Mon, 23 Jun 2008 20:05:50 +0200
parents 039f9a8b823b
children d1ad806b6ee3
line source
1 #!/bin/sh
2 #
3 # generates a web gallery
4 # requires: ImageMagick (mogrify)
5 # or: resize-gd
6 #
7 # meillo@marmaro.de
8 # http://prog.marmaro.de/genwebgallery
9 #
12 PROGRAM=genwebgallery
13 VERSION=0.8
15 verbose="no"
16 targetDir="webgallery"
17 overwrite="no"
18 index="index.html"
19 sizePic=800
20 sizeThumb=150
21 galleryTitle=""
22 footer=""
24 resizer=""
29 checkCreateDir() {
30 remove="no"
31 if [ -e "$targetDir" ] ; then
32 if [ "$overwrite" = "no" ] ; then
33 echo "output directory '$targetDir' already exists."
34 printf "remove it? [y/n] "
35 read remove
36 fi
38 if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
39 echo "removing '$targetDir' ..."
40 rm -r "$targetDir"
41 if [ $? -ne 0 ] ; then
42 echo "ABORT"
43 exit 4
44 fi
45 else
46 echo "keep output directory"
47 echo "ABORT"
48 exit 3
49 fi
50 fi
52 mkdir -p "$targetDir"
53 }
58 insertHeader() {
59 echo "
60 <?xml version=\"1.0\" encoding=\"utf-8\"?>
61 <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
62 \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
63 <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
64 <head>
65 <title>$titleName</title>
66 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
67 <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de/genwebgallery\" />
68 </head>
69 <body>
71 "
72 }
76 insertFooter() {
77 echo "
79 </body>
80 </html>
81 "
82 }
86 log() {
87 if [ $verbose = "yes" ] ; then
88 echo "$1";
89 fi
90 }
94 checkResizer() {
95 if [ `command -v mogrify` ] ; then
96 log "using 'mogrify' to resize images"
97 log "`mogrify -version`"
98 resizer="mogrify"
99 elif [ `command -v resize-gd` ] ; then
100 log "using 'resize-gd' to resize images"
101 log "`resize-gd --version`"
102 resizer="resize-gd"
103 else
104 echo "No supported image resize program found."
105 echo "Supported are:"
106 echo "- 'mogrify' (from package 'imagemagick')"
107 echo "- 'resize-gd'"
108 echo "ABORT"
109 exit 2
110 fi
111 }
114 # call with: resize <size> <file>
115 resize() {
116 if [ "$resizer" = "mogrify" ] ; then
117 mogrify -resize "${1}x${1}" "$2"
118 elif [ "$resizer" = "resize-gd" ] ; then
119 resize-gd "$1" "$2"
120 else
121 echo "No resize program available."
122 echo
123 echo "It's most likely a program bug if you see this message."
124 echo "Please contact the author or maintainer (see man page)."
125 echo "ABORT"
126 exit 2
127 fi
128 return "$?"
129 }
132 usage() {
133 echo "usage: $PROGRAM [OPTIONS] PICTURES"
134 exit 1
135 }
139 help() {
140 echo "$PROGRAM
142 generates a web gallery consisting of html pages
144 usage: $PROGRAM [OPTIONS] PICTURES
146 options:
147 --version print program version
148 --help display this output
149 -v be verbose ($verbose)
150 -o DIR folder where generated files go to ($targetDir)
151 -i FILE the name of the index file ($index)
152 -t TEXT title of the gallery ($galleryTitle)
153 -f TEXT footer text ($footer)
154 -ps PIXELS size of the pictures ($sizePic)
155 -ts PIXELS size of the thumbnails ($sizeThumb)
156 --overwrite overwrite output directory ($overwrite)
158 for more information see man page: $PROGRAM(1)
160 author: meillo@marmaro.de
161 homepage: http://prog.marmaro.de/genwebgallery
162 "
163 exit 0
164 }
169 # option processing
171 while [ "$#" -ge 1 ] && [ "`echo "$1" | awk '{print substr($0,1,1)}'`" = '-' ] ; do
172 case $1 in
173 '--version')
174 echo "$PROGRAM version $VERSION"
175 exit 0
176 ;;
177 '--help')
178 help
179 ;;
180 '-v' | '--verbose')
181 verbose="yes"
182 shift
183 ;;
184 '-o' | '--output')
185 targetDir="$2"
186 shift
187 shift
188 ;;
189 '-i' | '--index')
190 index="$2"
191 shift
192 shift
193 ;;
194 '-t' | '--title')
195 galleryTitle="$2"
196 shift
197 shift
198 ;;
199 '-f' | '--footer')
200 footer="$2"
201 shift
202 shift
203 ;;
204 '-ps' | '--pic-size')
205 sizePic="$2"
206 shift
207 shift
208 ;;
209 '-ts' | '--thumb-size')
210 sizeThumb="$2"
211 shift
212 shift
213 ;;
214 '--overwrite')
215 overwrite="yes"
216 shift
217 ;;
218 *)
219 echo "invalid option: $1"
220 echo "see: $PROGRAM --help"
221 exit 1
222 esac
224 done
226 if [ $# -eq 0 ] ; then
227 usage
228 fi
232 # verbose output
233 log "verbose: $verbose"
234 log
235 log "output dir: $targetDir"
236 log "index file: $index"
237 log "gallery title: $galleryTitle"
238 log "footer text: $footer"
239 log "picture size: ${sizePic}px"
240 log "thumbnail size: ${sizeThumb}px"
241 log "overwrite output dir: $overwrite"
242 log
243 checkResizer
244 log
248 # generate web gallery
250 checkCreateDir
252 echo `insertHeader` > "$targetDir/$index"
253 if [ "$galleryTitle" != "" ] ; then
254 echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
255 fi
257 for i in "$@" ; do
258 file="`basename $i`"
259 targetFile="$targetDir/$file.htm"
260 log "processing file: $file"
262 # copy and resize pics
263 cp "$i" "$targetDir/$file"
264 resize "$sizePic" "$targetDir/$file"
265 if [ $? -ne 0 ] ; then
266 log " skipping"
267 rm "$targetDir/$file"
268 continue
269 fi
270 cp "$i" "$targetDir/_$file"
271 resize "$sizeThumb" "$targetDir/_$file"
273 # generate pic page
274 echo `insertHeader` > "$targetFile"
275 if [ "$galleryTitle" != "" ] ; then
276 echo "<h1>$galleryTitle</h1>" >> "$targetFile"
277 fi
278 echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
279 if [ "$footer" != "" ] ; then
280 echo "<p>$footer</p>" >> "$targetFile"
281 fi
282 echo `insertFooter` >> "$targetFile"
284 # generate content for index file
285 echo " <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
286 done
288 if [ "$footer" != "" ] ; then
289 echo "<p>$footer</p>" >> "$targetDir/$index"
290 fi
291 echo `insertFooter` >> "$targetDir/$index"