From 448f785c5fba56ab3e5bf01b05e7827ed4321e6a Mon Sep 17 00:00:00 2001 From: "Paul Buetow (mars.fritz.box)" Date: Sun, 29 Dec 2013 17:57:36 +0100 Subject: theoretically i can include tarballs in photoalbums now --- src/photoalbum | 175 --------------------------------------- src/photoalbum.default.conf | 7 ++ src/photoalbum.sh | 197 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 204 insertions(+), 175 deletions(-) delete mode 100755 src/photoalbum create mode 100755 src/photoalbum.sh (limited to 'src') diff --git a/src/photoalbum b/src/photoalbum deleted file mode 100755 index 2418463..0000000 --- a/src/photoalbum +++ /dev/null @@ -1,175 +0,0 @@ -#!/bin/bash - -# photoalbum (c) 2011, 2012, 2013 by Paul Buetow -# http://photoalbum.buetow.org - -declare -r ARG1="${1}" ; shift -declare -r VERSION='PHOTOALBUMVERSION' - -function usage () { -cat - <&2 -Usage: - $0 [clean|init|version|generate|all] -USAGE -} - -function init () { - for dir in "${INCOMING_DIR}" "${DIST_DIR}/photos" "${DIST_DIR}/thumbs" "${DIST_DIR}/html"; do - [ -d "${dir}" ] || mkdir -vp "${dir}" - done -} - -function clean () { - echo "Not deleting ${INCOMING_DIR}" - [ -d "${DIST_DIR}" ] && rm -Rf "${DIST_DIR}" -} - -function generate () { - if [ ! -d "${INCOMING_DIR}" ]; then - echo "ERROR: You may run init first, no such directory: ${INCOMING_DIR}" >&2 - exit 1 - fi - if [ ! -d "${DIST_DIR}" ]; then - echo "ERROR: You may run init first, no such directory: ${DIST_DIR}" >&2 - exit 1 - fi - - scale - find "${DIST_DIR}/html" -type f -name \*.html -delete - makedist 1 - template index ../index -} - -function template () { - local -r template=${1} ; shift - local -r html=${1} ; shift - - source "${TEMPLATE_DIR}/${template}.tmpl" >> "${DIST_DIR}/html/${html}.html" -} - -function scale () { - cd "${INCOMING_DIR}" && find ./ -type f | sort | while read photo; do - if [ ! -f "${DIST_DIR}/photos/${photo}" ]; then - - # Flatten directories / to __ - if [[ "${photo}" =~ / ]]; then - destphoto="${photo//\//__}" - else - destphoto="${photo}" - fi - - destphoto="${destphoto/./}" - - echo "Scaling ${photo} to ${DIST_DIR}/photos/${destphoto}" - - convert -auto-orient \ - -geometry ${GEOMETRY} "${photo}" "${DIST_DIR}/photos/${destphoto}" - fi - done - - echo 'Removing spaces from file names' - find "${DIST_DIR}/photos" -type f -name '* *' | while read file; do - rename 's/ /_/g' "${file}" - done -} - -function makedist () { - local num=${1} ; shift - local name=page-${num} - local -i i=0 - - template header ${name} - template header-first-add ${name} - - cd "${DIST_DIR}/photos" && find ./ -type f | sort | sed 's;^\./;;' | - while read photo; do - : $(( i++ )) - - if [ ${i} -gt ${MAXPREVIEWS} ]; then - i=1 - : $(( num++ )) - - next=page-${num} - template next ${name} - template footer ${name} - - prev=${name} - name=${next} - template header ${name} - template prev ${name} - fi - - # Preview page - template preview ${name} - - # View page - template header ${num}-${i} - template view ${num}-${i} - template footer ${num}-${i} - - if [ ! -f "${DIST_DIR}/thumbs/${photo}" ]; then - echo "Creating thumb for ${photo}"; - convert -geometry x${THUMBGEOMETRY} "${photo}" \ - "${DIST_DIR}/thumbs/${photo}" - fi - done - - template footer $(cd "${DIST_DIR}/html";ls -t page-*.html | head -n 1 | sed 's/.html//') - - cd "${DIST_DIR}/html" && ls *.html | grep -v page- | cut -d'-' -f1 | uniq | - while read prefix; do - declare page=$(ls -t ${prefix}-*.html | - head -n 1 | sed 's#\(.*\)-.*.html#\1#') - - declare lastview=$(ls -t ${prefix}-*.html | - head -n 1 | sed 's/.*-\(.*\).html/\1/') - - declare prevredirect=${page}-0 - declare nextredirect=${page}-$((lastview+1)) - - redirectpage=$(( page-1 ))-${MAXPREVIEWS} - template redirect ${prevredirect} - - if [ ${lastview} -eq ${MAXPREVIEWS} ]; then - redirectpage=$(( page+1 ))-1 - else - redirectpage=${page}-${lastview} - template redirect 0-${MAXPREVIEWS} - - redirectpage=1-1 - fi - - template redirect ${nextredirect} - done -} - -source /etc/default/photoalbum - -if [ -f ~/.photoalbumrc ]; then - source ~/.photoalbumrc -fi - -case "${ARG1}" in - all) - clean - init - generate - ;; - init) - init - ;; - clean) - clean - ;; - generate) - generate - ;; - version) - echo "This is Photoalbum Version ${VERSION}" - ;; - *) - usage - ;; -esac - - diff --git a/src/photoalbum.default.conf b/src/photoalbum.default.conf index 20ac490..3e8cf10 100644 --- a/src/photoalbum.default.conf +++ b/src/photoalbum.default.conf @@ -11,6 +11,13 @@ INCOMING_DIR=$(pwd)/incoming DIST_DIR=$(pwd)/dist TEMPLATE_DIR=/usr/share/photoalbum/templates +# Includes a .tar of the incoming dir in the dist, can be yes or no +declare -r TARBALL_INCLUDE=yes + +# If INCLUDETARBALL=yes, set the Name of the tarball +declare -r TARBALL_SUFFIX=.tar +declare -r TAR_OPTS='-c' + # Some debugging options #set -e #set -x diff --git a/src/photoalbum.sh b/src/photoalbum.sh new file mode 100755 index 0000000..ffe2bf0 --- /dev/null +++ b/src/photoalbum.sh @@ -0,0 +1,197 @@ +#!/bin/bash + +# photoalbum (c) 2011, 2012, 2013 by Paul Buetow +# http://photoalbum.buetow.org + +declare -r ARG1="${1}" ; shift +declare -r VERSION='PHOTOALBUMVERSION' + +usage () { + cat - <&2 + Usage: + $0 [clean|init|version|generate|all] + USAGE +} + +init () { + for dir in "${INCOMING_DIR}" "${DIST_DIR}/photos" "${DIST_DIR}/thumbs" "${DIST_DIR}/html"; do + [ -d "${dir}" ] || mkdir -vp "${dir}" + done + + if [ "${TARBALL_INCLUDE}" = yes ]; then + local -r BASE=$(basename "${INCOMING_DIR}") + local -r NOW=$(date +'%Y-%m-%d-%H%M%S') + # New global variable + TARBALL_NAME="${BASE}-${NOW}.${TARBALL_SUFFIX}" + fi +} + +clean () { + echo "Not deleting ${INCOMING_DIR}" + [ -d "${DIST_DIR}" ] && rm -Rf "${DIST_DIR}" +} + +tarball () { + # Cleanup tarball from prev run if any + find "${DIST_DIR}" -maxdepth 1 -type f -name \*.tar -delete + + if [ "${TARBALL_INCLUDE}" = yes ]; then + local -r BASE=$(basename "${INCOMING_DIR}") + + echo "Creating tarball ${DIST_DIR}/${TARBALL_NAME} from ${INCOMING_DIR}" + cd $(dirname "${INCOMING_DIR}") + tar $TAR_OPTS -f "${DIST_DIR}/${TARBALL_NAME}" "${BASE}" + cd - &>/dev/null + fi +} + +generate () { + if [ ! -d "${INCOMING_DIR}" ]; then + echo "ERROR: You may run init first, no such directory: ${INCOMING_DIR}" >&2 + exit 1 + fi + if [ ! -d "${DIST_DIR}" ]; then + echo "ERROR: You may run init first, no such directory: ${DIST_DIR}" >&2 + exit 1 + fi + + scale + find "${DIST_DIR}/html" -type f -name \*.html -delete + makedist 1 + template index ../index + tarball +} + +template () { + local -r template=${1} ; shift + local -r html=${1} ; shift + + source "${TEMPLATE_DIR}/${template}.tmpl" >> "${DIST_DIR}/html/${html}.html" +} + +scale () { + cd "${INCOMING_DIR}" && find ./ -type f | sort | while read photo; do + if [ ! -f "${DIST_DIR}/photos/${photo}" ]; then + + # Flatten directories / to __ + if [[ "${photo}" =~ / ]]; then + destphoto="${photo//\//__}" + else + destphoto="${photo}" + fi + + destphoto="${destphoto/./}" + + echo "Scaling ${photo} to ${DIST_DIR}/photos/${destphoto}" + + convert -auto-orient \ + -geometry ${GEOMETRY} "${photo}" "${DIST_DIR}/photos/${destphoto}" + fi +done + +echo 'Removing spaces from file names' +find "${DIST_DIR}/photos" -type f -name '* *' | while read file; do +rename 's/ /_/g' "${file}" +done +} + +makedist () { + local num=${1} ; shift + local name=page-${num} + local -i i=0 + + template header ${name} + template header-first-add ${name} + + cd "${DIST_DIR}/photos" && find ./ -type f | sort | sed 's;^\./;;' | + while read photo; do + : $(( i++ )) + + if [ ${i} -gt ${MAXPREVIEWS} ]; then + i=1 + : $(( num++ )) + + next=page-${num} + template next ${name} + template footer ${name} + + prev=${name} + name=${next} + template header ${name} + template prev ${name} + fi + + # Preview page + template preview ${name} + + # View page + template header ${num}-${i} + template view ${num}-${i} + template footer ${num}-${i} + + if [ ! -f "${DIST_DIR}/thumbs/${photo}" ]; then + echo "Creating thumb for ${photo}"; + convert -geometry x${THUMBGEOMETRY} "${photo}" \ + "${DIST_DIR}/thumbs/${photo}" + fi + done + + template footer $(cd "${DIST_DIR}/html";ls -t page-*.html | head -n 1 | sed 's/.html//') + + cd "${DIST_DIR}/html" && ls *.html | grep -v page- | cut -d'-' -f1 | uniq | + while read prefix; do + declare page=$(ls -t ${prefix}-*.html | + head -n 1 | sed 's#\(.*\)-.*.html#\1#') + + declare lastview=$(ls -t ${prefix}-*.html | + head -n 1 | sed 's/.*-\(.*\).html/\1/') + + declare prevredirect=${page}-0 + declare nextredirect=${page}-$((lastview+1)) + + redirectpage=$(( page-1 ))-${MAXPREVIEWS} + template redirect ${prevredirect} + + if [ ${lastview} -eq ${MAXPREVIEWS} ]; then + redirectpage=$(( page+1 ))-1 + else + redirectpage=${page}-${lastview} + template redirect 0-${MAXPREVIEWS} + + redirectpage=1-1 + fi + + template redirect ${nextredirect} + done +} + +source /etc/default/photoalbum + +if [ -f ~/.photoalbumrc ]; then + source ~/.photoalbumrc +fi + +case "${ARG1}" in + all) + clean + init + generate + ;; + init) + init + ;; + clean) + clean + ;; + generate) + generate + ;; + version) + echo "This is Photoalbum Version ${VERSION}" + ;; + *) + usage + ;; +esac + + -- cgit v1.2.3