Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _mapper(isbn, records):
"""Map: canonical <- records."""
# canonical: ISBN-13, Title, Authors, Publisher, Year, Language
try:
canonical = {}
canonical['ISBN-13'] = u(isbn)
canonical['Title'] = records.get('title', u('')).replace(' :', ':')
buf = records.get('author', u(''))
canonical['Authors'] = [x.strip('. ') for x in buf.split(';')]
canonical['Publisher'] = records.get('publisher', u(''))
canonical['Year'] = records.get('year', u(''))
canonical['Language'] = records.get('lang', u(''))
except: # pragma: no cover
LOGGER.debug("RecordMappingError for %s with data %s", isbn, records)
raise RecordMappingError(isbn)
# call stdmeta for extra cleanning and validation
return stdmeta(canonical)
if d['title'] == u('UNKNOWN') or d['isbn'] == u('UNKNOWN'):
LOGGER.critical('Not enough metadata')
return None
d['title'] = cleannewname(d['title'])
cutoff = min(len(d['title']), CUTOFF)
d['title'] = ' '.join(cutoff_tokens(d['title'].split(' '), cutoff))
authorslastnames = [
last_first(authorname)['last'] for authorname in metadata['Authors']
]
d['authorsLastNames'] = ','.join(authorslastnames)
d['firstAuthorLastName'] = authorslastnames[0]
try:
formatted = u(pattern).format(**d)
return cleannewname(formatted)
except KeyError as e:
LOGGER.warning('Error with placeholder: %s', e)
return None
def _mapper(isbn, records):
"""Map: canonical <- records."""
# canonical: ISBN-13, Title, Authors, Publisher, Year, Language
try:
canonical = {}
canonical['ISBN-13'] = u(isbn)
canonical['Title'] = records.get('title', u('')).replace(' :', ':')
buf = records.get('author', u(''))
canonical['Authors'] = [x.strip('. ') for x in buf.split(';')]
canonical['Publisher'] = records.get('publisher', u(''))
canonical['Year'] = records.get('year', u(''))
canonical['Language'] = records.get('lang', u(''))
except: # pragma: no cover
LOGGER.debug("RecordMappingError for %s with data %s", isbn, records)
raise RecordMappingError(isbn)
# call stdmeta for extra cleanning and validation
return stdmeta(canonical)
"""Map: canonical <- records."""
# canonical: ISBN-13, Title, Authors, Publisher, Year, Language
try:
canonical = {}
canonical['ISBN-13'] = u(isbn)
canonical['Title'] = records.get('title', u('')).replace(' :', ':')
buf = records.get('author', u(''))
canonical['Authors'] = [x.strip('. ') for x in buf.split(';')]
canonical['Publisher'] = records.get('publisher', u(''))
canonical['Year'] = records.get('year', u(''))
canonical['Language'] = records.get('lang', u(''))
except: # pragma: no cover
LOGGER.debug("RecordMappingError for %s with data %s", isbn, records)
raise RecordMappingError(isbn)
# call stdmeta for extra cleanning and validation
return stdmeta(canonical)
if ref in _REFERENCE_CACHE:
parsed_ref = _REFERENCE_CACHE[ref]
elif ref.startswith('@'):
parsed_ref = ref
elif ref.startswith('url:'):
# uses arbitrary key
url = ref.split('url:')[1]
parsed_ref = """@misc{{url:{0},
url = {{{1}}}
}}""".format(str(abs(url.__hash__()))[0:6], url)
elif ref.startswith('doi:'):
doi = ref.split('doi:')[1]
parsed_ref = content_negotiation(doi, format='bibentry')
elif ref.startswith('isbn:'):
isbn = ref.split('isbn:')[1]
parsed_ref = bibformatters['bibtex'](meta(isbn))
else:
raise ValueError('Unknown reference style for '
'reference: {} (please either '
'supply a BibTeX string, or a string '
'starting with url: followed by a URL or '
'starting with doi: followed by a DOI)'.format(ref))
if check_if_valid_citation:
try:
_ = references_to_markdown(parsed_ref)
except Exception as ex:
raise ValueError("Reference '{}' returned the following error.\n"
"You may need to manually generate a bibtex string:\n"
"{}".format(ref, ex))
if ref not in _REFERENCE_CACHE:
_REFERENCE_CACHE[ref] = parsed_ref
def _mapper(isbn, records):
"""Map canonical <- records."""
# canonical:
# -> ISBN-13, Title, Authors, Publisher, Year, Language
try:
# mapping: canonical <- records
canonical = {}
canonical['ISBN-13'] = u(isbn)
canonical['Title'] = records.get('title', u('')).replace(' :', ':')
# try to handle the inconsistent use of fields by Wikipedia (issue #65)!
try:
authors = [
author for sublist in records.get('authors', [])
for author in sublist if author
]
canonical['Authors'] = [
author.replace('.', u('')) for author in authors
]
if not canonical['Authors']:
raise IndexError
except IndexError:
try:
authors = [
author for sublist in records.get('contributor', [])
for author in sublist if author
# -> ISBN-13, Title, Authors, Publisher, Year, Language
try:
# mapping: canonical <- records
canonical = {}
canonical['ISBN-13'] = u(isbn)
# assert isbn == records['isbn13'], "isbn was mungled!"
canonical['Title'] = records.get('title', u(''))
authors = [a['name'] for a in records['author_data']]
canonical['Authors'] = authors
canonical['Publisher'] = records.get('publisher_name', u(''))
canonical['Year'] = u('')
if 'edition_info' in records:
match = re.search(PATT_YEAR, records['edition_info'])
if match:
canonical['Year'] = str(match.group(0))
canonical['Language'] = records.get('language', u(''))
except:
raise RecordMappingError(isbn)
# call stdmeta for extra cleanning and validation
return stdmeta(canonical)
def _mapper(isbn, records):
"""Map canonical <- records."""
# canonical:
# -> ISBN-13, Title, Authors, Publisher, Year, Language
try:
# mapping: canonical <- records
canonical = {}
canonical['ISBN-13'] = u(isbn)
canonical['Title'] = records.get('title', u('')).replace(' :', ':')
# try to handle the inconsistent use of fields by Wikipedia (issue #65)!
try:
authors = [
author for sublist in records.get('authors', [])
for author in sublist if author
]
canonical['Authors'] = [
author.replace('.', u('')) for author in authors
]
if not canonical['Authors']:
raise IndexError
except IndexError:
try:
authors = [
author for sublist in records.get('contributor', [])
def _set_empty(self):
"""Set an empty value record."""
self._content = dict.fromkeys(list(FIELDS), u(''))
self._content['Authors'] = [u('')]
def _records(isbn, data):
"""Classify (canonically) the parsed data."""
# put the selected data in records
try:
recs = data['items'][0]['volumeInfo']
except Exception: # pragma: no cover
# don't raise exception!
LOGGER.debug('No data from "goob" for isbn %s', isbn)
return {}
# consistency check (isbn request = isbn response)
if recs:
ids = recs.get('industryIdentifiers', '')
if u('ISBN_13') in repr(ids) and isbn not in repr(
ids): # pragma: no cover
LOGGER.debug('ISBNNotConsistentError for %s (%s)', isbn, repr(ids))
raise ISBNNotConsistentError('{0} not in {1}'.format(
isbn, repr(ids)))
else:
return {} # pragma: no cover
# map canonical <- records
return _mapper(isbn, recs)