Update.
[scripts.git] / archivepics.sh
index 783effd..9c608c1 100755 (executable)
@@ -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
@@ -74,19 +76,35 @@ for i in "$@"; do
 
         echo "Checking ${ref} date"
 
-        TAG=$(exif --ifd=EXIF -t "Date and Time (original)" "${ref}" | grep Value)
+        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
 
@@ -95,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 }')
@@ -103,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