Named, multiverse, and randomcard now inherit scryfall_object.
This commit is contained in:
		
							parent
							
								
									f7899f11b4
								
							
						
					
					
						commit
						25a9c450ed
					
				| 
						 | 
				
			
			@ -1,214 +1,12 @@
 | 
			
		|||
import asyncio, aiohttp
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
class Multiverse(object):
 | 
			
		||||
	""" cards/named
 | 
			
		||||
from scryfall_object import ScryfallObject
 | 
			
		||||
 | 
			
		||||
class Multiverse(ScryfallObject):
 | 
			
		||||
	"""
 | 
			
		||||
	Parameters:
 | 
			
		||||
		id: int		The multiverse id of the card.
 | 
			
		||||
		format: str				The data format to return: json, text, or image. Defaults to json.
 | 
			
		||||
		face: str				If using the image format and this parameter has the value back,
 | 
			
		||||
									the back face of the card will be returned.
 | 
			
		||||
									Will return a 404 if this card has no back face.
 | 
			
		||||
		version: str			The image version to return when using the image
 | 
			
		||||
									format: small, normal, large, png, art_crop, or border_crop. Defaults to large.
 | 
			
		||||
		pretty: bool				If true, the returned JSON will be prettified. Avoid using for production code.
 | 
			
		||||
 | 
			
		||||
	Attributes:
 | 
			
		||||
		object: str				Returns the type of object it is. (card, error, etc)
 | 
			
		||||
		id: str					The scryfall id of the card.
 | 
			
		||||
		multiverse_ids: arr		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. Cards with multiple faces are named with '//' as a seperator.
 | 
			
		||||
		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.
 | 
			
		||||
		card.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.
 | 
			
		||||
		colors: arr				An array of strings with all colors found in the mana cost.
 | 
			
		||||
		color_identity: arr		An array of strings with all colors found in on the card itself.
 | 
			
		||||
		legalities: dict		A dictionary of all formats and their legality.
 | 
			
		||||
		reserved: bool			Returns True if the card is on the reserved list.
 | 
			
		||||
		reprint: bool			Returns True if the card has been reprinted before.
 | 
			
		||||
		set: str				The 3 letter code for the set of the card.
 | 
			
		||||
		set_name: str			The full name for the set of the card.
 | 
			
		||||
		set_uri: str			The API uri for the full set list of the card.
 | 
			
		||||
		set_search_uri: str		Same output as set_uri.
 | 
			
		||||
		scryfall_set_uri: str	The full link to the set on Scryfall.
 | 
			
		||||
		rulings_uri: str		The API uri for the rulings of the card.
 | 
			
		||||
		prints_search_uri: str	TODO: Figure out what this does.
 | 
			
		||||
		collector_number: str	The collector number of the card.
 | 
			
		||||
		digital: bool			Returns True if the card is the digital version.
 | 
			
		||||
		rarity: str				The rarity of the card.
 | 
			
		||||
		illustration_id: str	The related id of the card art.
 | 
			
		||||
		artist: str				The artist of the card.
 | 
			
		||||
		frame: str				The year of the card frame.
 | 
			
		||||
		full_art: bool			Returns True if the card is considered full art.
 | 
			
		||||
		border_color: str		The color of the card border.
 | 
			
		||||
		timeshifted: bool		Returns True if the card is timeshifted.
 | 
			
		||||
		colorshifted: bool		Returns True if the card is colorshifted.
 | 
			
		||||
		futureshifted: bool		Returns True if the card is futureshifted.
 | 
			
		||||
		edhrec_rank: int		The rank of the card on edhrec.com
 | 
			
		||||
		tix: int				The MTGO price of the card
 | 
			
		||||
		related_uris: dict		A dictionary of related websites for this card.
 | 
			
		||||
		purchase_uris: dict		A dictionary of links to purchase the card.
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
	def __init__(self, _id, _format=None, face=None, version=None, pretty=None):
 | 
			
		||||
		self.multiverseid = _id
 | 
			
		||||
		self.format = _format
 | 
			
		||||
		self.face = face
 | 
			
		||||
		self.version = version
 | 
			
		||||
		self.pretty = pretty
 | 
			
		||||
		loop = asyncio.get_event_loop()
 | 
			
		||||
		self.session = aiohttp.ClientSession(loop=loop)
 | 
			
		||||
 | 
			
		||||
		async def getRequest(url, **kwargs):
 | 
			
		||||
			async with self.session.get(url, **kwargs) as response:
 | 
			
		||||
				return await response.json()
 | 
			
		||||
 | 
			
		||||
		self.scryfallJson = loop.run_until_complete(getRequest(
 | 
			
		||||
			url='https://api.scryfall.com/cards/multiverse/{}'.format(self.multiverseid),
 | 
			
		||||
			params={
 | 
			
		||||
				'format':self.format,
 | 
			
		||||
				'face':self.face,
 | 
			
		||||
				'version':self.version,
 | 
			
		||||
				'pretty':self.pretty
 | 
			
		||||
			}))
 | 
			
		||||
 | 
			
		||||
		if self.scryfallJson['object'] == 'error':
 | 
			
		||||
			raise Exception(self.scryfallJson['details'])
 | 
			
		||||
			self.session.close()
 | 
			
		||||
 | 
			
		||||
		self.session.close()
 | 
			
		||||
 | 
			
		||||
	def object(self):
 | 
			
		||||
		return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
	def id(self):
 | 
			
		||||
		return self.scryfallJson['id']
 | 
			
		||||
 | 
			
		||||
	def multiverse_ids(self):
 | 
			
		||||
		return self.scryfallJson['multiverse_ids']
 | 
			
		||||
 | 
			
		||||
	def mtgo_id(self):
 | 
			
		||||
		return self.scryfallJson['mtgo_id']
 | 
			
		||||
 | 
			
		||||
	def mtgo_foil_id(self):
 | 
			
		||||
		return self.scryfallJson['mtgo_foil_id']
 | 
			
		||||
 | 
			
		||||
	def name(self):
 | 
			
		||||
		return self.scryfallJson['name']
 | 
			
		||||
 | 
			
		||||
	def uri(self):
 | 
			
		||||
		return self.scryfallJson['uri']
 | 
			
		||||
 | 
			
		||||
	def scryfall_uri(self):
 | 
			
		||||
		return self.scryfallJson['scryfall_uri']
 | 
			
		||||
 | 
			
		||||
	def layout(self):
 | 
			
		||||
		return self.scryfallJson['layout']
 | 
			
		||||
 | 
			
		||||
	def highres_image(self):
 | 
			
		||||
		return self.scryfallJson['highres_image']
 | 
			
		||||
 | 
			
		||||
	def image_uris(self):
 | 
			
		||||
		return self.scryfallJson['image_uris']
 | 
			
		||||
 | 
			
		||||
	def cmc(self):
 | 
			
		||||
		return self.scryfallJson['cmc']
 | 
			
		||||
 | 
			
		||||
	def type_line(self):
 | 
			
		||||
		return self.scryfallJson['type_line']
 | 
			
		||||
 | 
			
		||||
	def oracle_text(self):
 | 
			
		||||
		return self.scryfallJson['oracle_text']
 | 
			
		||||
 | 
			
		||||
	def mana_cost(self):
 | 
			
		||||
		return self.scryfallJson['mana_cost']
 | 
			
		||||
 | 
			
		||||
	def colors(self):
 | 
			
		||||
		return self.scryfallJson['colors']
 | 
			
		||||
 | 
			
		||||
	def color_identity(self):
 | 
			
		||||
		return self.scryfallJson['color_identity']
 | 
			
		||||
 | 
			
		||||
	def legalities(self):
 | 
			
		||||
		return self.scryfallJson['legalities']
 | 
			
		||||
 | 
			
		||||
	def reserved(self):
 | 
			
		||||
		return self.scryfallJson['reserved']
 | 
			
		||||
 | 
			
		||||
	def reprint(self):
 | 
			
		||||
		return self.scryfallJson['reprint']
 | 
			
		||||
 | 
			
		||||
	def set(self):
 | 
			
		||||
		return self.scryfallJson['set']
 | 
			
		||||
 | 
			
		||||
	def set_name(self):
 | 
			
		||||
		return self.scryfallJson['set_name']
 | 
			
		||||
 | 
			
		||||
	def set_uri(self):
 | 
			
		||||
		return self.scryfallJson['set_uri']
 | 
			
		||||
 | 
			
		||||
	def set_search_uri(self):
 | 
			
		||||
		return self.scryfallJson['set_search_uri']
 | 
			
		||||
 | 
			
		||||
	def scryfall_set_uri(self):
 | 
			
		||||
		return self.scryfallJson['scryfall_set_uri']
 | 
			
		||||
 | 
			
		||||
	def rulings_uri(self):
 | 
			
		||||
		return self.scryfallJson['rulings_uri']
 | 
			
		||||
 | 
			
		||||
	def prints_search_uri(self):
 | 
			
		||||
		return self.scryfallJson['prints_search_uri']
 | 
			
		||||
 | 
			
		||||
	def collector_number(self):
 | 
			
		||||
		return self.scryfallJson['collector_number']
 | 
			
		||||
 | 
			
		||||
	def digital(self):
 | 
			
		||||
		return self.scryfallJson['digital']
 | 
			
		||||
 | 
			
		||||
	def rarity(self):
 | 
			
		||||
		return self.scryfallJson['rarity']
 | 
			
		||||
 | 
			
		||||
	def illustration_id(self):
 | 
			
		||||
		return self.scryfallJson['illustration_id']
 | 
			
		||||
 | 
			
		||||
	def artist(self):
 | 
			
		||||
		return self.scryfallJson['artist']
 | 
			
		||||
 | 
			
		||||
	def frame(self):
 | 
			
		||||
		return self.scryfallJson['frame']
 | 
			
		||||
 | 
			
		||||
	def full_art(self):
 | 
			
		||||
		return self.scryfallJson['full_art']
 | 
			
		||||
 | 
			
		||||
	def border_color(self):
 | 
			
		||||
		return self.scryfallJson['border_color']
 | 
			
		||||
 | 
			
		||||
	def timeshifted(self):
 | 
			
		||||
		return self.scryfallJson['timeshifted']
 | 
			
		||||
 | 
			
		||||
	def colorshifted(self):
 | 
			
		||||
		return self.scryfallJson['colorshifted']
 | 
			
		||||
 | 
			
		||||
	def futureshifted(self):
 | 
			
		||||
		return self.scryfallJson['futureshifted']
 | 
			
		||||
 | 
			
		||||
	def edhrec_rank(self):
 | 
			
		||||
		return self.scryfallJson['edhrec_rank']
 | 
			
		||||
 | 
			
		||||
	def tix(self):
 | 
			
		||||
		return self.scryfallJson['tix']
 | 
			
		||||
 | 
			
		||||
	def related_uris(self):
 | 
			
		||||
		return self.scryfallJson['related_uris']
 | 
			
		||||
 | 
			
		||||
	def purchase_uris(self):
 | 
			
		||||
		return self.scryfallJson['purchase_uris']
 | 
			
		||||
	def __init__(self, **kwargs):
 | 
			
		||||
		self.multiverseid = kwargs.get('id')
 | 
			
		||||
		self.url = 'cards/multiverse/' + self.multiverseid
 | 
			
		||||
		super(Multiverse, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										229
									
								
								cards/named.py
								
								
								
								
							
							
						
						
									
										229
									
								
								cards/named.py
								
								
								
								
							| 
						 | 
				
			
			@ -1,222 +1,29 @@
 | 
			
		|||
import aiohttp
 | 
			
		||||
import asyncio
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Named(object):
 | 
			
		||||
	""" cards/named
 | 
			
		||||
from scryfall_object import ScryfallObject
 | 
			
		||||
import urllib.parse
 | 
			
		||||
 | 
			
		||||
class Named(ScryfallObject):
 | 
			
		||||
	"""
 | 
			
		||||
	Parameters:
 | 
			
		||||
		exact: str				The exact card name to search for, case insenstive.
 | 
			
		||||
		fuzzy: str				A fuzzy card name to search for.
 | 
			
		||||
		set: str				A set code to limit the search to one set.
 | 
			
		||||
		format: str				The data format to return: json, text, or image. Defaults to json.
 | 
			
		||||
		face: str				If using the image format and this parameter has the value back,
 | 
			
		||||
									the back face of the card will be returned.
 | 
			
		||||
									Will return a 404 if this card has no back face.
 | 
			
		||||
		version: str			The image version to return when using the image
 | 
			
		||||
									format: small, normal, large, png, art_crop, or border_crop. Defaults to large.
 | 
			
		||||
		pretty: bool			If true, the returned JSON will be prettified. Avoid using for production code.
 | 
			
		||||
 | 
			
		||||
	Attributes:
 | 
			
		||||
		object: str				Returns the type of object it is. (card, error, etc)
 | 
			
		||||
		id: str					The scryfall id of the card.
 | 
			
		||||
		multiverse_ids: arr		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. Cards with multiple faces are named with '//' as a seperator.
 | 
			
		||||
		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.
 | 
			
		||||
		card_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.
 | 
			
		||||
		colors: arr				An array of strings with all colors found in the mana cost.
 | 
			
		||||
		color_identity: arr		An array of strings with all colors found on the card itself.
 | 
			
		||||
		legalities: dict		A dictionary of all formats and their legality.
 | 
			
		||||
		reserved: bool			Returns True if the card is on the reserved list.
 | 
			
		||||
		reprint: bool			Returns True if the card has been reprinted before.
 | 
			
		||||
		set: str				The 3 letter code for the set of the card.
 | 
			
		||||
		set_name: str			The full name for the set of the card.
 | 
			
		||||
		set_uri: str			The API uri for the full set list of the card.
 | 
			
		||||
		set_search_uri: str		Same output as set_uri.
 | 
			
		||||
		scryfall_set_uri: str	The full link to the set on Scryfall.
 | 
			
		||||
		rulings_uri: str		The API uri for the rulings of the card.
 | 
			
		||||
		prints_search_uri: str	TODO: Figure out what this does.
 | 
			
		||||
		collector_number: str	The collector number of the card.
 | 
			
		||||
		digital: bool			Returns True if the card is the digital version.
 | 
			
		||||
		rarity: str				The rarity of the card.
 | 
			
		||||
		illustration_id: str	The related id of the card art.
 | 
			
		||||
		artist: str				The artist of the card.
 | 
			
		||||
		frame: str				The year of the card frame.
 | 
			
		||||
		full_art: bool			Returns True if the card is considered full art.
 | 
			
		||||
		border_color: str		The color of the card border.
 | 
			
		||||
		timeshifted: bool		Returns True if the card is timeshifted.
 | 
			
		||||
		colorshifted: bool		Returns True if the card is colorshifted.
 | 
			
		||||
		futureshifted: bool		Returns True if the card is futureshifted.
 | 
			
		||||
		edhrec_rank: int		The rank of the card on edhrec.com
 | 
			
		||||
		tix: int				The MTGO price of the card
 | 
			
		||||
		related_uris: dict		A dictionary of related websites for this card.
 | 
			
		||||
		purchase_uris: dict		A dictionary of links to purchase the card.
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
	def __init__(self, exact=None, fuzzy=None, _set=None, _format=None, face=None, version=None, pretty=None):
 | 
			
		||||
		self.exact = exact
 | 
			
		||||
		self.fuzzy = fuzzy
 | 
			
		||||
		self.set = _set
 | 
			
		||||
		self.format = _format
 | 
			
		||||
		self.face = face
 | 
			
		||||
		self.version = version
 | 
			
		||||
		self.pretty = pretty
 | 
			
		||||
		loop = asyncio.get_event_loop()
 | 
			
		||||
		self.session = aiohttp.ClientSession(loop=loop)
 | 
			
		||||
	def __init__(self, **kwargs):
 | 
			
		||||
		self.exact = kwargs.get('exact')
 | 
			
		||||
		self.fuzzy = kwargs.get('fuzzy')
 | 
			
		||||
		self.set = kwargs.get('set')
 | 
			
		||||
		self.dict = {}
 | 
			
		||||
 | 
			
		||||
		async def getRequest(url, **kwargs):
 | 
			
		||||
			async with self.session.get(url, **kwargs) as response:
 | 
			
		||||
				return await response.json()
 | 
			
		||||
		if self.exact is not None:
 | 
			
		||||
			self.dict['exact'] = self.exact
 | 
			
		||||
 | 
			
		||||
		self.scryfallJson = loop.run_until_complete(getRequest(
 | 
			
		||||
			url='https://api.scryfall.com/cards/named?',
 | 
			
		||||
			params={
 | 
			
		||||
				'exact': self.exact,
 | 
			
		||||
				'fuzzy': self.fuzzy,
 | 
			
		||||
				'set': self.set,
 | 
			
		||||
				'format': self.format,
 | 
			
		||||
				'face': self.face,
 | 
			
		||||
				'version': self.version,
 | 
			
		||||
				'pretty': self.pretty
 | 
			
		||||
			}))
 | 
			
		||||
		if self.fuzzy is not None:
 | 
			
		||||
			self.dict['fuzzy'] = self.fuzzy
 | 
			
		||||
 | 
			
		||||
		if self.scryfallJson['object'] == 'error':
 | 
			
		||||
			self.session.close()
 | 
			
		||||
			raise Exception(self.scryfallJson['details'])
 | 
			
		||||
		if self.set is not None:
 | 
			
		||||
			self.dict['set'] = self.set
 | 
			
		||||
 | 
			
		||||
		self.session.close()
 | 
			
		||||
 | 
			
		||||
	def object(self):
 | 
			
		||||
		return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
	def id(self):
 | 
			
		||||
		return self.scryfallJson['id']
 | 
			
		||||
 | 
			
		||||
	def multiverse_ids(self):
 | 
			
		||||
		return self.scryfallJson['multiverse_ids']
 | 
			
		||||
 | 
			
		||||
	def mtgo_id(self):
 | 
			
		||||
		return self.scryfallJson['mtgo_id']
 | 
			
		||||
 | 
			
		||||
	def mtgo_foil_id(self):
 | 
			
		||||
		return self.scryfallJson['mtgo_foil_id']
 | 
			
		||||
 | 
			
		||||
	def name(self):
 | 
			
		||||
		return self.scryfallJson['name']
 | 
			
		||||
 | 
			
		||||
	def uri(self):
 | 
			
		||||
		return self.scryfallJson['uri']
 | 
			
		||||
 | 
			
		||||
	def scryfall_uri(self):
 | 
			
		||||
		return self.scryfallJson['scryfall_uri']
 | 
			
		||||
 | 
			
		||||
	def layout(self):
 | 
			
		||||
		return self.scryfallJson['layout']
 | 
			
		||||
 | 
			
		||||
	def highres_image(self):
 | 
			
		||||
		return self.scryfallJson['highres_image']
 | 
			
		||||
 | 
			
		||||
	def image_uris(self):
 | 
			
		||||
		return self.scryfallJson['image_uris']
 | 
			
		||||
 | 
			
		||||
	def cmc(self):
 | 
			
		||||
		return self.scryfallJson['cmc']
 | 
			
		||||
 | 
			
		||||
	def type_line(self):
 | 
			
		||||
		return self.scryfallJson['type_line']
 | 
			
		||||
 | 
			
		||||
	def oracle_text(self):
 | 
			
		||||
		return self.scryfallJson['oracle_text']
 | 
			
		||||
 | 
			
		||||
	def mana_cost(self):
 | 
			
		||||
		return self.scryfallJson['mana_cost']
 | 
			
		||||
 | 
			
		||||
	def colors(self):
 | 
			
		||||
		return self.scryfallJson['colors']
 | 
			
		||||
 | 
			
		||||
	def color_identity(self):
 | 
			
		||||
		return self.scryfallJson['color_identity']
 | 
			
		||||
 | 
			
		||||
	def legalities(self):
 | 
			
		||||
		return self.scryfallJson['legalities']
 | 
			
		||||
 | 
			
		||||
	def reserved(self):
 | 
			
		||||
		return self.scryfallJson['reserved']
 | 
			
		||||
 | 
			
		||||
	def reprint(self):
 | 
			
		||||
		return self.scryfallJson['reprint']
 | 
			
		||||
 | 
			
		||||
	def set(self):
 | 
			
		||||
		return self.scryfallJson['set']
 | 
			
		||||
 | 
			
		||||
	def set_name(self):
 | 
			
		||||
		return self.scryfallJson['set_name']
 | 
			
		||||
 | 
			
		||||
	def set_uri(self):
 | 
			
		||||
		return self.scryfallJson['set_uri']
 | 
			
		||||
 | 
			
		||||
	def set_search_uri(self):
 | 
			
		||||
		return self.scryfallJson['set_search_uri']
 | 
			
		||||
 | 
			
		||||
	def scryfall_set_uri(self):
 | 
			
		||||
		return self.scryfallJson['scryfall_set_uri']
 | 
			
		||||
 | 
			
		||||
	def rulings_uri(self):
 | 
			
		||||
		return self.scryfallJson['rulings_uri']
 | 
			
		||||
 | 
			
		||||
	def prints_search_uri(self):
 | 
			
		||||
		return self.scryfallJson['prints_search_uri']
 | 
			
		||||
 | 
			
		||||
	def collector_number(self):
 | 
			
		||||
		return self.scryfallJson['collector_number']
 | 
			
		||||
 | 
			
		||||
	def digital(self):
 | 
			
		||||
		return self.scryfallJson['digital']
 | 
			
		||||
 | 
			
		||||
	def rarity(self):
 | 
			
		||||
		return self.scryfallJson['rarity']
 | 
			
		||||
 | 
			
		||||
	def illustration_id(self):
 | 
			
		||||
		return self.scryfallJson['illustration_id']
 | 
			
		||||
 | 
			
		||||
	def artist(self):
 | 
			
		||||
		return self.scryfallJson['artist']
 | 
			
		||||
 | 
			
		||||
	def frame(self):
 | 
			
		||||
		return self.scryfallJson['frame']
 | 
			
		||||
 | 
			
		||||
	def full_art(self):
 | 
			
		||||
		return self.scryfallJson['full_art']
 | 
			
		||||
 | 
			
		||||
	def border_color(self):
 | 
			
		||||
		return self.scryfallJson['border_color']
 | 
			
		||||
 | 
			
		||||
	def timeshifted(self):
 | 
			
		||||
		return self.scryfallJson['timeshifted']
 | 
			
		||||
 | 
			
		||||
	def colorshifted(self):
 | 
			
		||||
		return self.scryfallJson['colorshifted']
 | 
			
		||||
 | 
			
		||||
	def futureshifted(self):
 | 
			
		||||
		return self.scryfallJson['futureshifted']
 | 
			
		||||
 | 
			
		||||
	def edhrec_rank(self):
 | 
			
		||||
		return self.scryfallJson['edhrec_rank']
 | 
			
		||||
 | 
			
		||||
	def tix(self):
 | 
			
		||||
		return self.scryfallJson['tix']
 | 
			
		||||
 | 
			
		||||
	def related_uris(self):
 | 
			
		||||
		return self.scryfallJson['related_uris']
 | 
			
		||||
 | 
			
		||||
	def purchase_uris(self):
 | 
			
		||||
		return self.scryfallJson['purchase_uris']
 | 
			
		||||
		self.args = urllib.parse.urlencode(self.dict)
 | 
			
		||||
		self.url = 'cards/named?' + self.args
 | 
			
		||||
		super(Named, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,216 +1,8 @@
 | 
			
		|||
import aiohttp
 | 
			
		||||
import asyncio
 | 
			
		||||
from scryfall_object import ScryfallObject
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RandomCard(object):
 | 
			
		||||
    """ cards/random
 | 
			
		||||
 | 
			
		||||
	Parameters:
 | 
			
		||||
		format: str				The data format to return: json, text, or image. Defaults to json.
 | 
			
		||||
		face: str				If using the image format and this parameter has the value back,
 | 
			
		||||
									the back face of the card will be returned.
 | 
			
		||||
									Will return a 404 if this card has no back face.
 | 
			
		||||
		version: str			The image version to return when using the image
 | 
			
		||||
									format: small, normal, large, png, art_crop, or border_crop. Defaults to large.
 | 
			
		||||
		pretty: bool				If true, the returned JSON will be prettified. Avoid using for production code.
 | 
			
		||||
 | 
			
		||||
	Attributes:
 | 
			
		||||
		object: str				Returns the type of object it is. (card, error, etc)
 | 
			
		||||
		id: str					The scryfall id of the card.
 | 
			
		||||
		multiverse_ids: arr		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. Cards with multiple faces are named with '//' as a seperator.
 | 
			
		||||
		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.
 | 
			
		||||
		card.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.
 | 
			
		||||
		colors: arr				An array of strings with all colors found in the mana cost.
 | 
			
		||||
		color_identity: arr		An array of strings with all colors found in on the card itself.
 | 
			
		||||
		legalities: dict		A dictionary of all formats and their legality.
 | 
			
		||||
		reserved: bool			Returns True if the card is on the reserved list.
 | 
			
		||||
		reprint: bool			Returns True if the card has been reprinted before.
 | 
			
		||||
		set: str				The 3 letter code for the set of the card.
 | 
			
		||||
		set_name: str			The full name for the set of the card.
 | 
			
		||||
		set_uri: str			The API uri for the full set list of the card.
 | 
			
		||||
		set_search_uri: str		Same output as set_uri.
 | 
			
		||||
		scryfall_set_uri: str	The full link to the set on Scryfall.
 | 
			
		||||
		rulings_uri: str		The API uri for the rulings of the card.
 | 
			
		||||
		prints_search_uri: str	TODO: Figure out what this does.
 | 
			
		||||
		collector_number: str	The collector number of the card.
 | 
			
		||||
		digital: bool			Returns True if the card is the digital version.
 | 
			
		||||
		rarity: str				The rarity of the card.
 | 
			
		||||
		illustration_id: str	The related id of the card art.
 | 
			
		||||
		artist: str				The artist of the card.
 | 
			
		||||
		frame: str				The year of the card frame.
 | 
			
		||||
		full_art: bool			Returns True if the card is considered full art.
 | 
			
		||||
		border_color: str		The color of the card border.
 | 
			
		||||
		timeshifted: bool		Returns True if the card is timeshifted.
 | 
			
		||||
		colorshifted: bool		Returns True if the card is colorshifted.
 | 
			
		||||
		futureshifted: bool		Returns True if the card is futureshifted.
 | 
			
		||||
		edhrec_rank: int		The rank of the card on edhrec.com
 | 
			
		||||
		currency: str			The various currencies of the card. Modes are usd, eur, tix.
 | 
			
		||||
		related_uris: dict		A dictionary of related websites for this card.
 | 
			
		||||
		purchase_uris: dict		A dictionary of links to purchase the card.
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        self.format = kwargs.get('format')
 | 
			
		||||
        self.face = kwargs.get('face')
 | 
			
		||||
        self.version = kwargs.get('version')
 | 
			
		||||
        self.pretty = kwargs.get('pretty')
 | 
			
		||||
        loop = asyncio.get_event_loop()
 | 
			
		||||
        self.session = aiohttp.ClientSession(loop=loop)
 | 
			
		||||
 | 
			
		||||
        async def getRequest(url, **kwargs):
 | 
			
		||||
            async with self.session.get(url, **kwargs) as response:
 | 
			
		||||
                return await response.json()
 | 
			
		||||
 | 
			
		||||
        self.scryfallJson = loop.run_until_complete(getRequest(
 | 
			
		||||
            url='https://api.scryfall.com/cards/random?',
 | 
			
		||||
            params={
 | 
			
		||||
                'format': self.format,
 | 
			
		||||
                'face': self.face,
 | 
			
		||||
                'version': self.version,
 | 
			
		||||
                'pretty': self.pretty
 | 
			
		||||
            }))
 | 
			
		||||
 | 
			
		||||
        if self.scryfallJson['object'] == 'error':
 | 
			
		||||
            raise Exception(self.scryfallJson['details'])
 | 
			
		||||
            self.session.close()
 | 
			
		||||
 | 
			
		||||
        self.session.close()
 | 
			
		||||
 | 
			
		||||
    def object(self):
 | 
			
		||||
        return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
    def id(self):
 | 
			
		||||
        return self.scryfallJson['id']
 | 
			
		||||
 | 
			
		||||
    def multiverse_ids(self):
 | 
			
		||||
        return self.scryfallJson['multiverse_ids']
 | 
			
		||||
 | 
			
		||||
    def mtgo_id(self):
 | 
			
		||||
        return self.scryfallJson['mtgo_id']
 | 
			
		||||
 | 
			
		||||
    def mtgo_foil_id(self):
 | 
			
		||||
        return self.scryfallJson['mtgo_foil_id']
 | 
			
		||||
 | 
			
		||||
    def name(self):
 | 
			
		||||
        return self.scryfallJson['name']
 | 
			
		||||
 | 
			
		||||
    def uri(self):
 | 
			
		||||
        return self.scryfallJson['uri']
 | 
			
		||||
 | 
			
		||||
    def scryfall_uri(self):
 | 
			
		||||
        return self.scryfallJson['scryfall_uri']
 | 
			
		||||
 | 
			
		||||
    def layout(self):
 | 
			
		||||
        return self.scryfallJson['layout']
 | 
			
		||||
 | 
			
		||||
    def highres_image(self):
 | 
			
		||||
        return self.scryfallJson['highres_image']
 | 
			
		||||
 | 
			
		||||
    def image_uris(self):
 | 
			
		||||
        return self.scryfallJson['image_uris']
 | 
			
		||||
 | 
			
		||||
    def cmc(self):
 | 
			
		||||
        return self.scryfallJson['cmc']
 | 
			
		||||
 | 
			
		||||
    def type_line(self):
 | 
			
		||||
        return self.scryfallJson['type_line']
 | 
			
		||||
 | 
			
		||||
    def oracle_text(self):
 | 
			
		||||
        return self.scryfallJson['oracle_text']
 | 
			
		||||
 | 
			
		||||
    def mana_cost(self):
 | 
			
		||||
        return self.scryfallJson['mana_cost']
 | 
			
		||||
 | 
			
		||||
    def colors(self):
 | 
			
		||||
        return self.scryfallJson['colors']
 | 
			
		||||
 | 
			
		||||
    def color_identity(self):
 | 
			
		||||
        return self.scryfallJson['color_identity']
 | 
			
		||||
 | 
			
		||||
    def legalities(self):
 | 
			
		||||
        return self.scryfallJson['legalities']
 | 
			
		||||
 | 
			
		||||
    def reserved(self):
 | 
			
		||||
        return self.scryfallJson['reserved']
 | 
			
		||||
 | 
			
		||||
    def reprint(self):
 | 
			
		||||
        return self.scryfallJson['reprint']
 | 
			
		||||
 | 
			
		||||
    def set(self):
 | 
			
		||||
        return self.scryfallJson['set']
 | 
			
		||||
 | 
			
		||||
    def set_name(self):
 | 
			
		||||
        return self.scryfallJson['set_name']
 | 
			
		||||
 | 
			
		||||
    def set_uri(self):
 | 
			
		||||
        return self.scryfallJson['set_uri']
 | 
			
		||||
 | 
			
		||||
    def set_search_uri(self):
 | 
			
		||||
        return self.scryfallJson['set_search_uri']
 | 
			
		||||
 | 
			
		||||
    def scryfall_set_uri(self):
 | 
			
		||||
        return self.scryfallJson['scryfall_set_uri']
 | 
			
		||||
 | 
			
		||||
    def rulings_uri(self):
 | 
			
		||||
        return self.scryfallJson['rulings_uri']
 | 
			
		||||
 | 
			
		||||
    def prints_search_uri(self):
 | 
			
		||||
        return self.scryfallJson['prints_search_uri']
 | 
			
		||||
 | 
			
		||||
    def collector_number(self):
 | 
			
		||||
        return self.scryfallJson['collector_number']
 | 
			
		||||
 | 
			
		||||
    def digital(self):
 | 
			
		||||
        return self.scryfallJson['digital']
 | 
			
		||||
 | 
			
		||||
    def rarity(self):
 | 
			
		||||
        return self.scryfallJson['rarity']
 | 
			
		||||
 | 
			
		||||
    def illustration_id(self):
 | 
			
		||||
        return self.scryfallJson['illustration_id']
 | 
			
		||||
 | 
			
		||||
    def artist(self):
 | 
			
		||||
        return self.scryfallJson['artist']
 | 
			
		||||
 | 
			
		||||
    def frame(self):
 | 
			
		||||
        return self.scryfallJson['frame']
 | 
			
		||||
 | 
			
		||||
    def full_art(self):
 | 
			
		||||
        return self.scryfallJson['full_art']
 | 
			
		||||
 | 
			
		||||
    def border_color(self):
 | 
			
		||||
        return self.scryfallJson['border_color']
 | 
			
		||||
 | 
			
		||||
    def timeshifted(self):
 | 
			
		||||
        return self.scryfallJson['timeshifted']
 | 
			
		||||
 | 
			
		||||
    def colorshifted(self):
 | 
			
		||||
        return self.scryfallJson['colorshifted']
 | 
			
		||||
 | 
			
		||||
    def futureshifted(self):
 | 
			
		||||
        return self.scryfallJson['futureshifted']
 | 
			
		||||
 | 
			
		||||
    def edhrec_rank(self):
 | 
			
		||||
        return self.scryfallJson['edhrec_rank']
 | 
			
		||||
 | 
			
		||||
    def currency(self, mode):
 | 
			
		||||
        modes = ['usd', 'eur', 'tix']
 | 
			
		||||
        if mode not in modes:
 | 
			
		||||
            return KeyError("That currency is not available.")
 | 
			
		||||
        return self.scryfallJson[mode]
 | 
			
		||||
 | 
			
		||||
    def related_uris(self):
 | 
			
		||||
        return self.scryfallJson['related_uris']
 | 
			
		||||
 | 
			
		||||
    def purchase_uris(self):
 | 
			
		||||
        return self.scryfallJson['purchase_uris']
 | 
			
		||||
class RandomCard(ScryfallObject):
 | 
			
		||||
    """This will return a random card. No parameters are passed while creating."""
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.url = 'cards/random'
 | 
			
		||||
        super(RandomCard, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,12 +3,62 @@ import asyncio
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class ScryfallObject(object):
 | 
			
		||||
	"""docstring for ScryfallObject."""
 | 
			
		||||
	def __init__(self, **kwargs):
 | 
			
		||||
		self.format = kwargs.get('format')
 | 
			
		||||
		self.face = kwargs.get('face')
 | 
			
		||||
		self.version = kwargs.get('version')
 | 
			
		||||
		self.pretty = kwargs.get('pretty')
 | 
			
		||||
	"""
 | 
			
		||||
	Parameters:
 | 
			
		||||
		format: str				The data format to return: json, text, or image. Defaults to json.
 | 
			
		||||
		face: str				If using the image format and this parameter has the value back,
 | 
			
		||||
									the back face of the card will be returned.
 | 
			
		||||
									Will return a 404 if this card has no back face.
 | 
			
		||||
		version: str			The image version to return when using the image
 | 
			
		||||
									format: small, normal, large, png, art_crop, or border_crop. Defaults to large.
 | 
			
		||||
		pretty: bool			If true, the returned JSON will be prettified. Avoid using for production code.
 | 
			
		||||
 | 
			
		||||
	Attributes:
 | 
			
		||||
		object: str				Returns the type of object it is. (card, error, etc)
 | 
			
		||||
		id: str					The scryfall id of the card.
 | 
			
		||||
		multiverse_ids: arr		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. Cards with multiple faces are named with '//' as a seperator.
 | 
			
		||||
		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.
 | 
			
		||||
		card_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.
 | 
			
		||||
		colors: arr				An array of strings with all colors found in the mana cost.
 | 
			
		||||
		color_identity: arr		An array of strings with all colors found on the card itself.
 | 
			
		||||
		legalities: dict		A dictionary of all formats and their legality.
 | 
			
		||||
		reserved: bool			Returns True if the card is on the reserved list.
 | 
			
		||||
		reprint: bool			Returns True if the card has been reprinted before.
 | 
			
		||||
		set: str				The 3 letter code for the set of the card.
 | 
			
		||||
		set_name: str			The full name for the set of the card.
 | 
			
		||||
		set_uri: str			The API uri for the full set list of the card.
 | 
			
		||||
		set_search_uri: str		Same output as set_uri.
 | 
			
		||||
		scryfall_set_uri: str	The full link to the set on Scryfall.
 | 
			
		||||
		rulings_uri: str		The API uri for the rulings of the card.
 | 
			
		||||
		prints_search_uri: str	TODO: Figure out what this does.
 | 
			
		||||
		collector_number: str	The collector number of the card.
 | 
			
		||||
		digital: bool			Returns True if the card is the digital version.
 | 
			
		||||
		rarity: str				The rarity of the card.
 | 
			
		||||
		illustration_id: str	The related id of the card art.
 | 
			
		||||
		artist: str				The artist of the card.
 | 
			
		||||
		frame: str				The year of the card frame.
 | 
			
		||||
		full_art: bool			Returns True if the card is considered full art.
 | 
			
		||||
		border_color: str		The color of the card border.
 | 
			
		||||
		timeshifted: bool		Returns True if the card is timeshifted.
 | 
			
		||||
		colorshifted: bool		Returns True if the card is colorshifted.
 | 
			
		||||
		futureshifted: bool		Returns True if the card is futureshifted.
 | 
			
		||||
		edhrec_rank: int		The rank of the card on edhrec.com
 | 
			
		||||
		tix: int				The MTGO price of the card
 | 
			
		||||
		related_uris: dict		A dictionary of related websites for this card.
 | 
			
		||||
		purchase_uris: dict		A dictionary of links to purchase the card.
 | 
			
		||||
	"""
 | 
			
		||||
	def __init__(self, _url, **kwargs):
 | 
			
		||||
		self._url = 'https://api.scryfall.com/' + _url
 | 
			
		||||
		loop = asyncio.get_event_loop()
 | 
			
		||||
		self.session = aiohttp.ClientSession(loop=loop)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +66,21 @@ class ScryfallObject(object):
 | 
			
		|||
			async with self.session.get(url, **kwargs) as response:
 | 
			
		||||
				return await response.json()
 | 
			
		||||
 | 
			
		||||
		self.scryfallJson = loop.run_until_complete(getRequest(
 | 
			
		||||
			url = self._url,
 | 
			
		||||
			params={
 | 
			
		||||
				'format': kwargs.get('format'),
 | 
			
		||||
				'face': kwargs.get('face'),
 | 
			
		||||
				'version': kwargs.get('version'),
 | 
			
		||||
				'pretty': kwargs.get('pretty')
 | 
			
		||||
			}))
 | 
			
		||||
 | 
			
		||||
		if self.scryfallJson['object'] == 'error':
 | 
			
		||||
			self.session.close()
 | 
			
		||||
			raise Exception(self.scryfallJson['details'])
 | 
			
		||||
 | 
			
		||||
		self.session.close()
 | 
			
		||||
 | 
			
		||||
	def object(self):
 | 
			
		||||
		return self.scryfallJson['object']
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue