66from bibtexparser .bibdatabase import BibDatabase
77import dateutil .parser as parser
88import pytz
9+ import re
910
1011export_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+
2335def 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