Updated docstrings and some functionality. Still working on cards_object
This commit is contained in:
		
							parent
							
								
									50516684f9
								
							
						
					
					
						commit
						b90946240c
					
				| 
						 | 
				
			
			@ -7,7 +7,7 @@ class ArenaId(CardsObject):
 | 
			
		|||
 | 
			
		||||
    Args:
 | 
			
		||||
        id (string):
 | 
			
		||||
            The Scryfall Id of the card.
 | 
			
		||||
            The Arena Id of the card.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
| 
						 | 
				
			
			@ -23,8 +23,9 @@ class ArenaId(CardsObject):
 | 
			
		|||
            Returns a prettier version of the json object.
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        All attributes are inherited from CardsObject.
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'id' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.ArenaId(id="66975")
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,7 @@ class ArenaId(CardsObject):
 | 
			
		|||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('id') is None:
 | 
			
		||||
            raise TypeError('No id provided to search by')
 | 
			
		||||
            raise Exception('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/arena/{}?'.format(str(kwargs.get('id')))
 | 
			
		||||
        super(ArenaId, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,13 +25,17 @@ class Autocomplete(CardsObject):
 | 
			
		|||
            Returns a prettier version of the json object. 
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'q' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> auto = scrython.cards.Autocomplete(q="Thal")
 | 
			
		||||
        >>> auto.total_items()
 | 
			
		||||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('q') is None:
 | 
			
		||||
            raise TypeError('No query provided to search by')
 | 
			
		||||
            raise Exception('No query provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.dict = { 'q': kwargs.get('q') }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,14 +5,27 @@ class Id(CardsObject):
 | 
			
		|||
    cards/id
 | 
			
		||||
    Get a card by the Scryfall id.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        id : str ....................... The Scryfall Id of the card.
 | 
			
		||||
    Args:
 | 
			
		||||
        id (string):
 | 
			
		||||
            The Scryfall Id of the card.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the small, normal,
 | 
			
		||||
            large, etc version of the image.
 | 
			
		||||
        pretty (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object.
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        Inherits all arguments from CardsObject.
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        All attributes are inherited from CardsObject.
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'id' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Id(id="5386a61c-4928-4bd1-babe-5b089ab8b2d9")
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +33,7 @@ class Id(CardsObject):
 | 
			
		|||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('id') is None:
 | 
			
		||||
            raise TypeError('No id provided to search by')
 | 
			
		||||
            raise Exception('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/{}?'.format(str(kwargs.get('id')))
 | 
			
		||||
        super(Id, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,18 +19,6 @@ class CardsObject(object):
 | 
			
		|||
        pretty : str ... Returns a prettier version of the json object. Note that
 | 
			
		||||
                          this may break functionality with Scrython.
 | 
			
		||||
    Attributes:
 | 
			
		||||
        object : str  ..... Returns the type of object it is. (card, error, etc)
 | 
			
		||||
        id : str  ................................. The scryfall id of the card.
 | 
			
		||||
        multiverse_ids : list  ...... The associated multiverse ids of the card.
 | 
			
		||||
        mtgo_id : int  ........................ The Magic Online id of the card.
 | 
			
		||||
        mtgo_foil_id : int  .............. The Magic Online foil id of the card.
 | 
			
		||||
        name : str  ................................. The full name of the card.
 | 
			
		||||
        uri : str  .......................... The Scryfall API uri for the card.
 | 
			
		||||
        scryfall_uri : str  ................ The full Scryfall page of the card.
 | 
			
		||||
        layout : str  ... The image layout of the card. (normal, transform, etc)
 | 
			
		||||
        highres_image : bool  ... Returns True if the card has a high res image.
 | 
			
		||||
        image_uris : dict  .... All image uris of the card in various qualities.
 | 
			
		||||
        cmc : float  ........... A float of the converted mana cost of the card.
 | 
			
		||||
        type_line : str  ....................... The full type line of the card.
 | 
			
		||||
        oracle_text : str  ................. The official oracle text of a card.
 | 
			
		||||
        mana_cost : str  .... The full mana cost using shorthanded mana symbols.
 | 
			
		||||
| 
						 | 
				
			
			@ -112,69 +100,153 @@ class CardsObject(object):
 | 
			
		|||
            raise Exception(self.scryfallJson['details'])
 | 
			
		||||
 | 
			
		||||
    def _checkForKey(self, key):
 | 
			
		||||
        """Checks for a key in the scryfallJson object.
 | 
			
		||||
        This function should be considered private, and
 | 
			
		||||
        should not be accessed in production.
 | 
			
		||||
        
 | 
			
		||||
        Args:
 | 
			
		||||
            key (string): The key to check
 | 
			
		||||
        
 | 
			
		||||
        Raises:
 | 
			
		||||
            KeyError: If key is not found.
 | 
			
		||||
        """
 | 
			
		||||
        if not key in self.scryfallJson:
 | 
			
		||||
            raise KeyError('This card has no key \'{}\''.format(key))
 | 
			
		||||
 | 
			
		||||
    def _checkForTupleKey(self, parent, num, key):
 | 
			
		||||
        """Checks for a key of an object in an array.
 | 
			
		||||
        This function should be considered private, and
 | 
			
		||||
        should not be accessed in production.
 | 
			
		||||
        
 | 
			
		||||
        Args:
 | 
			
		||||
            parent (string): The key for the array to be accessed
 | 
			
		||||
            num (int): The index of the array
 | 
			
		||||
            key (string): The key to check
 | 
			
		||||
        
 | 
			
		||||
        Raises:
 | 
			
		||||
            KeyError: If key is not found.
 | 
			
		||||
        """
 | 
			
		||||
        if not key in self.scryfallJson[parent][num]:
 | 
			
		||||
            raise KeyError('This tuple has no key \'{}\''.format(key))
 | 
			
		||||
 | 
			
		||||
    def object(self):
 | 
			
		||||
        """Returns the type of object it is
 | 
			
		||||
        (card, error, etc)
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The type of object
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('object')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
    def id(self):
 | 
			
		||||
        """A unique ID for the returned card object
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The scryfall id of the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('id')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['id']
 | 
			
		||||
 | 
			
		||||
    def multiverse_ids(self):
 | 
			
		||||
        """The official Gatherer multiverse ids of the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            list: The associated multiverse ids of the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('multiverse_ids')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['multiverse_ids']
 | 
			
		||||
 | 
			
		||||
    def mtgo_id(self):
 | 
			
		||||
        """The official MTGO id of the of the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            integer: The Magic Online id of the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('mtgo_id')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['mtgo_id']
 | 
			
		||||
 | 
			
		||||
    def mtgo_foil_id(self):
 | 
			
		||||
        """The corresponding MTGO foil ID of the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            integer: The Magic Online foil id of the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('mtgo_foil_id')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['mtgo_foil_id']
 | 
			
		||||
 | 
			
		||||
    def name(self):
 | 
			
		||||
        """The oracle name of the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The card name
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('name')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['name']
 | 
			
		||||
 | 
			
		||||
    def uri(self):
 | 
			
		||||
        """The Scryfall API uri for the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: An API uri for the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('uri')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['uri']
 | 
			
		||||
 | 
			
		||||
    def scryfall_uri(self):
 | 
			
		||||
        """The full Scryfall page of the card
 | 
			
		||||
        As if it was a URL from the site.
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The Scryfall URL for the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('scryfall_uri')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['scryfall_uri']
 | 
			
		||||
 | 
			
		||||
    def layout(self):
 | 
			
		||||
        """The image layout of the card. (normal, transform, etc)
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The card layout
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('layout')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['layout']
 | 
			
		||||
 | 
			
		||||
    def highres_image(self):
 | 
			
		||||
        """Determine if a card has a highres scan available
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            boolean: True if card has a highres image available
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('highres_image')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['highres_image']
 | 
			
		||||
 | 
			
		||||
    def image_uris(self):
 | 
			
		||||
        """All image uris of the card in various qualities
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            dict: The dictionary of image uris
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('image_uris')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['image_uris']
 | 
			
		||||
 | 
			
		||||
    def cmc(self):
 | 
			
		||||
        """A float of the converted mana cost of the card
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            float: The cmc of the card
 | 
			
		||||
        """
 | 
			
		||||
        self._checkForKey('cmc')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['cmc']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,17 +5,15 @@ class Collector(CardsObject):
 | 
			
		|||
    cards/collector
 | 
			
		||||
    Get a card by collector number.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        code : str ....................... This is the 3 letter code for the set
 | 
			
		||||
        collector_number : str ........ This is the collector number of the card
 | 
			
		||||
    Args:
 | 
			
		||||
        code (string): This is the 3 letter code for the set
 | 
			
		||||
        collector_number (string): This is the collector number of the card
 | 
			
		||||
        lang (string, optional): Defaults to 'en'. A 2-3 character language code.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        Inherits all arguments from CardsObject
 | 
			
		||||
 | 
			
		||||
        lang : str ............................... A 2-3 character language code
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        Inherits all attributes from CardsObject
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'code' parameter is not provided.
 | 
			
		||||
        Exception: If the 'collector_number' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Collector(code='exo', collector_number='96')
 | 
			
		||||
| 
						 | 
				
			
			@ -23,7 +21,9 @@ class Collector(CardsObject):
 | 
			
		|||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('code') is None:
 | 
			
		||||
            raise TypeError('No code provided to search by')
 | 
			
		||||
            raise Exception('No code provided to search by')
 | 
			
		||||
        elif kwargs.get('collector_number') is None:
 | 
			
		||||
            raise Exception('No collector number provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/{}/{}/{}?'.format(
 | 
			
		||||
            kwargs.get('code'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,14 +6,27 @@ class Mtgo(CardsObject):
 | 
			
		|||
    cards/mtgo
 | 
			
		||||
    Get a card by MTGO id.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        id : str ............................. The required mtgo id of the card.
 | 
			
		||||
    Args:
 | 
			
		||||
        id (string):
 | 
			
		||||
            The MTGO Id of the card.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the small, normal,
 | 
			
		||||
            large, etc version of the image.
 | 
			
		||||
        pretty (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object.
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        All arguments are inherited from CardsObject
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        All attributes are inherited from CardsObject
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'id' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Mtgo(id="48296")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,14 +5,27 @@ class Multiverse(CardsObject):
 | 
			
		|||
    cards/multiverse
 | 
			
		||||
    Get a card by Multiverse id
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        id : str ....... This is the associated multiverse id of the given card.
 | 
			
		||||
    Args:
 | 
			
		||||
        id (string):
 | 
			
		||||
            The Multiverse Id of the card.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the small, normal,
 | 
			
		||||
            large, etc version of the image.
 | 
			
		||||
        pretty (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object.
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        Inherits all arguments from CardsObject
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        Inherits all attributes from CardsObject
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'id' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Multiverse(id='96865')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,23 +6,40 @@ class Named(CardsObject):
 | 
			
		|||
    cards/named
 | 
			
		||||
    Gets a card by the name.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        fuzzy : str ................ Uses the fuzzy parameter for the card name.
 | 
			
		||||
        or
 | 
			
		||||
        exact : str ................ Uses the exact parameter for the card name.
 | 
			
		||||
    Args:
 | 
			
		||||
        fuzzy (string): Uses the fuzzy parameter for the card name.
 | 
			
		||||
        exact (string): Uses the exact parameter for the card name.
 | 
			
		||||
        set (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns the set of the card if specified.
 | 
			
		||||
            Requires the 3 letter set code.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify if you want the small, normal,
 | 
			
		||||
            large, etc version of the image.
 | 
			
		||||
        pretty (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object.
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        set : str . Returns the set of the card if specified. Requires the 3 letter set code.
 | 
			
		||||
        All arguments are inherited from CardsObject
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        All attributes are inherited from CardsObject
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'fuzzy' or 'exact' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Named(exact="Black Lotus")
 | 
			
		||||
        >>> card.colors()
 | 
			
		||||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('exact') is None or kwargs.get('fuzzy') is None:
 | 
			
		||||
            raise Exception('You must provide a `fuzzy` or `exact` parameter.')
 | 
			
		||||
 | 
			
		||||
        self.dict = {
 | 
			
		||||
            'set':kwargs.get('set', '')
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,14 +6,25 @@ class Random(CardsObject):
 | 
			
		|||
    cards/random
 | 
			
		||||
    Get a random card.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        No arguments are required.
 | 
			
		||||
    Args:
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format,
 | 
			
		||||
            this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify
 | 
			
		||||
            if you want the small, normal, large, etc version of the image.
 | 
			
		||||
        pretty (string, optional): 
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object. 
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        All arguments are inherited from CardsObject
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        All attributes are inherited from CardsObject
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> card = scrython.cards.Random()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,28 +6,46 @@ class Search(CardsObject):
 | 
			
		|||
    cards/search
 | 
			
		||||
    Uses a search query to gather relevant data.
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
        q : str ...... The query to search. This will be updated in the future.
 | 
			
		||||
 | 
			
		||||
    Optional arguments:
 | 
			
		||||
        order : str ................... The order you'd like the data returned.
 | 
			
		||||
        unique : str ........................... A way to filter similar cards.
 | 
			
		||||
        dir : str ......... The direction you'd like to sort. (asc, desc, auto)
 | 
			
		||||
        include_extras : bool ... Includes cards that are normally omitted from
 | 
			
		||||
                                  search results, like Un-sets.
 | 
			
		||||
        page : int .............. The page number you'd like to search, if any.
 | 
			
		||||
        Inherits all arguments from CardsObject.
 | 
			
		||||
 | 
			
		||||
    Attributes:
 | 
			
		||||
        object : str ....................... Returns what kind of object it is.
 | 
			
		||||
        total_cards : int ......... How many cards are returned from the query.
 | 
			
		||||
        data : list ...................... The list of potential autocompletes.
 | 
			
		||||
        has_more : bool ......... True if there is more than 1 page of results.
 | 
			
		||||
        next_page : str ............ The API URI to the next page of the query.
 | 
			
		||||
        warnings : list .................. Provides an array of errors, if any.
 | 
			
		||||
        data_length : int .................... The length of the data returned.
 | 
			
		||||
        data_tuple : dict .......... Accesses an object at the specified index.
 | 
			
		||||
    Args:
 | 
			
		||||
        q (string):
 | 
			
		||||
            The query to search. This will be updated in the future.
 | 
			
		||||
        order (string, optional):
 | 
			
		||||
            Defaults to 'none'
 | 
			
		||||
            The order you'd like the data returned.
 | 
			
		||||
        unique (string, optional):
 | 
			
		||||
            Defaults to 'none'
 | 
			
		||||
            A way to filter similar cards.
 | 
			
		||||
        dir (string, optional)
 | 
			
		||||
            Defaults to 'none'
 | 
			
		||||
            The direction you'd like to sort. (asc, desc, auto)
 | 
			
		||||
        include_extras (boolean, optional): 
 | 
			
		||||
            Defaults to 'false'
 | 
			
		||||
            Includes cards that are normally omitted from search results, like Un-sets.
 | 
			
		||||
        include_multilingual (boolean, optional):
 | 
			
		||||
            Defaults to 'false'
 | 
			
		||||
            Includes cards that are in the language specified. (en, ja, etc).
 | 
			
		||||
        page (integer, optional):
 | 
			
		||||
            Defaults to '1'
 | 
			
		||||
            The page number you'd like to search, if any.
 | 
			
		||||
        format (string, optional):
 | 
			
		||||
            Defaults to 'json'.
 | 
			
		||||
            Returns data in the specified method.
 | 
			
		||||
        face (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format,
 | 
			
		||||
            this will specify if you want the front or back face.
 | 
			
		||||
        version (string, optional):
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            If you're using the `image` format, this will specify
 | 
			
		||||
            if you want the small, normal, large, etc version of the image.
 | 
			
		||||
        pretty (string, optional): 
 | 
			
		||||
            Defaults to empty string.
 | 
			
		||||
            Returns a prettier version of the json object. 
 | 
			
		||||
            Note that this may break functionality with Scrython.
 | 
			
		||||
 | 
			
		||||
    Raises:
 | 
			
		||||
        Exception: If the 'q' parameter is not provided.
 | 
			
		||||
        Exception: If the object returned is an error.
 | 
			
		||||
 | 
			
		||||
    Example usage:
 | 
			
		||||
        >>> search = scrython.cards.Search(q="++e:A25", order="spoiled")
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +53,7 @@ class Search(CardsObject):
 | 
			
		|||
    """
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('q') is None:
 | 
			
		||||
            raise TypeError('No query is specified.')
 | 
			
		||||
            raise Exception('No query is specified.')
 | 
			
		||||
 | 
			
		||||
        self.dict = {
 | 
			
		||||
            'q':kwargs.get('q'),
 | 
			
		||||
| 
						 | 
				
			
			@ -52,220 +70,141 @@ class Search(CardsObject):
 | 
			
		|||
 | 
			
		||||
        super(Search, self).__init__(self.url)
 | 
			
		||||
 | 
			
		||||
        # The following block of methods are not compatible with object returned from
 | 
			
		||||
        # the cards/autocomplete endpoint. Doing it this way as to not repeat defining another
 | 
			
		||||
        # getRequest function in the __init__. Will be refactored in the future.
 | 
			
		||||
        del CardsObject.id
 | 
			
		||||
        del CardsObject.multiverse_ids
 | 
			
		||||
        del CardsObject.mtgo_id
 | 
			
		||||
        del CardsObject.mtgo_foil_id
 | 
			
		||||
        del CardsObject.name
 | 
			
		||||
        del CardsObject.uri
 | 
			
		||||
        del CardsObject.scryfall_uri
 | 
			
		||||
        del CardsObject.layout
 | 
			
		||||
        del CardsObject.highres_image
 | 
			
		||||
        del CardsObject.image_uris
 | 
			
		||||
        del CardsObject.cmc
 | 
			
		||||
        del CardsObject.type_line
 | 
			
		||||
        del CardsObject.oracle_text
 | 
			
		||||
        del CardsObject.mana_cost
 | 
			
		||||
        del CardsObject.colors
 | 
			
		||||
        del CardsObject.color_identity
 | 
			
		||||
        del CardsObject.legalities
 | 
			
		||||
        del CardsObject.reserved
 | 
			
		||||
        del CardsObject.reprint
 | 
			
		||||
        del CardsObject.set_code
 | 
			
		||||
        del CardsObject.set_name
 | 
			
		||||
        del CardsObject.set_uri
 | 
			
		||||
        del CardsObject.set_search_uri
 | 
			
		||||
        del CardsObject.scryfall_set_uri
 | 
			
		||||
        del CardsObject.rulings_uri
 | 
			
		||||
        del CardsObject.prints_search_uri
 | 
			
		||||
        del CardsObject.collector_number
 | 
			
		||||
        del CardsObject.digital
 | 
			
		||||
        del CardsObject.rarity
 | 
			
		||||
        del CardsObject.illustration_id
 | 
			
		||||
        del CardsObject.artist
 | 
			
		||||
        del CardsObject.frame
 | 
			
		||||
        del CardsObject.full_art
 | 
			
		||||
        del CardsObject.border_color
 | 
			
		||||
        del CardsObject.timeshifted
 | 
			
		||||
        del CardsObject.colorshifted
 | 
			
		||||
        del CardsObject.futureshifted
 | 
			
		||||
        del CardsObject.edhrec_rank
 | 
			
		||||
        del CardsObject.currency
 | 
			
		||||
        del CardsObject.related_uris
 | 
			
		||||
        del CardsObject.purchase_uris
 | 
			
		||||
        del CardsObject.life_modifier
 | 
			
		||||
        del CardsObject.hand_modifier
 | 
			
		||||
        del CardsObject.color_indicator
 | 
			
		||||
        del CardsObject.all_parts
 | 
			
		||||
        del CardsObject.card_faces
 | 
			
		||||
        del CardsObject.watermark
 | 
			
		||||
        del CardsObject.story_spotlight
 | 
			
		||||
        del CardsObject.power
 | 
			
		||||
        del CardsObject.toughness
 | 
			
		||||
        del CardsObject.loyalty
 | 
			
		||||
        del CardsObject.flavor_text
 | 
			
		||||
        del CardsObject.arena_id
 | 
			
		||||
        del CardsObject.lang
 | 
			
		||||
        del CardsObject.printed_name
 | 
			
		||||
        del CardsObject.printed_type_line
 | 
			
		||||
        del CardsObject.printed_text
 | 
			
		||||
        del CardsObject.oracle_id
 | 
			
		||||
        del CardsObject.foil
 | 
			
		||||
        del CardsObject.nonfoil
 | 
			
		||||
        del CardsObject.oversized
 | 
			
		||||
 | 
			
		||||
    def object(self):
 | 
			
		||||
        """Returns the type of object it is.
 | 
			
		||||
        (card, error, etc)
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: The type of object
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('object')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
    def total_cards(self):
 | 
			
		||||
        """How many cards are returned from the query
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            integer: The number of cards returned
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('total_cards')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['total_cards']
 | 
			
		||||
 | 
			
		||||
    def data(self):
 | 
			
		||||
        """The data returned from the query
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            list: A list of card objects
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('data')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['data']
 | 
			
		||||
 | 
			
		||||
    def next_page(self):
 | 
			
		||||
        """The API URI to the next page of the query
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            string: A URI to the next page of the query
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('next_page')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['next_page']
 | 
			
		||||
 | 
			
		||||
    def data_length(self):
 | 
			
		||||
        """
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            integer: The length of data returned
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('data')
 | 
			
		||||
 | 
			
		||||
        return len(self.scryfallJson['data'])
 | 
			
		||||
 | 
			
		||||
    def data_tuple(self, num):
 | 
			
		||||
        """Accesses an object at the specified index
 | 
			
		||||
        
 | 
			
		||||
        Args:
 | 
			
		||||
            num (int): The index of the object in the `data` key
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            dict: The card object at the specified index
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('data')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['data'][num]
 | 
			
		||||
 | 
			
		||||
    def has_more(self):
 | 
			
		||||
        """Determines if there are more pages of results.
 | 
			
		||||
        
 | 
			
		||||
        Returns:
 | 
			
		||||
            boolean: True if there is more than 1 page of results
 | 
			
		||||
        """
 | 
			
		||||
        super(Search, self)._checkForKey('has_more')
 | 
			
		||||
 | 
			
		||||
        return self.scryfallJson['has_more']
 | 
			
		||||
 | 
			
		||||
    #The following attributes are only to override the inherited class attributes.
 | 
			
		||||
    #This class has no matching attributes but we still need the getRequest function from CardsObject
 | 
			
		||||
 | 
			
		||||
    def id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'id\'')
 | 
			
		||||
 | 
			
		||||
    def multiverse_ids(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'multiverse_ids\'')
 | 
			
		||||
 | 
			
		||||
    def mtgo_id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'mtgo_id\'')
 | 
			
		||||
 | 
			
		||||
    def mtgo_foil_id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'mtgo_foil_id\'')
 | 
			
		||||
 | 
			
		||||
    def name(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'name\'')
 | 
			
		||||
 | 
			
		||||
    def uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'uri\'')
 | 
			
		||||
 | 
			
		||||
    def scryfall_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'scryfall_uri\'')
 | 
			
		||||
 | 
			
		||||
    def layout(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'layout\'')
 | 
			
		||||
 | 
			
		||||
    def highres_image(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'highres_image\'')
 | 
			
		||||
 | 
			
		||||
    def image_uris(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'image_uris\'')
 | 
			
		||||
 | 
			
		||||
    def cmc(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'cmc\'')
 | 
			
		||||
 | 
			
		||||
    def type_line(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'type_line\'')
 | 
			
		||||
 | 
			
		||||
    def oracle_text(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'oracle_text\'')
 | 
			
		||||
 | 
			
		||||
    def mana_cost(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'mana_cost\'')
 | 
			
		||||
 | 
			
		||||
    def colors(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'colors\'')
 | 
			
		||||
 | 
			
		||||
    def color_identity(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'color_identity\'')
 | 
			
		||||
 | 
			
		||||
    def legalities(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'legalities\'')
 | 
			
		||||
 | 
			
		||||
    def reserved(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'reserved\'')
 | 
			
		||||
 | 
			
		||||
    def reprint(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'reprint\'')
 | 
			
		||||
 | 
			
		||||
    def set_code(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'set_code\'')
 | 
			
		||||
 | 
			
		||||
    def set_name(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'set_name\'')
 | 
			
		||||
 | 
			
		||||
    def set_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'set_uri\'')
 | 
			
		||||
 | 
			
		||||
    def set_search_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'set_search_uri\'')
 | 
			
		||||
 | 
			
		||||
    def scryfall_set_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'scryfall_set_uri\'')
 | 
			
		||||
 | 
			
		||||
    def rulings_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'rulings_uri\'')
 | 
			
		||||
 | 
			
		||||
    def prints_search_uri(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'prints_search_uri\'')
 | 
			
		||||
 | 
			
		||||
    def collector_number(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'collector_number\'')
 | 
			
		||||
 | 
			
		||||
    def digital(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'digital\'')
 | 
			
		||||
 | 
			
		||||
    def rarity(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'rarity\'')
 | 
			
		||||
 | 
			
		||||
    def illustration_id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'illustration_id\'')
 | 
			
		||||
 | 
			
		||||
    def artist(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'artist\'')
 | 
			
		||||
 | 
			
		||||
    def frame(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'frame\'')
 | 
			
		||||
 | 
			
		||||
    def full_art(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'full_art\'')
 | 
			
		||||
 | 
			
		||||
    def border_color(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'border_color\'')
 | 
			
		||||
 | 
			
		||||
    def timeshifted(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'timeshifted\'')
 | 
			
		||||
 | 
			
		||||
    def colorshifted(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'colorshifted\'')
 | 
			
		||||
 | 
			
		||||
    def futureshifted(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'futureshifted\'')
 | 
			
		||||
 | 
			
		||||
    def edhrec_rank(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'edhrec_rank\'')
 | 
			
		||||
 | 
			
		||||
    def currency(self, mode):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'currency\'')
 | 
			
		||||
 | 
			
		||||
    def related_uris(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'related_uris\'')
 | 
			
		||||
 | 
			
		||||
    def purchase_uris(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'purchase_uris\'')
 | 
			
		||||
 | 
			
		||||
    def life_modifier(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'life_modifier\'')
 | 
			
		||||
 | 
			
		||||
    def hand_modifier(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'hand_modifier\'')
 | 
			
		||||
 | 
			
		||||
    def color_indicator(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'color_indicator\'')
 | 
			
		||||
 | 
			
		||||
    def all_parts(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'all_parts\'')
 | 
			
		||||
 | 
			
		||||
    def card_faces(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'card_faces\'')
 | 
			
		||||
 | 
			
		||||
    def watermark(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'watermark\'')
 | 
			
		||||
 | 
			
		||||
    def story_spotlight(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'story_spotlight\'')
 | 
			
		||||
 | 
			
		||||
    def power(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'power\'')
 | 
			
		||||
 | 
			
		||||
    def toughness(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'toughness\'')
 | 
			
		||||
 | 
			
		||||
    def loyalty(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'loyalty\'')
 | 
			
		||||
 | 
			
		||||
    def flavor_text(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'flavor_text\'')
 | 
			
		||||
 | 
			
		||||
    def arena_id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'arena_id\'')
 | 
			
		||||
 | 
			
		||||
    def lang(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'lang\'')
 | 
			
		||||
 | 
			
		||||
    def printed_name(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'printed_name\'')
 | 
			
		||||
 | 
			
		||||
    def printed_type_line(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'printed_type_line\'')
 | 
			
		||||
 | 
			
		||||
    def printed_text(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'printed_text\'')
 | 
			
		||||
 | 
			
		||||
    def oracle_id(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'oracle_id\'')
 | 
			
		||||
 | 
			
		||||
    def nonfoil(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'nonfoil\'')
 | 
			
		||||
 | 
			
		||||
    def oversized(self):
 | 
			
		||||
        raise AttributeError('Search object has no attribute \'oversized\'')
 | 
			
		||||
        return self.scryfallJson['has_more']
 | 
			
		||||
		Loading…
	
		Reference in New Issue