Added as_dict to ExifTool
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
""" version info """
|
""" version info """
|
||||||
|
|
||||||
__version__ = "0.28.15"
|
__version__ = "0.28.16"
|
||||||
|
|||||||
@@ -232,20 +232,27 @@ class ExifTool:
|
|||||||
ver = self.run_commands("-ver", no_file=True)
|
ver = self.run_commands("-ver", no_file=True)
|
||||||
return ver.decode("utf-8")
|
return ver.decode("utf-8")
|
||||||
|
|
||||||
def json(self):
|
def as_dict(self):
|
||||||
""" return JSON dictionary from exiftool as dict """
|
""" return dictionary of all EXIF tags and values from exiftool
|
||||||
|
returns empty dict if no tags
|
||||||
|
"""
|
||||||
json_str = self.run_commands("-json")
|
json_str = self.run_commands("-json")
|
||||||
if json_str:
|
if json_str:
|
||||||
return json.loads(json_str)
|
exifdict = json.loads(json_str)
|
||||||
|
return exifdict[0]
|
||||||
else:
|
else:
|
||||||
return None
|
return dict()
|
||||||
|
|
||||||
|
def json(self):
|
||||||
|
""" returns JSON string containing all EXIF tags and values from exiftool """
|
||||||
|
json_str = self.run_commands("-json")
|
||||||
|
return json_str
|
||||||
|
|
||||||
def _read_exif(self):
|
def _read_exif(self):
|
||||||
""" read exif data from file """
|
""" read exif data from file """
|
||||||
json = self.json()
|
data = self.as_dict()
|
||||||
self.data = {k: v for k, v in json[0].items()}
|
self.data = {k: v for k, v in data.items()}
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
str_ = f"file: {self.file}\nexiftool: {self._exiftoolproc._exiftool}"
|
str_ = f"file: {self.file}\nexiftool: {self._exiftoolproc._exiftool}"
|
||||||
return str_
|
return str_
|
||||||
|
|
||||||
|
|||||||
@@ -161,13 +161,21 @@ def test_exiftoolproc_exiftool():
|
|||||||
assert exif1._exiftoolproc.exiftool == osxphotos.exiftool.get_exiftool_path()
|
assert exif1._exiftoolproc.exiftool == osxphotos.exiftool.get_exiftool_path()
|
||||||
|
|
||||||
|
|
||||||
|
def test_as_dict():
|
||||||
|
import osxphotos.exiftool
|
||||||
|
|
||||||
|
exif1 = osxphotos.exiftool.ExifTool(TEST_FILE_ONE_KEYWORD)
|
||||||
|
exifdata = exif1.as_dict()
|
||||||
|
assert exifdata["XMP:TagsList"] == "wedding"
|
||||||
|
|
||||||
|
|
||||||
def test_json():
|
def test_json():
|
||||||
import osxphotos.exiftool
|
import osxphotos.exiftool
|
||||||
import json
|
import json
|
||||||
|
|
||||||
exif1 = osxphotos.exiftool.ExifTool(TEST_FILE_ONE_KEYWORD)
|
exif1 = osxphotos.exiftool.ExifTool(TEST_FILE_ONE_KEYWORD)
|
||||||
json1 = exif1.json()
|
exifdata = json.loads(exif1.json())
|
||||||
assert json1[0]["XMP:TagsList"] == "wedding"
|
assert exifdata[0]["XMP:TagsList"] == "wedding"
|
||||||
|
|
||||||
|
|
||||||
def test_str():
|
def test_str():
|
||||||
|
|||||||
Reference in New Issue
Block a user