--- scripts/pgallery/src/pgallery.sh 2012/08/28 12:30:30 1.6 +++ 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.5 2012/08/28 10:44:41 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= @@ -23,14 +24,10 @@ ARG_INFOFILE="" 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" - MKAKEFILE=".htmakefile" -VERSION="pgallery-1.1" # # usage() @@ -40,17 +37,20 @@ usage() cat <] | [-s ] ) [-d ] [-n ] [-t ] [-u ] - [-b ] [-c ] [-l link] + [-b ] [-c ] [-l link] [-e ] [-i ] [-C ] [-F ] [-T ] [-U] | -h | -v Options: -b size size from big images in pixel (default: $ARG_BIGSIZE) -c quality quality from big images 0-100% (default: $ARG_BIGQALITY) -d dir gallery dir (default: $ARG_DIR) + -e exif list of tags in hex. (default: $ARG_EXIF) + see: http://www.exiv2.org/tags.html -f files gallery images -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 @@ -64,6 +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 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 @@ -71,337 +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 < - - $tn - - -HTML -} - -# -# html_img() -# -html_img() -{ - img=$1 - link=$2 - linkb=$3 - linkn=$4 - - info=$($BIN_IMGINFO -f $img) - width=$(echo $info | awk '{print $3}') - height=$(echo $info | awk '{print $4}') - - if [ "$linkb" != "" ] +# first find image dir +is_dir=0 +for arg in $* +do + if [ $is_dir -eq 1 ] then - hlinkb="zurück" - olinkb="" + ARG_DIR="$arg" + break fi + test $arg = -d && is_dir=1 +done - if [ "$linkn" != "" ] - then - hlinkn="weiter" - olinkn="" - fi +echo $ARG_DIR - cat < - -
- $img -
-
- $ARG_TITLE $ARG_COPYRIGHT -
-
- $olinkb - $olinkn -
- -HTML -} +# load save args +if [ -f "$ARG_DIR/$ARGFILE" ] +then + echo "load save settings" + . "$ARG_DIR/$ARGFILE" +fi -# -# err -# -err() -{ - echo "$1" >&2 - exit 1 -} - -# -# mysendmail() -# -mysendmail() -{ - subject=$1 - ( - cat </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= @@ -534,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 @@ -579,9 +305,26 @@ echo "tns: $targets" >> $MKAKEFILE make -f $MKAKEFILE rm $MKAKEFILE -# create single html files +# create html index index="" +for file in $FLIST +do + tn="${file}.tn.jpg" + imglink="${file}.html" + index="$index $(html_tn $tn $imglink)" +done +echo create html index +( + html_header + echo $index + echo "
" + echo "
$ARG_TITLE $ARG_COPYRIGHT
" + html_footer +) > $ARG_INDEX + +# create single html files i=0 +all=$(echo $FLIST | wc -w) echo -n "create single html files " for file in $FLIST do @@ -589,7 +332,12 @@ do i=$(($i + 1)) j=$(($i + 1)) - tn="${file}.tn.jpg" + # 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" @@ -601,25 +349,21 @@ do test "$linkn" != "" && linkn="$linkn.html" echo -n . - index="$index $(html_tn $tn $imglink)" ( html_header - html_img $big $ARG_INDEX "$linkb" "$linkn" + html_img $file $i $all $big $ARG_INDEX "$linkb" "$linkn" html_footer ) > $imglink done echo -# create html index -echo create html index -( - html_header - echo $index - echo "
" - echo "
$ARG_TITLE $ARG_COPYRIGHT
" - html_footer -) > $ARG_INDEX - +# .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