johnwmillr / LyricsGenius

Download song lyrics and metadata from Genius.com 🎶🎤
http://www.johnwmillr.com/scraping-genius-lyrics/
MIT License
904 stars 159 forks source link

Request timed out during API call for songs of an artist #252

Closed zuziaszwedo closed 1 year ago

zuziaszwedo commented 1 year ago

Hello !

I am very new to all this, so please bare with me ! I am using the following code to get 5 songs from an artist as I am working on an interactive project

import lyricsgenius
genius = lyricsgenius.Genius('8aKNKKlQAG6TEwzegzoDyMxhek_rHx0UTquVucRjEPmpjLDvhyAZqcCGFm75hIdr')

artist = genius.search_artist(input('Who is your favorite artist? '), max_songs=5)

print(artist.songs)

It works for some artists and doesn't for others, for instance it doesn't work for Drake and the following error message appears

Traceback (most recent call last):
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 449, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 444, in _make_request
    httplib_response = conn.getresponse()
                       ^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1374, in getresponse
    response.begin()
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
                              ^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1278, in recv_into
    return self.read(nbytes, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 1134, in read
    return self._sslobj.read(len, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/util/retry.py", line 550, in increment
    raise six.reraise(type(error), error, _stacktrace)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/packages/six.py", line 770, in reraise
    raise value
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
                       ^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 451, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 340, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.genius.com', port=443): Read timed out. (read timeout=5)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/lyricsgenius/api/base.py", line 75, in _make_request
    response = self._session.request(method, uri,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/requests/adapters.py", line 578, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.genius.com', port=443): Read timed out. (read timeout=5)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/zuzia/PycharmProjects/cfg-python/CFG_Project.py", line 22, in <module>
    artist = genius.search_artist(input('Who is your favorite artist? '), max_songs=5)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/lyricsgenius/genius.py", line 568, in search_artist
    new_info = self.song(song_info['id'])['song']
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/lyricsgenius/api/api.py", line 437, in song
    return self._make_request(endpoint, params_=params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zuzia/PycharmProjects/cfg-python/venv/lib/python3.11/site-packages/lyricsgenius/api/base.py", line 84, in _make_request
    raise Timeout(error)
requests.exceptions.Timeout: Request timed out:
HTTPSConnectionPool(host='api.genius.com', port=443): Read timed out. (read timeout=5)

I have read the issue #121 but despite the solutions provided there it still didn't seem to work perfectly. The strangest is when 2 or 3 songs pop up and then the error message appears.

Thanks so much for any tips ! :)