diff options
author | Martin Czygan <martin.czygan@gmail.com> | 2019-12-26 17:53:26 +0100 |
---|---|---|
committer | Martin Czygan <martin.czygan@gmail.com> | 2019-12-28 23:07:32 +0100 |
commit | 133cc910c07187a349a336b1b7107d67dc3aed3e (patch) | |
tree | 868cbb86bc9c873bb77718e0cabfe3ba39e20506 | |
parent | 13430af9e8c2e39ba90a7db2135496503fb020b2 (diff) | |
download | fatcat-133cc910c07187a349a336b1b7107d67dc3aed3e.tar.gz fatcat-133cc910c07187a349a336b1b7107d67dc3aed3e.zip |
datacite: include container_name top level key in extra
-rw-r--r-- | python/fatcat_tools/importers/datacite.py | 28 |
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 |