Update.
[scripts.git] / archivepics.sh
index 202d73c..9c608c1 100755 (executable)
 
 [[ ${archive_size_min} ]] || archive_size_min=1048576 # 1Mb
 
+# if [[ -z $* ]] && [[ ${PHO_NOTE_1} ]]; then
+    # echo "$0 ${PHO_NOTE_1}"
+    # $0 ${PHO_NOTE_1}
+    # exit 0
+# fi
+
+MONTHS=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")
+
+export ARCHIVED_PICS="$@"
+
 set -e
 
 if [[ ! ${IMAGE_ARCHIVE_DIR} ]]; then
@@ -41,7 +51,7 @@ for i in "$@"; do
 
     if [[ ! -f ${i/JPG/MOV} ]] && [[ ! -f ${i/JPG/3gp} ]]; then
 
-        if [[ $(stat --printf=%s $i) -lt ${archive_size_min} ]]; then
+        if [[ $(stat --printf=%s "$i") -lt ${archive_size_min} ]]; then
             echo "Image $i is too small."
             exit 1
         fi
@@ -60,23 +70,41 @@ for i in "$@"; do
     if [[ -f ${base}.jpg ]]; then ref=${base}.jpg; fi
     if [[ -f ${base}.jpeg ]]; then ref=${base}.jpeg; fi
 
-    echo "ref=${ref}"
+    echo "ref=${ref}"
 
     if [[ -f ${ref} ]]; then
 
-        TAG=$(exif --ifd=EXIF -t "Date and Time (original)" ${ref} | grep Value)
+        echo "Checking ${ref} date"
 
-        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
+        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_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
 
@@ -85,14 +113,17 @@ 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 }')
+    ARCHIVING_PATH=$(ls -l --time-style=+%Y/%b --format=verbose "$i" | awk '{ print $6 }')
 
     mkdir -p ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH}
 
-    echo "Archiving ${IMAGE_ARCHIVE_DIR}/${ARCHIVING_PATH}/$(basename $i)"
+    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