--- scripts/pgallery/src/pgallery.sh 2012/08/29 10:52:35 1.10
+++ scripts/pgallery/src/pgallery.sh 2012/08/31 12:33:07 1.18
@@ -5,8 +5,9 @@
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return Aron Schlesinger
#
-# $Paefchen: scripts/pgallery/src/pgallery.sh,v 1.9 2012/08/28 17:37:11 as Exp $
+# $Paefchen: scripts/pgallery/src/pgallery.sh,v 1.17 2012/08/29 14:44:04 as Exp $
#
+. $(dirname $0)/libpgallery
ARG_TITLE="PGallery"
ARG_FILES=
@@ -24,16 +25,9 @@ ARG_MAILTO=""
ARG_MAILFROM="PGallery <${USER}@${HOST}>"
ARG_URL=
ARG_EXIF="0x920a 0x829d 0x829a ISO 0x8827 / 0x010f - 0x0110"
+ARG_INDEXIMG=
-BIN_CONVERT="/usr/local/bin/convert"
-BIN_EXIFAUTOTRAN="/usr/local/bin/exifautotran"
-BIN_IMGINFO="/usr/local/bin/imginfo"
-BIN_SENDMAIL="/usr/sbin/sendmail"
-BIN_EXIFTRAN="/usr/local/bin/exiftran"
-BIN_EXIF="/usr/local/bin/exif"
-
MKAKEFILE=".htmakefile"
-VERSION="pgallery-1.2"
#
# usage()
@@ -56,6 +50,7 @@ Options:
-h this page
-i name index file name (default: $ARG_INDEX)
-l url gallery link
+ -m image image for pgalleryindex. default the first image
-n name page title (default: $ARG_TITLE)
-s suffix list of suffix. if no \`\`-f'' defined, used to find images
in \`\`-d'' directoy. case insensitive
@@ -69,7 +64,7 @@ Options:
the syntax of the file is MAKE(1)
supported variable: TITLE COPYRIGHT INDEX FILETYPES TNSIZE URL
TNQALITY BIGSIZE BIGQALITY MAILTO MAILFROM
- EXIF
+ EXIF INDEXIMG
-T mailto send update infos to this address. if not set, no mail delivery
-U no update, new calculation of all images.
normally only new and modified images will calculated
@@ -77,390 +72,27 @@ USAGE
exit
}
-#
-# get_my_path()
-#
-get_my_path()
-{
- current=$(pwd)
- cd $(dirname $0)
- echo $(pwd)/$(basename $0)
- cd "$current"
-}
-
-#
-# html_header()
-#
-html_header()
-{
- cat <
-
-
- $ARG_TITLE
-
-
-
-
-HTML
-}
-
-#
-# html_footer()
-#
-html_footer()
-{
- cat <
-HTML
-}
-
-#
-# html_tn()
-#
-html_tn()
-{
- tn=$1
- link=$2
-
- info=$($BIN_IMGINFO -f $tn)
- width=$(echo $info | awk '{print $3}')
- height=$(echo $info | awk '{print $4}')
- top=$(($(($ARG_TNSIZE - $height)) / 2))
-
- cat <
-
-
-
-
-HTML
-}
-
-#
-# html_img()
-#
-html_img()
-{
- orig=$1
- img=$2
- link=$3
- linkb=$4
- linkn=$5
-
- info=$($BIN_IMGINFO -f $img)
- width=$(echo $info | awk '{print $3}')
- height=$(echo $info | awk '{print $4}')
-
- desc=$(get_exif_desc $orig)
- if [ "$desc" != "" ]
+# first find image dir
+is_dir=0
+for arg in $*
+do
+ if [ $is_dir -eq 1 ]
then
- desc="$desc
"
+ ARG_DIR="$arg"
+ break
fi
+ test $arg = -d && is_dir=1
+done
- if [ "$linkb" != "" ]
- then
- hlinkb="zurück"
- olinkb=""
- fi
+echo $ARG_DIR
- if [ "$linkn" != "" ]
- then
- hlinkn="weiter"
- olinkn=""
- fi
+# load save args
+if [ -f "$ARG_DIR/$ARGFILE" ]
+then
+ echo "load save settings"
+ . "$ARG_DIR/$ARGFILE"
+fi
- cat <
-
-
-
-
- $desc
-
-
$(get_exif_info $orig)
-
$ARG_TITLE $ARG_COPYRIGHT
-
-
- $olinkb
- $olinkn
-
-
-HTML
-}
-
-#
-# err
-#
-err()
-{
- echo "$1" >&2
- exit 1
-}
-
-#
-# mysendmail()
-#
-mysendmail()
-{
- subject=$1
- (
- cat < /dev/null | iconv -t ISO-8859-1 -f UTF-8 | while read line
- do
- echo "$line
"
- done
-}
-
-#
-# get_exif_value()
-#
-get_exif_value()
-{
- img=$1
- hex=$2
- $BIN_EXIFTRAN -d $img | grep $hex | sed -E 's/^.{45}//'
-}
-
-#
-# get_exif_info()
-#
-get_exif_info()
-{
- img=$1
- exifinfo=
- for exif in $ARG_EXIF
- do
- if echo $exif | grep -q -E '0x[[:alnum:]]{4}'
- then
- exifinfo="$exifinfo$(get_exif_value $img $exif) "
- else
- exifinfo="$exifinfo$exif "
- fi
- done
- echo $exifinfo | sed -e 's/ mm /mm /' -e 's/ sec./s/' -e 's/ ISO / ISO/'
-}
-
# parse args
while [ "$1" != "" ]
do
@@ -522,12 +154,16 @@ do
esac
done
+# go to gallery directory
+MY=$(get_my_path)
+cd "$ARG_DIR" || exit 1
+
# parese info file
if [ "$ARG_INFOFILE" != "" ]
then
test -f $ARG_INFOFILE || err "info file not found \`\`$ARG_INFOFILE''"
for n in TITLE COPYRIGHT INDEX FILETYPES TNSIZE TNQALITY BIGSIZE \
- BIGQALITY MAILTO MAILFROM URL EXIF
+ BIGQALITY MAILTO MAILFROM URL EXIF INDEXIMG
do
v=$(make -f $ARG_INFOFILE -V$n)
test "$v" = "" && continue
@@ -535,9 +171,12 @@ then
done
fi
-# go to gallery directory
-MY=$(get_my_path)
-cd "$ARG_DIR" || exit 1
+#paras from iso to utf-8
+for n in $(set | awk -F= '{print $1}')
+do
+ echo "$n" | grep -q '^ARG_' || continue
+ eval "$n=\"\$(echo \"\$$n\" | iconv -f ISO-8859-1 -t UTF-8)\""
+done
# fix url
if [ "$ARG_URL" != "" ]
@@ -554,22 +193,38 @@ then
match="$match *.$(echo $type | tr '[:lower:]' '[:upper:]')"
match="$match *.$(echo $type | tr '[:upper:]' '[:lower:]')"
done
- ARG_FILES=$(cd $ARG_DIR && ls $match 2>/dev/null)
+ FLIST=$(ls $match 2>/dev/null)
+else
+ FLIST="$ARG_FILES"
fi
# Filter big and thumbnails
echo -n "find images"
-FLIST=
-for file in $ARG_FILES
+FLISTF=
+for file in $FLIST
do
test $(echo $file | grep -E '\.(tn|big)\.jpg$') && continue
- FLIST="$FLIST $file"
+ FLISTF="$FLISTF $file"
echo -n " $file"
done
-echo
+echo
+FLIST="$FLISTF"
test $(echo $FLIST | wc -w) -eq 0 && err "error: no image found in \`\`$ARG_DIR''"
+# use exif createtime to order images
+FLIST=$(
+ (
+ for file in $FLIST
+ do
+ echo "$(get_exif_ts $file) $file"
+ done
+ ) | sort -n | awk '{print $2}'
+)
+
+# if no master image, we use the first one
+test "$ARG_INDEXIMG" = "" && ARG_INDEXIMG=$(echo $FLIST | awk '{print $1}')
+
# find new and to update images
FLIST_NEW=
FLIST_UPDATE=
@@ -596,6 +251,15 @@ echo "tns: $targets" >> $MKAKEFILE
FLIST_UPDATE=$(make -f $MKAKEFILE)
rm $MKAKEFILE
+# save args
+test -f $ARGFILE && rm $ARGFILE
+echo "save settings"
+set | while read n
+do
+ echo "$n" | grep -q '^ARG_' || continue
+ echo "$n" >> $ARGFILE
+done
+
# update and no new and update images found
if [ $ARG_UPDATE -eq 1 -a "$FLIST_NEW" = "" -a "$FLIST_UPDATE" = "" ]
then
@@ -659,8 +323,8 @@ echo create html index
) > $ARG_INDEX
# create single html files
-test $ARG_UPDATE -eq 1 && FLIST="$FLIST_NEW $FLIST_UPDATE"
i=0
+all=$(echo $FLIST | wc -w)
echo -n "create single html files "
for file in $FLIST
do
@@ -668,6 +332,12 @@ do
i=$(($i + 1))
j=$(($i + 1))
+ # is update mod and no new images founded
+ if [ $ARG_UPDATE -eq 1 -a "$FLIST_NEW" = "" ]
+ then
+ is_in_list "$FLIST_UPDATE" "$file" || continue
+ fi
+
big="${file}.big.jpg"
imglink="${file}.html"
@@ -681,11 +351,19 @@ do
echo -n .
(
html_header
- html_img $file $big $ARG_INDEX "$linkb" "$linkn"
+ html_img $file $i $all $big $ARG_INDEX "$linkb" "$linkn"
html_footer
) > $imglink
done
echo
+
+# .htaccess
+if [ -f .htaccess ]
+then
+ grep -q 'AddCharset UTF-8 .html' < .htaccess || echo "AddCharset UTF-8 .html" >> .htaccess
+else
+ echo "AddCharset UTF-8 .html" > .htaccess
+fi
test "$ARG_MAILTO" = "" && exit 0