X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=archivepics.sh;h=9c608c129b73f75cba38c144dff72281fef0c2ab;hb=6473993b691c6280c4ad1d1d9a3b697eb0e05eb2;hp=d6a1742d442dd17f2bb7ae8c87aa65b8133354a4;hpb=9fcf8afdc215faca5b95075189e582a9d8581942;p=scripts.git diff --git a/archivepics.sh b/archivepics.sh index d6a1742..9c608c1 100755 --- a/archivepics.sh +++ b/archivepics.sh @@ -34,6 +34,8 @@ # exit 0 # fi +MONTHS=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec") + export ARCHIVED_PICS="$@" set -e @@ -72,19 +74,37 @@ for i in "$@"; do if [[ -f ${ref} ]]; then - TAG=$(exif --ifd=EXIF -t "Date and Time (original)" "${ref}" | grep Value) + echo "Checking ${ref} date" + + TAG_VALUE=$(exiv2 -P nv "${ref}" 2>/dev/null | grep ^DateTimeOriginal | \ + sed -e "s/^[^ ]* *\([0-9]*\):\([0-9]*\):\([0-9]*\) *\([0-9]*\):\([0-9]*\):\([0-9]*\).*$/\1\2\3\4\5.\6/") - if [[ ${TAG} ]]; then - TIMESTAMP=$(echo ${TAG} | sed -e \ - "s/^ *Value: *\([0-9]*\):\([0-9]*\):\([0-9]*\) *\([0-9]*\):\([0-9]*\):\([0-9]*\).*$/\1\2\3\4\5.\6/") - touch -t $TIMESTAMP "$i" + if [[ "${TAG_VALUE}" ]]; then + touch -t ${TAG_VALUE} "$i" else echo "No exif tag in $i, can not set the date properly." fi + # TAG=$(exif --ifd=EXIF -t "Date and Time (original)" "${ref}" | grep Value) + + # if [[ ${TAG} ]]; then + # TIMESTAMP=$(echo ${TAG} | sed -e \ + # "s/^ *Value: *\([0-9]*\):\([0-9]*\):\([0-9]*\) *\([0-9]*\):\([0-9]*\):\([0-9]*\).*$/\1\2\3\4\5.\6/") + # touch -t $TIMESTAMP "$i" + # else + # echo "No exif tag in $i, can not set the date properly." + # fi + else - echo "Can not find a reference picture file for $i, can not set the date properly." + timestamp=($(basename $i | sed -e "s/^VID_\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)_\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\).*$/\1\2\3\4\5.\6/")) + + if [[ "${timestamp}" ]]; then + echo "Setting time of $i to ${timestamp}" + touch -t ${timestamp} "$i" + else + echo "Can not guess date for $i." + fi fi @@ -93,6 +113,8 @@ done # Moving the file to the proper archive directory, which is created # first when needed +LOG_ARCHIVING=archive_$(date +%Y_%m_%d_%H:%M:%S).log + for i in "$@"; do ARCHIVING_PATH=$(ls -l --time-style=+%Y/%b --format=verbose "$i" | awk '{ print $6 }') @@ -101,6 +123,7 @@ for i in "$@"; do echo "Archiving ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH}/"$(basename "$i") - cp -p -i "$i" ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH} + cp -p -i "$i" ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH} && \ + echo "$i -> ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH}" >> ${LOG_ARCHIVING} done