Skip to content

Commit b5c3e4b

Browse files
authored
Merge pull request #643 from OpenKnowledgeMaps/interface-changes-export-backend
Interface changes export backend
2 parents 94ec294 + e10f947 commit b5c3e4b

1 file changed

Lines changed: 26 additions & 4 deletions

File tree

server/workers/api/src/apis/export.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from bibtexparser.bibdatabase import BibDatabase
77
import dateutil.parser as parser
88
import pytz
9+
import re
910

1011
export_ns = Namespace("export", description="metadata export API operations")
1112

@@ -20,15 +21,33 @@ def parse_date(date):
2021
parsed_date["day"] = str(dt.day)
2122
return parsed_date
2223

24+
def create_authorfield(authors_objects):
25+
authors = []
26+
for ao in authors_objects:
27+
if "lastName" in ao:
28+
author = ao["lastName"]
29+
if "lastName" in ao and "firstName" in ao:
30+
author = "{lastName}, {firstName}".format(**ao)
31+
authors.append(author)
32+
authorstring = " and ".join(authors)
33+
return authorstring
34+
2335
def transform2bibtex(metadata):
2436
# TODO: add mapping from resulttype to ARTICLETYPE
2537
# possible published_in parser
2638
# field renaming, e.g. paper_abstract to abstract
2739
# choose correct fields, e.g. author_string for author
2840
# use different field for ID
2941
title = metadata.get("title", "")
30-
author = metadata.get("authors", "")
42+
try:
43+
author = create_authorfield(metadata.get("authors_objects", []))
44+
except Exception:
45+
author = metadata.get("authors", "")
3146
doi = metadata.get("doi", "")
47+
try:
48+
doi = re.sub("https://|http://|dx.doi.org/|doi.org/", "", doi)
49+
except Exception:
50+
pass
3251
id = metadata.get("id", "")
3352
published_in = metadata.get("published_in", "")
3453
url = metadata.get("list_link", {}).get("address", "")
@@ -44,9 +63,12 @@ def transform2bibtex(metadata):
4463
"ID": id
4564
}
4665
if "year" in metadata:
47-
parsed_date = parse_date(metadata.get("year", ""))
48-
for k,v in parsed_date.items():
49-
fields[k] = v
66+
try:
67+
parsed_date = parse_date(metadata.get("year", ""))
68+
for k,v in parsed_date.items():
69+
fields[k] = v
70+
except Exception:
71+
fields["year"] = ""
5072
else:
5173
fields["year"] = ""
5274

0 commit comments

Comments
 (0)