From 46c8d5c196bc39cd95d002ec7eb14352071920b8 Mon Sep 17 00:00:00 2001 From: Aaron Collier Date: Tue, 28 Jan 2025 08:56:48 -0800 Subject: [PATCH] Ignore provider specific metadata in IIIF that doesn't match the spec --- dlme_airflow/drivers/iiif_json.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dlme_airflow/drivers/iiif_json.py b/dlme_airflow/drivers/iiif_json.py index b1c9628e..e72d50b8 100644 --- a/dlme_airflow/drivers/iiif_json.py +++ b/dlme_airflow/drivers/iiif_json.py @@ -101,7 +101,11 @@ def _extract_manifest_metadata( ) -> dict[str, list[str]]: output: dict[str, list[str]] = {} for row in iiif_manifest_metadata: - for data in self._metadata_from_row(row): + metadata = self._metadata_from_row(row) + if metadata is None: + continue + + for data in metadata: label = data.get("label") value = data.get("value") @@ -191,6 +195,7 @@ def _tag_label(label: str, value) -> dict: if isinstance(value, list): return [_tag_label(label, val) for val in value] if isinstance(value, dict): - return [{"label": f"{label}_{value['@language']}", "value": _listify_if_string_or_dict(value['@value'])}] + if '@language' in value.keys(): + return [{"label": f"{label}_{value['@language']}", "value": _listify_if_string_or_dict(value['@value'])}] else: return [{"label": label, "value": _listify_if_string_or_dict(value)}]