diff --git a/openflexure_microscope/api/v2/blueprints/actions/camera.py b/openflexure_microscope/api/v2/blueprints/actions/camera.py index 3e21658e..8dcc1386 100644 --- a/openflexure_microscope/api/v2/blueprints/actions/camera.py +++ b/openflexure_microscope/api/v2/blueprints/actions/camera.py @@ -87,7 +87,7 @@ class CaptureAPI(MicroscopeView): ) # Inject system metadata - output.system_metadata.update(self.microscope.metadata) + output.put_metadata(self.microscope.metadata, system=True) # Insert custom metadata output.put_metadata(metadata) diff --git a/openflexure_microscope/camera/capture.py b/openflexure_microscope/camera/capture.py index 17e244d1..7a9a49b6 100644 --- a/openflexure_microscope/camera/capture.py +++ b/openflexure_microscope/camera/capture.py @@ -95,11 +95,11 @@ def capture_from_exif(path, exif_dict): # Populate capture parameters capture.id = exif_dict["id"] - capture.timestring = exif_dict["time"] capture.format = exif_dict["format"] capture.custom_metadata = exif_dict["custom"] + capture.system_metadata = exif_dict["system"] capture.tags = exif_dict["tags"] return capture @@ -200,14 +200,17 @@ class CaptureObject(object): # HANDLE METADATA - def put_metadata(self, data: dict) -> None: + def put_metadata(self, data: dict, system: bool=False) -> None: """ Merge metadata from a passed dictionary into the capture metadata, and saves. Args: data (dict): Dictionary of metadata to be added """ - self.custom_metadata.update(data) + if system: + self.system_metadata.update(data) + else: + self.custom_metadata.update(data) self.save_metadata() def save_metadata(self) -> None: @@ -222,6 +225,7 @@ class CaptureObject(object): exif_dict = piexif.load(self.file) # Serialize metadata metadata_string = json.dumps(self.metadata, cls=JSONEncoder) + logging.debug(f"Saving metadata string to file: {metadata_string}") # Insert metadata into exif_dict exif_dict["Exif"][piexif.ExifIFD.UserComment] = metadata_string.encode() # Convert new exif dict to exif bytes @@ -241,10 +245,9 @@ class CaptureObject(object): "format": self.format, "tags": self.tags, "custom": self.custom_metadata, + "system": self.system_metadata } - d.update(self.system_metadata) - # Add custom metadata to dictionary return d diff --git a/openflexure_microscope/plugins/default/scan/plugin.py b/openflexure_microscope/plugins/default/scan/plugin.py index 6cd7a698..ac92fc68 100644 --- a/openflexure_microscope/plugins/default/scan/plugin.py +++ b/openflexure_microscope/plugins/default/scan/plugin.py @@ -100,7 +100,7 @@ class ScanPlugin(MicroscopePlugin): tags.append("scan") # Inject system metadata - output.system_metadata.update(self.microscope.metadata) + output.put_metadata(self.microscope.metadata, system=True) # Insert custom metadata output.put_metadata(metadata)