• TIPS
Image Video Metadata Part 2
Image Video Metadata Tips
Recently I found a bunch of photos that had the wrong capture date, a result of the device not having the correct date when the photos were captured.  This is pretty annoying, but can be fixed with a nice perl utility called exiftool.  Apple and a bunch of other photo tools these days use these dates for sorting your photos.  So if something isn’t right, it can be pretty confusing/noticeable.
Dates before running the script:
$ exiftool WardFamilyPhotos-003.jpg -a -G -s| grep -i date
[File]          FileModifyDate                  : 2021:01:09 09:28:53-05:00
[File]          FileAccessDate                  : 2021:01:09 09:28:51-05:00
[File]          FileInodeChangeDate             : 2021:01:09 18:58:40-05:00
[EXIF]          ModifyDate                      : 2020:11:30 07:43:35
[EXIF]          DateTimeOriginal                : 2014:01:06 14:46:39
[EXIF]          CreateDate                      : 2014:01:06 14:46:39
[IPTC]          DateCreated                     : 2014:01:06
[IPTC]          DigitalCreationDate             : 2014:01:06
[ICC_Profile]   ProfileDateTime                 : 1998:02:09 06:49:00
[XMP]           CreateDate                      : 2014:01:06 14:46:39.08
[XMP]           ModifyDate                      : 2020:11:30 07:43:35-05:00
[XMP]           MetadataDate                    : 2020:11:30 07:43:35-05:00
[XMP]           DateCreated                     : 2014:01:06 14:46:39.08
[Composite]     SubSecCreateDate                : 2014:01:06 14:46:39.08
[Composite]     SubSecDateTimeOriginal          : 2014:01:06 14:46:39.08
[Composite]     SubSecModifyDate                : 2020:11:30 07:43:35-05:00
[Composite]     DateTimeCreated                 : 2014:01:06 14:46:39
[Composite]     DigitalCreationDateTime         : 2014:01:06 14:46:39The -s gives us the actual field name we need to modify (see the script) instead of some pretty print formatted message.
The -G gives us the group classification we need to modify.
The -a gives us any duplicate fields.
man exiftool is a BIG manual.  It appears to be everything you need, if you have time.
Dates after running the script:
$ exiftool WardFamilyPhotos-003.jpg -a -G -s| grep -i date
[File]          FileModifyDate                  : 2021:01:09 12:32:31-05:00
[File]          FileAccessDate                  : 2021:01:09 12:32:31-05:00
[File]          FileInodeChangeDate             : 2021:01:09 12:32:31-05:00
[EXIF]          ModifyDate                      : 2020:11:30 07:43:35
[EXIF]          DateTimeOriginal                : 2020:11:25 14:46:39
[EXIF]          CreateDate                      : 2020:11:25 14:46:39
[IPTC]          DateCreated                     : 2020:11:25
[IPTC]          DigitalCreationDate             : 2020:11:25
[ICC_Profile]   ProfileDateTime                 : 1998:02:09 06:49:00
[XMP]           DateCreated                     : 2020:11:25 14:46:39.08
[XMP]           CreateDate                      : 2020:11:25 14:46:39.08
[XMP]           MetadataDate                    : 2020:11:30 07:43:35-05:00
[XMP]           ModifyDate                      : 2020:11:30 07:43:35-05:00
[Composite]     SubSecCreateDate                : 2020:11:25 14:46:39.08
[Composite]     SubSecDateTimeOriginal          : 2020:11:25 14:46:39.08
[Composite]     SubSecModifyDate                : 2020:11:30 07:43:35-05:00
[Composite]     DateTimeCreated                 : 2020:11:25 14:46:39
[Composite]     DigitalCreationDateTime         : 2020:11:25 14:46:39#!/bin/bash
# drop this script in the folder of images where you need to update the image date
# requires exiftool (duh...)
# slow as it opens and writes the file many times, but could be optimized perhaps...
NEW_DATE=2020:11:25
echo "new date is...: "$NEW_DATE
for file in $(ls *.jpg)
do
  existing_time=$(exiftool -EXIF:DateTimeOriginal $file | grep -o -P "\d.*$" | cut -c11-19)
  #echo "replacing existing EXIF values with: "$NEW_DATE$existing_time
  exiftool -q -overwrite_original -EXIF:DateTimeOriginal="$NEW_DATE$existing_time" $file &> /dev/null
  exiftool -q -overwrite_original -EXIF:CreateDate="$NEW_DATE$existing_time" $file &> /dev/null
  #echo "replacing existing IPTC values with: "$NEW_DATE
  exiftool -q -overwrite_original -IPTC:DigitalCreationDate="$NEW_DATE" $file &> /dev/null
  exiftool -overwrite_original -IPTC:DateCreated="$NEW_DATE" $file &> /dev/null
  existing_time_s=$(exiftool -XMP:CreateDate $file | grep -o -P "\d.*$" | cut -c11-22)
  #echo "replacing existing XMP values with: "$NEW_DATE$existing_time_s
  exiftool -q -overwrite_original -XMP:CreateDate="$NEW_DATE$existing_time_s" $file &> /dev/null
  exiftool -q -overwrite_original -XMP:DateCreated="$NEW_DATE$existing_time_s" $file &> /dev/null
done;