added alpha version of exiftool_json_sidecar to export()

This commit is contained in:
Rhet Turnbull
2019-12-15 21:12:25 -08:00
parent 1fe885962e
commit eb7ec9b5c6
2 changed files with 25 additions and 7 deletions

View File

@@ -1513,7 +1513,15 @@ class PhotoInfo:
""" returns (latitude, longitude) as float in degrees or None """ """ returns (latitude, longitude) as float in degrees or None """
return (self._latitude(), self._longitude()) return (self._latitude(), self._longitude())
def export(self, dest, *filename, edited=False, overwrite=False, increment=True): def export(
self,
dest,
*filename,
edited=False,
overwrite=False,
increment=True,
sidecar=False,
):
""" export photo """ """ export photo """
""" first argument must be valid destination path (or exception raised) """ """ first argument must be valid destination path (or exception raised) """
""" second argument (optional): name of picture; if not provided, will use current filename """ """ second argument (optional): name of picture; if not provided, will use current filename """
@@ -1521,10 +1529,12 @@ class PhotoInfo:
""" if overwrite=True (default=False), will overwrite files if they alreay exist """ """ if overwrite=True (default=False), will overwrite files if they alreay exist """
""" if increment=True (default=True), will increment file name until a non-existant name is found """ """ if increment=True (default=True), will increment file name until a non-existant name is found """
""" if overwrite=False and increment=False, export will fail if destination file already exists """ """ if overwrite=False and increment=False, export will fail if destination file already exists """
""" if sidecar=True, will also write a json sidecar with EXIF data in format readable by exiftool """
""" sidecar filename will be dest/filename.ext.json where ext is suffix of the image file (e.g. jpeg or jpg) """
""" returns the full path to the exported file """ """ returns the full path to the exported file """
# TODO: find better way to do *args # TODO: add this docs:
# maybe dest, *filename? # ( for jpeg in *.jpeg; do exiftool -v -json=$jpeg.json $jpeg; done )
# check arguments and get destination path and filename (if provided) # check arguments and get destination path and filename (if provided)
if filename and len(filename) > 2: if filename and len(filename) > 2:
@@ -1553,9 +1563,7 @@ class PhotoInfo:
) )
edited_name = Path(self.path_edited()).name edited_name = Path(self.path_edited()).name
edited_suffix = Path(edited_name).suffix edited_suffix = Path(edited_name).suffix
filename = ( filename = Path(self.filename()).stem + "_edited" + edited_suffix
Path(self.filename()).stem + "_edited" + edited_suffix
)
else: else:
filename = self.filename() filename = self.filename()
@@ -1624,6 +1632,16 @@ class PhotoInfo:
) )
raise e raise e
if sidecar:
logging.debug("writing exiftool_json_sidecar")
sidecar_filename = f"{dest}.json"
json_sidecar_str = self._exiftool_json_sidecar()
try:
self._write_sidecar_car(sidecar_filename,json_sidecar_str)
except Exception as e:
logging.critical(f"Error writing json sidecar to {sidecar_filename}")
raise e
return str(dest) return str(dest)
def _exiftool_json_sidecar(self): def _exiftool_json_sidecar(self):