view genwebgallery @ 23:7f3cea97b789

"copyright notice" is known as "footer text" now
author meillo@marmaro.de
date Mon, 12 May 2008 12:37:14 +0200
parents 84c08287caa1
children 572f219cf0f4
line wrap: on
line source

#!/bin/sh
#
# generates a web gallery
# requires: ImageMagick (convert)
#
# meillo@marmaro.de
#


PROGRAM=genwebgallery
VERSION=0.5

verbose="no"
targetDir="webgallery"
overwrite="no"
index="index.html"
sizePic=800
sizeThumb=150
galleryTitle=""
footer=""




checkCreateDir() {
	remove="no"
	if [ -e "$targetDir" ] ; then
		if [ "$overwrite" = "no" ] ; then
			echo "output directory '$targetDir' already exists."
			printf "remove it? [y/n] "
			read remove
		fi

		if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
			echo "removing '$targetDir' ..."
			rm -r "$targetDir"
			if [ $? -ne 0 ] ; then
				echo "ABORT"
				exit 4
			fi
		else
			echo "keep output directory"
			echo "ABORT"
			exit 3
		fi
	fi

	mkdir -p "$targetDir"
}




insertHeader() {
  echo "
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
  \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
<head>
<title>$titleName</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
  <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de/genwebgallery\" />
</head>
<body>

"
}



insertFooter() {
	echo "

</body>
</html>
"
}



log() {
	if [ $verbose = "yes" ] ; then
		echo "$1";
	fi
}



checkConvert() {
	log "checking convert installation"
	if [ ! `command -v convert` ] ; then
		echo "Can not find 'convert' (package imagemagick)"
		echo "ABORT"
		exit 2
	fi
	log "convert found:"
	log "`convert -version`"
}



usage() {
	echo "usage: $PROGRAM [OPTIONS] PICTURES"
	exit 1
}



help() {
	echo "$PROGRAM

generates a web gallery consisting of html pages

usage: $PROGRAM [OPTIONS] PICTURES

options:
	--version   print program version
	--help      display this output
	-v          be verbose ($verbose)
	-o DIR      folder where generated files go to ($targetDir)
	-i FILE     the name of the index file ($index)
	-t TEXT     title of the gallery ($galleryTitle)
	-f TEXT     footer text ($footer)
	-ps PIXELS  size of the pictures ($sizePic)
	-ts PIXELS  size of the thumbnails ($sizeThumb)
	--overwrite overwrite output directory ($overwrite)

for more information see man page: $PROGRAM(1)

author: meillo@marmaro.de
homepage: http://prog.marmaro.de/genwebgallery
"
	exit 0
}




# option processing

while [ "$#" -ge 1 ] && [ `echo "$1" | awk '{print substr($0,1,1)}'` = '-'  ] ; do
	case $1 in
		'--version')
			echo "$PROGRAM version $VERSION"
			exit 0
			;;
		'--help')
			help
			;;
		'-v' | '--verbose')
			verbose="yes"
			shift
			;;
		'-o' | '--output')
			targetDir="$2"
			shift
			shift
			;;
		'-i' | '--index')
			index=$2
			shift
			shift
			;;
		'-t' | '--title')
			galleryTitle="$2"
			shift
			shift
			;;
		'-f' | '--footer')
			footer=$2
			shift
			shift
			;;
		'-ps' | '--pic-size')
			sizePic=$2
			shift
			shift
			;;
		'-ts' | '--thumb-size')
			sizeThumb=$2
			shift
			shift
			;;
		'--overwrite')
			overwrite="yes"
			shift
			;;
		*)
			echo "invalid option: $1"
			echo "see: $PROGRAM --help"
			exit 1
	esac

done

if [ $# -eq 0 ] ; then
	usage
fi



# verbose output
log "verbose:              $verbose"
log
log "output dir:           $targetDir"
log "index file:           $index"
log "gallery title:        $galleryTitle"
log "footer text:          $footer"
log "picture size:         ${sizePic}px"
log "thumbnail size:       ${sizeThumb}px"
log "overwrite output dir: $overwrite"
log
checkConvert
log



# generate web gallery

checkCreateDir

echo `insertHeader` > "$targetDir/$index"
if [ "$galleryTitle" != "" ] ; then
	echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
fi

for i in "$@" ; do
	file="`basename $i`"
	targetFile="$targetDir/$file.htm"
	log "processing file: $file"

	# generate pic page
	echo `insertHeader` > "$targetFile"
	if [ "$galleryTitle" != "" ] ; then
		echo "<h1>$galleryTitle</h1>" >> "$targetFile"
	fi
	echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
	if [ "$footer" != "" ] ; then
		echo "<p>$footer</p>" >> "$targetFile"
	fi
	echo `insertFooter` >> "$targetFile"

	# copy and resize pics
	convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file"
	convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file"

	# generate content for index file
	echo "    <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
done

if [ "$footer" != "" ] ; then
	echo "<p>$footer</p>" >> "$targetDir/$index"
fi
echo `insertFooter` >> "$targetDir/$index"