summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Czygan <martin.czygan@gmail.com>2019-12-26 17:53:26 +0100
committerMartin Czygan <martin.czygan@gmail.com>2019-12-28 23:07:32 +0100
commit133cc910c07187a349a336b1b7107d67dc3aed3e (patch)
tree868cbb86bc9c873bb77718e0cabfe3ba39e20506
parent13430af9e8c2e39ba90a7db2135496503fb020b2 (diff)
downloadfatcat-133cc910c07187a349a336b1b7107d67dc3aed3e.tar.gz
fatcat-133cc910c07187a349a336b1b7107d67dc3aed3e.zip
datacite: include container_name top level key in extra
-rw-r--r--python/fatcat_tools/importers/datacite.py28
1 files changed, 21 insertions, 7 deletions
diff --git a/python/fatcat_tools/importers/datacite.py b/python/fatcat_tools/importers/datacite.py
index 16431928..322e3db9 100644
--- a/python/fatcat_tools/importers/datacite.py
+++ b/python/fatcat_tools/importers/datacite.py
@@ -374,6 +374,7 @@ class DataciteImporter(EntityImporter):
# Container. For the moment, only ISSN as container.
container_id = None
+ container_name = None
container = attributes.get('container', {}) or {}
if container.get('type') in CONTAINER_TYPE_MAP.keys():
@@ -388,21 +389,30 @@ class DataciteImporter(EntityImporter):
container_id = self.lookup_issnl(issnl)
if container_id is None and container.get('title'):
- container_title = container.get('title')
- if isinstance(container_title, list):
- if len(container_title) > 0:
+ container_name = container.get('title')
+ if isinstance(container_name, list):
+ if len(container_name) > 0:
print('[{}] too many container titles: {}'.format(doi,
- len(container_title)))
- container_title = container_title[0]
- assert isinstance(container_title, str)
+ len(container_name)))
+ container_name = container_name[0]
+ assert isinstance(container_name, str)
ce = fatcat_openapi_client.ContainerEntity(
issnl=issnl,
container_type=container_type,
- name=container_title,
+ name=container_name,
)
ce_edit = self.create_container(ce)
container_id = ce_edit.ident
self._issnl_id_map[issnl] = container_id
+ else:
+ # TODO(martin): factor this out into a testable function.
+ # TODO(martin): "container_name": "№1(1) (2018)" / 10.26087/inasan.2018.1.1.013
+ container_name = container.get('title')
+ if isinstance(container_name, list):
+ if len(container_name) > 0:
+ print('[{}] too many container titles: {}'.format(doi,
+ len(container_name)))
+ container_name = container_name[0]
# Volume and issue.
volume = container.get('volume')
@@ -558,6 +568,10 @@ class DataciteImporter(EntityImporter):
extra = dict()
+ # top-level extra keys
+ if not container_id and container_name:
+ extra['container_name'] = container_name
+
if extra_datacite:
extra['datacite'] = extra_datacite