diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/fatcat/crossref_importer.py | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/python/fatcat/crossref_importer.py b/python/fatcat/crossref_importer.py index 8e179b69..10efe59c 100644 --- a/python/fatcat/crossref_importer.py +++ b/python/fatcat/crossref_importer.py @@ -195,11 +195,20 @@ class FatcatCrossrefImporter(FatcatImporter):          if max(len(contribs), len(refs), len(abstracts)) > 750:              return None +        # release date parsing is amazingly complex          release_date = obj['issued']['date-parts'][0] -        if len(release_date) == 3: +        if not release_date or not release_date[0]: +            # got some NoneType, even though at least year is supposed to be set +            release_date = None +        elif len(release_date) == 3:              release_date = datetime.datetime(year=release_date[0], month=release_date[1], day=release_date[2])          else: +            # only the year is actually required; mangle to first day for date +            # (TODO: something better?)              release_date = datetime.datetime(year=release_date[0], month=1, day=1) +        # convert to string ISO datetime format (if not null) +        if release_date: +            release_date = release_date.isoformat() + "Z"          re = fatcat_client.ReleaseEntity(              work_id=None, @@ -216,7 +225,7 @@ class FatcatCrossrefImporter(FatcatImporter):              pmid=extids['pmid'],              pmcid=extids['pmcid'],              wikidata_qid=extids['wikidata_qid'], -            release_date=release_date.isoformat() + "Z", +            release_date=release_date,              issue=obj.get('issue'),              volume=obj.get('volume'),              pages=obj.get('page'), | 
