From e2db5667ede3f8828395761cbca99d6fdcb11b50 Mon Sep 17 00:00:00 2001 From: Alessandro Dalvit Date: Mon, 19 Feb 2024 16:27:27 +0100 Subject: [PATCH] Fix: Fallback to exif datetime if GPS says 1970-01-01 (#669) --- mapillary_tools/exif_read.py | 6 +++--- mapillary_tools/exiftool_read.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mapillary_tools/exif_read.py b/mapillary_tools/exif_read.py index 69644cb3..d2fac8df 100644 --- a/mapillary_tools/exif_read.py +++ b/mapillary_tools/exif_read.py @@ -399,7 +399,7 @@ def extract_gps_datetime(self) -> T.Optional[datetime.datetime]: def extract_capture_time(self) -> T.Optional[datetime.datetime]: dt = self.extract_gps_datetime() - if dt is not None: + if dt is not None and dt.date() != datetime.date(1970, 1, 1): return dt dt = self.extract_exif_datetime() @@ -554,7 +554,7 @@ def extract_gps_datetime(self) -> T.Optional[datetime.datetime]: return None dt = strptime_alternative_formats(gpsdate, ["%Y:%m:%d", "%Y-%m-%d"]) - if dt is None: + if dt is None or dt == datetime.date(1970, 1, 1): return None gpstimestamp = self.tags.get("GPS GPSTimeStamp") @@ -632,7 +632,7 @@ def extract_capture_time(self) -> T.Optional[datetime.datetime]: gps_dt = self.extract_gps_datetime() except (ValueError, TypeError, ZeroDivisionError): gps_dt = None - if gps_dt is not None: + if gps_dt is not None and gps_dt.date() != datetime.date(1970, 1, 1): return gps_dt dt = self.extract_exif_datetime() diff --git a/mapillary_tools/exiftool_read.py b/mapillary_tools/exiftool_read.py index 5906d8ae..90c03870 100644 --- a/mapillary_tools/exiftool_read.py +++ b/mapillary_tools/exiftool_read.py @@ -266,14 +266,14 @@ def extract_capture_time(self) -> T.Optional[datetime.datetime]: dt = self.extract_gps_datetime() except (ValueError, TypeError, ZeroDivisionError): dt = None - if dt is not None: + if dt is not None and dt.date() != datetime.date(1970, 1, 1): return dt try: dt = self.extract_gps_datetime_from_xmp() except (ValueError, TypeError, ZeroDivisionError): dt = None - if dt is not None: + if dt is not None and dt.date() != datetime.date(1970, 1, 1): return dt dt = self.extract_exif_datetime()