diff --git a/scrython/cards/cards_object.py b/scrython/cards/cards_object.py index 3174569..96a9022 100644 --- a/scrython/cards/cards_object.py +++ b/scrython/cards/cards_object.py @@ -420,15 +420,15 @@ class CardsObject(FoundationObject): return self.scryfallJson['frame'] - def frame_effect(self): + def frame_effects(self): """The card's frame effect, if any. (miracle, nyxtouched, etc.) Returns: - string: The card's frame effect. + list: The card's frame effects. """ - super(CardsObject, self)._checkForKey('frame_effect') + super(CardsObject, self)._checkForKey('frame_effects') - return self.scryfallJson['frame_effect'] + return self.scryfallJson['frame_effects'] def full_art(self): """Returns True if the card is considered full art @@ -472,13 +472,13 @@ class CardsObject(FoundationObject): Returns: float: The prices as a float """ - modes = ['usd', 'eur', 'tix'] + modes = ['usd', 'usd_foil', 'eur', 'tix'] if mode not in modes: raise KeyError("{} is not a key.".format(mode)) - super(CardsObject, self)._checkForKey(mode) + super(CardsObject, self)._checkForKey('prices', mode) - return self.scryfallJson[mode] + return self.scryfallJson['prices'][mode] def related_uris(self): """A dictionary of related websites for this card diff --git a/scrython/foundation.py b/scrython/foundation.py index 844224c..93891e8 100644 --- a/scrython/foundation.py +++ b/scrython/foundation.py @@ -37,7 +37,7 @@ class FoundationObject(object): if self.scryfallJson['object'] == 'error': raise ScryfallError(self.scryfallJson, self.scryfallJson['details']) - def _checkForKey(self, key): + def _checkForKey(self, key, nested_key=None): """Checks for a key in the scryfallJson object. This function should be considered private, and should not be accessed in production. @@ -51,6 +51,11 @@ class FoundationObject(object): if not key in self.scryfallJson: raise KeyError('This card has no key \'{}\''.format(key)) + if nested_key: + if not nested_key in self.scryfallJson[key]: + raise KeyError('This card has no key \'{}.{}\''.format(key, nested_key)) + + def _checkForTupleKey(self, parent, num, key): """Checks for a key of an object in an array. This function should be considered private, and diff --git a/unittests/TestCards.py b/unittests/TestCards.py index daeff35..bc163f4 100644 --- a/unittests/TestCards.py +++ b/unittests/TestCards.py @@ -240,8 +240,8 @@ class TestSearch(unittest.TestCase): def test_tcgplayer_id(self): self.assertIsInstance(non_online_card.tcgplayer_id(), int) - def test_frame_effect(self): - self.assertIsInstance(transform.frame_effect(), str) + def test_frame_effects(self): + self.assertIsInstance(transform.frame_effects(), list) def test_games(self): self.assertIsInstance(non_online_card.games(), list)