From b07d26c38940990b5027b7b7410d6bbcc2e63ab3 Mon Sep 17 00:00:00 2001 From: Evan Thomas Date: Sat, 18 Jan 2020 18:03:40 +0100 Subject: [PATCH] Fix issue that breaks elodie if coordinate from exiftool is empty #354 (#355) --- elodie/media/media.py | 6 ++++++ elodie/tests/files/with-null-coordinates.jpg | Bin 0 -> 16596 bytes elodie/tests/media/photo_test.py | 8 ++++++++ 3 files changed, 14 insertions(+) create mode 100755 elodie/tests/files/with-null-coordinates.jpg diff --git a/elodie/media/media.py b/elodie/media/media.py index dce4ef3..788b670 100644 --- a/elodie/media/media.py +++ b/elodie/media/media.py @@ -11,6 +11,7 @@ are used to represent the actual files. from __future__ import print_function import os +import six # load modules from elodie.external.pyexiftool import ExifTool @@ -88,6 +89,11 @@ class Media(Base): for key in self.latitude_keys + self.longitude_keys: if key not in exif: continue + if isinstance(exif[key], six.string_types) and len(exif[key]) == 0: + # If exiftool GPS output is empty, the data returned will be a str + # with 0 length. + # https://github.com/jmathai/elodie/issues/354 + continue # Cast coordinate to a float due to a bug in exiftool's # -json output format. diff --git a/elodie/tests/files/with-null-coordinates.jpg b/elodie/tests/files/with-null-coordinates.jpg new file mode 100755 index 0000000000000000000000000000000000000000..aa623c83eb082c0f4ff523a5d3083170b38f43f9 GIT binary patch literal 16596 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