pybliometrics-dev / pybliometrics

Python-based API-Wrapper to access Scopus
https://pybliometrics.readthedocs.io/en/stable/
Other
401 stars 124 forks source link

Errors in citescoreyearinfolist #297

Closed saulfield closed 10 months ago

saulfield commented 11 months ago

pybliometrics version: 3.5.2

Code to reproduce the bug:

from pybliometrics.scopus import SerialTitle

serial_title = SerialTitle("2212697X")
print(serial_title.citescoreyearinfolist) # first error here

serial_title = SerialTitle("00224324")
print(serial_title.citescoreyearinfolist) # second error here

First error:

Traceback (most recent call last):
  File "bug.py", line 4, in <module>
    print(serial_title.citescoreyearinfolist) # first error here
  File "/home/saul/code/pybliometrics/pybliometrics/scopus/serial_title.py", line 28, in citescoreyearinfolist
    float(d['citeScoreCurrentMetric']))
TypeError: float() argument must be a string or a number, not 'NoneType'

Second error:

Traceback (most recent call last):
  File "bug.py", line 7, in <module>
    print(serial_title.citescoreyearinfolist) # second error here
  File "/home/saul/code/pybliometrics/pybliometrics/scopus/serial_title.py", line 29, in citescoreyearinfolist
    tracker = (d['citeScoreTrackerYear'], d['citeScoreTracker'])
KeyError: 'citeScoreTrackerYear'
Michael-E-Rose commented 10 months ago

Thanks for the catch! Definitely my initial attempt wasn't robust enough.

And thank you very much for the PR! I came up with a different solution though, that retains as much information as possible. Also, I try to avoid all empty containers (like [None, None]). So my solution returns [(2019, None), None] for "2212697X".