MagicTheGathering / mtg-sdk-python

Magic: The Gathering SDK - Python
MIT License
262 stars 45 forks source link

HTTP 500 Error on Every Card Method #39

Open jacobmillsfl opened 1 year ago

jacobmillsfl commented 1 year ago

Whatever backend server this SDK is calling is returning HTTP 500 errors. Even the simple examples in the README fail. Example:

from mtgsdk import Card
card = Card.find(386616)

throws:

  File "/home/user/env/lib/python3.8/site-packages/mtgsdk/restclient.py", line 35, in get
    response = json.loads(urlopen(req).read().decode("utf-8"))
  File "/usr/lib/python3.8/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 500: Internal Server Error

This SDK is unusable if its dependencies are unreliable.

jacobmillsfl commented 1 year ago

The issue is with the API https://api.magicthegathering.io/v1

It's down. Any idea who manages it or if there is an alternative?

UPDATE: Actually the API is fine, the base URI just doesn't return anything by itself. That means something is wrong with the SDK. I'll continue to investigate.

jacobmillsfl commented 1 year ago

And the issue is with the API after all. The MTG SDK attempts to "load all" by iterating each page. The API is throwing errors when giving a page other than 1. Example: This throws an error on the API.

https://api.magicthegathering.io/v1/cards?name=nissa&page=2

I could care less about paging in my app though. A single page of matches is more than enough. It would be nice if the caller was provided with a way to set fetch_all = False.

jacobmillsfl commented 1 year ago

It looks like the API is throwing errors intermittently even for non-paging queries.

jacobmillsfl commented 1 year ago

I switched to the Scryfall API and wrote my own SDK.