added alpha version of exiftool_json_sidecar to export()
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user