|
78 | 78 | [ -z "$directory" ] && directory="$(pwd)" |
79 | 79 | [ -d "$directory" ] || die 2 "Directory '$directory' not found" |
80 | 80 |
|
81 | | -find "$directory" -iname \*.jpg -o -iname \*.jpeg -o -iname \*.dng -o -iname \*.mp4|while read original_filename;do |
| 81 | +find "$directory" -iname \*.jpg -o -iname \*.jpeg -o -iname \*.png -o -iname \*.dng -o -iname \*.mp4 -o -iname \*.mov|while read original_filename;do |
82 | 82 |
|
83 | 83 | unset create_date_time |
84 | 84 |
|
85 | 85 | # Try to get the date/time from the file. |
86 | 86 | case $original_filename in |
87 | | - *.jpg|*.JPG|*.jpeg) |
| 87 | + *.jpg|*.JPG|*.jpeg|*.png|*.PNG) |
| 88 | + |
| 89 | + # First try the most common case: SubSecCreateDate is set |
88 | 90 | create_date_time=$(exiftool -S -SubSecCreateDate "$original_filename"|sed -e 's?SubSecCreateDate: ??g' -e 's?:??g' -e 's? ?_?' -e 's?\.?_?g') |
| 91 | + |
| 92 | + # If that failed try the DateTimeOriginal field |
89 | 93 | if [ -z "$create_date_time" ];then |
90 | | - # Try the DateTimeOriginal field |
91 | 94 | create_date_time=$(exiftool -S -DateTimeOriginal "$original_filename"|sed -e 's?DateTimeOriginal: ??g' -e 's?:??g' -e 's? ?_?' -e 's?\.?_?g') |
92 | 95 | fi |
| 96 | + |
| 97 | + # If that failed try the GPSDateTime field |
93 | 98 | if [ -z "$create_date_time" ];then |
94 | | - # Try the GPSDateTime field |
95 | 99 | unset gps_date_time |
96 | 100 | gps_date_time=$(exiftool -S -GPSDateTime "$original_filename"|sed -e 's?GPSDateTime: ??' -e 's?:?-?' -e 's?:?-?' -e 's? ?T?') |
97 | 101 | if [ -n "$gps_date_time" ];then |
98 | 102 | create_date_time=$(date -d "$gps_date_time" +%Y%m%d_%H%M%S) |
99 | 103 | fi |
100 | 104 | fi |
| 105 | + |
| 106 | + # If that failed try the FileModifyDate field |
101 | 107 | if [ -z "$create_date_time" ];then |
102 | | - # Try the FileModifyDate field |
103 | 108 | file_modify_date=$(exiftool -S -FileModifyDate "$original_filename"|sed -e 's?FileModifyDate: ??' -e 's?:?-?' -e 's?:?-?') |
104 | 109 | if [ -n "$file_modify_date" ];then |
105 | 110 | create_date_time=$(date -d "$file_modify_date" +%Y%m%d_%H%M%S) |
106 | 111 | fi |
107 | 112 | fi |
108 | | - ext=jpg |
| 113 | + |
| 114 | + # Set the file extention |
| 115 | + case $original_filename in |
| 116 | + *.jpg|*.JPG|*.jpeg) |
| 117 | + ext=jpg;; |
| 118 | + *.png|*.PNG) |
| 119 | + ext=png;; |
| 120 | + esac |
109 | 121 | ;; |
110 | 122 | *.dng|*.DNG) |
111 | 123 | create_date_time=$(exiftool -S -DateTimeOriginal "$original_filename"|sed -e 's?DateTimeOriginal: ??g' -e 's?:??g' -e 's? ?_?' -e 's?\.?_?g') || die 4 "exiftool failed on $original_filename" |
112 | 124 | ext=dng |
113 | 125 | ;; |
114 | | - *.mp4|*MP4) |
| 126 | + *.mp4|*MP4|*.mov|*.MOV) |
115 | 127 | create_date_time=$(date -d $(ffprobe "$original_filename" 2>&1 |grep creation_time|head -1|sed -e 's?\s\+creation_time\s\+:\s\+??') +%Y%m%d_%H%M%S)||die 5 "Cannot get creation_time from file $original_filename". |
116 | | - ext=mp4 |
| 128 | + |
| 129 | + # Set the file extention |
| 130 | + case $original_filename in |
| 131 | + *.mp4|*MP4) |
| 132 | + ext=mp4;; |
| 133 | + *.mov|*.MOV) |
| 134 | + ext=mov;; |
| 135 | + esac |
117 | 136 | ;; |
118 | 137 | *) |
119 | 138 | log "I don't know how to get a date from $original_filename" |
|
0 commit comments