diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 8d2e9f15..17525349 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -326,3 +326,11 @@ def infer_physical_format(format_text): if not matches: return None return matches[0] + +def unique_physical_format(format_text): + """ only store the format if it isn't diretly in the format mappings""" + format_text = format_text.lower() + if format_text in format_mappings: + # try a direct match, so saving this would be redundant + return None + return format_text diff --git a/bookwyrm/connectors/openlibrary.py b/bookwyrm/connectors/openlibrary.py index 7f724d74..5177f665 100644 --- a/bookwyrm/connectors/openlibrary.py +++ b/bookwyrm/connectors/openlibrary.py @@ -3,7 +3,7 @@ import re from bookwyrm import models from .abstract_connector import AbstractConnector, SearchResult, Mapping -from .abstract_connector import get_data, infer_physical_format +from .abstract_connector import get_data, infer_physical_format, unique_physical_format from .connector_manager import ConnectorException from .openlibrary_languages import languages @@ -44,7 +44,7 @@ class Connector(AbstractConnector): Mapping("publishedDate", remote_field="publish_date"), Mapping("pages", remote_field="number_of_pages"), Mapping("physicalFormat", remote_field="physical_format", formatter=infer_physical_format), - Mapping("physicalFormatDetail", remote_field="physical_format"), + Mapping("physicalFormatDetail", remote_field="physical_format", formatter=unique_physical_format), Mapping("publishers"), ]