diff options
Diffstat (limited to 'chocula/directories/crossref.py')
-rw-r--r-- | chocula/directories/crossref.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/chocula/directories/crossref.py b/chocula/directories/crossref.py new file mode 100644 index 0000000..ba47566 --- /dev/null +++ b/chocula/directories/crossref.py @@ -0,0 +1,36 @@ + +from typing import Iterable, Optional +import csv + +from chocula.util import clean_str +from chocula.common import DirectoryLoader +from chocula.database import DirectoryInfo + + +class CrossrefLoader(DirectoryLoader): + """ + CSV Columns: + + #"JournalTitle","JournalID","Publisher","pissn","eissn","additionalIssns","doi","(year1)[volume1]issue1,issue2,issue3(year2)[volume2]issue4,issues5" + + """ + + source_slug = "crossref" + + def open_file(self) -> Iterable: + return csv.DictReader(open(self.config.CROSSREF_FILE)) + + def parse_record(self, record) -> Optional[DirectoryInfo]: + info = DirectoryInfo( + directory_slug=self.source_slug, + issne=record['eissn'], + issnp=record['pissn'], + custom_id=record.get('doi').strip() or None, + name=clean_str(record.get('JournalTitle')), + publisher=clean_str(record.get('Publisher')), + ) + + if record['additionalIssns']: + info.raw_issn = record['additionalIssns'][0] + + return info |