Skip to content

Commit 8cad455

Browse files
committed
Add support for MOV and PNG files.
1 parent 0e27b62 commit 8cad455

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

order_photos_by_exif_date

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,42 +78,61 @@ fi
7878
[ -z "$directory" ] && directory="$(pwd)"
7979
[ -d "$directory" ] || die 2 "Directory '$directory' not found"
8080

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
8282

8383
unset create_date_time
8484

8585
# Try to get the date/time from the file.
8686
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
8890
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
8993
if [ -z "$create_date_time" ];then
90-
# Try the DateTimeOriginal field
9194
create_date_time=$(exiftool -S -DateTimeOriginal "$original_filename"|sed -e 's?DateTimeOriginal: ??g' -e 's?:??g' -e 's? ?_?' -e 's?\.?_?g')
9295
fi
96+
97+
# If that failed try the GPSDateTime field
9398
if [ -z "$create_date_time" ];then
94-
# Try the GPSDateTime field
9599
unset gps_date_time
96100
gps_date_time=$(exiftool -S -GPSDateTime "$original_filename"|sed -e 's?GPSDateTime: ??' -e 's?:?-?' -e 's?:?-?' -e 's? ?T?')
97101
if [ -n "$gps_date_time" ];then
98102
create_date_time=$(date -d "$gps_date_time" +%Y%m%d_%H%M%S)
99103
fi
100104
fi
105+
106+
# If that failed try the FileModifyDate field
101107
if [ -z "$create_date_time" ];then
102-
# Try the FileModifyDate field
103108
file_modify_date=$(exiftool -S -FileModifyDate "$original_filename"|sed -e 's?FileModifyDate: ??' -e 's?:?-?' -e 's?:?-?')
104109
if [ -n "$file_modify_date" ];then
105110
create_date_time=$(date -d "$file_modify_date" +%Y%m%d_%H%M%S)
106111
fi
107112
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
109121
;;
110122
*.dng|*.DNG)
111123
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"
112124
ext=dng
113125
;;
114-
*.mp4|*MP4)
126+
*.mp4|*MP4|*.mov|*.MOV)
115127
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
117136
;;
118137
*)
119138
log "I don't know how to get a date from $original_filename"

0 commit comments

Comments
 (0)