Kometa-Team / TMDbAPIs

A lightweight Python library for TMDb V3 and V4 APIs.
https://tmdbapis.metamanager.wiki
MIT License
11 stars 0 forks source link

[Bug]: `find_by_id()` erroneously raises `TMDbException` #4

Closed CollinHeist closed 2 years ago

CollinHeist commented 2 years ago

Version Number

1.0.6

Describe the Bug

In some random instances, calling find_by_id() raises an TMDbException due to some error decompressing data.

This consistently happens with find_by_id(tvdb_id='445866') which is this episode.

Reproduce with:

from tmdbapis import TMDbAPIs

api = TMDbAPIs(api_key)
api.find_by_id(tvdb_id='445866')

Full traceback is:

Traceback (most recent call last):
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/urllib3/response.py", line 406, in _decode
    data = self._decoder.decompress(data)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/urllib3/response.py", line 93, in decompress
    ret += self._obj.decompress(data)
zlib.error: Error -3 while decompressing data: incorrect header check

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/models.py", line 816, in generate
    yield from self.raw.stream(chunk_size, decode_content=True)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/urllib3/response.py", line 623, in stream
    for line in self.read_chunked(amt, decode_content=decode_content):
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/urllib3/response.py", line 819, in read_chunked
    decoded = self._decode(
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/urllib3/response.py", line 409, in _decode
    raise DecodeError(
urllib3.exceptions.DecodeError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/api3.py", line 75, in _request
    self.response = self._session.get(request_url, params=url_params)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/sessions.py", line 600, in get
    return self.request("GET", url, **kwargs)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/sessions.py", line 745, in send
    r.content
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/models.py", line 899, in content
    self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b""
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/requests/models.py", line 820, in generate
    raise ContentDecodingError(e)
requests.exceptions.ContentDecodingError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/CollinHeist/Downloads/testing/test.py", line 6, in <module>
    api.find_by_id(tvdb_id='445866')
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/tmdb.py", line 867, in find_by_id
    return FindResults(self, tvdb_id, "tvdb_id")
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/objs/simple.py", line 151, in __init__
    super().__init__(tmdb, None)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/objs/base.py", line 21, in __init__
    self._load(data)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/objs/simple.py", line 154, in _load
    super()._load(self._api.find_find_by_id(self._external_id, self._external_source, language=self._tmdb.language))
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/api3.py", line 970, in find_find_by_id
    return self._get(
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/api3.py", line 42, in _get
    return self._request("get", path, **kwargs)
  File "/Users/CollinHeist/.local/share/virtualenvs/CollinHeist-n9hsrS8j/lib/python3.9/site-packages/tmdbapis/api3.py", line 78, in _request
    raise TMDbException(f"Failed to Connect to {base_url}: {e}")
tmdbapis.exceptions.TMDbException: Failed to Connect to https://api.themoviedb.org/3: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))

This might be a TMDb API problem, because performing the raw request in a browser with this URL:

http://api.themoviedb.org/3/find/445866?api_key={api_key}&external_source=tvdb_id&language=en

Returns this webpage (when it should be a JSON package):

Screen Shot 2022-08-06 at 9 46 29 PM

CollinHeist commented 2 years ago

I'll close this for now, seems like an issue that has fixed itself? Probably TMDb-server-side