Refactored all objects to use a single unified get request method
This commit is contained in:
parent
5c068a576c
commit
bf8e97caf7
|
@ -1,9 +1,12 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
class BulkData(object):
|
class BulkData(FoundationObject):
|
||||||
"""
|
"""
|
||||||
/bulk-data
|
/bulk-data
|
||||||
Queries and creates an object relating to the /bulk-data endpoint.
|
Queries and creates an object relating to the /bulk-data endpoint.
|
||||||
|
@ -18,26 +21,8 @@ class BulkData(object):
|
||||||
"""
|
"""
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
|
|
||||||
self._url = 'https://api.scryfall.com/bulk-data'
|
self.url = 'https://api.scryfall.com/bulk-data'
|
||||||
|
super(BulkData, self).__init__(self.url, True)
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
raise Exception(self.scryfallJson['details'])
|
|
||||||
|
|
||||||
def _checkForKey(self, key):
|
def _checkForKey(self, key):
|
||||||
"""Checks for a key in the scryfallJson object.
|
"""Checks for a key in the scryfallJson object.
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
from .cards_object import CardsObject
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
class Autocomplete(CardsObject):
|
class Autocomplete(FoundationObject):
|
||||||
"""
|
"""
|
||||||
cards/autocomplete
|
cards/autocomplete
|
||||||
Get a list of potential autocompletion phrases.
|
Get a list of potential autocompletion phrases.
|
||||||
|
@ -43,71 +45,6 @@ class Autocomplete(CardsObject):
|
||||||
self.url = 'cards/autocomplete?' + self.args
|
self.url = 'cards/autocomplete?' + self.args
|
||||||
super(Autocomplete, self).__init__(self.url)
|
super(Autocomplete, 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):
|
def object(self):
|
||||||
"""Returns the type of object it is.
|
"""Returns the type of object it is.
|
||||||
(card, error, etc)
|
(card, error, etc)
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import asyncio
|
import asyncio
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
class CardsObject(object):
|
class CardsObject(FoundationObject):
|
||||||
"""
|
"""
|
||||||
Master class that all card objects inherit from.
|
Master class that all card objects inherit from.
|
||||||
|
|
||||||
|
@ -70,64 +73,6 @@ class CardsObject(object):
|
||||||
non_foil : bool ......... True if this printing does not exist in foil.
|
non_foil : bool ......... True if this printing does not exist in foil.
|
||||||
oversized : bool .......... True if this printing is an oversized card.
|
oversized : bool .......... True if this printing is an oversized card.
|
||||||
"""
|
"""
|
||||||
def __init__(self, _url, **kwargs):
|
|
||||||
|
|
||||||
self.params = {
|
|
||||||
'format': kwargs.get('format', 'json'), 'face': kwargs.get('face', ''),
|
|
||||||
'version': kwargs.get('version', ''), 'pretty': kwargs.get('pretty', '')
|
|
||||||
}
|
|
||||||
|
|
||||||
self.encodedParams = urllib.parse.urlencode(self.params)
|
|
||||||
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
|
||||||
|
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
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):
|
def object(self):
|
||||||
"""Returns the type of object it is
|
"""Returns the type of object it is
|
||||||
|
@ -136,7 +81,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: The type of object
|
string: The type of object
|
||||||
"""
|
"""
|
||||||
self._checkForKey('object')
|
super(CardsObject, self)._checkForKey('object')
|
||||||
|
|
||||||
return self.scryfallJson['object']
|
return self.scryfallJson['object']
|
||||||
|
|
||||||
|
@ -146,7 +91,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: The scryfall id of the card
|
string: The scryfall id of the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('id')
|
super(CardsObject, self)._checkForKey('id')
|
||||||
|
|
||||||
return self.scryfallJson['id']
|
return self.scryfallJson['id']
|
||||||
|
|
||||||
|
@ -156,7 +101,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
list: The associated multiverse ids of the card
|
list: The associated multiverse ids of the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('multiverse_ids')
|
super(CardsObject, self)._checkForKey('multiverse_ids')
|
||||||
|
|
||||||
return self.scryfallJson['multiverse_ids']
|
return self.scryfallJson['multiverse_ids']
|
||||||
|
|
||||||
|
@ -166,7 +111,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
integer: The Magic Online id of the card
|
integer: The Magic Online id of the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('mtgo_id')
|
super(CardsObject, self)._checkForKey('mtgo_id')
|
||||||
|
|
||||||
return self.scryfallJson['mtgo_id']
|
return self.scryfallJson['mtgo_id']
|
||||||
|
|
||||||
|
@ -176,7 +121,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
integer: The Magic Online foil id of the card
|
integer: The Magic Online foil id of the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('mtgo_foil_id')
|
super(CardsObject, self)._checkForKey('mtgo_foil_id')
|
||||||
|
|
||||||
return self.scryfallJson['mtgo_foil_id']
|
return self.scryfallJson['mtgo_foil_id']
|
||||||
|
|
||||||
|
@ -186,7 +131,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: The card name
|
string: The card name
|
||||||
"""
|
"""
|
||||||
self._checkForKey('name')
|
super(CardsObject, self)._checkForKey('name')
|
||||||
|
|
||||||
return self.scryfallJson['name']
|
return self.scryfallJson['name']
|
||||||
|
|
||||||
|
@ -196,7 +141,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: An API uri for the card
|
string: An API uri for the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('uri')
|
super(CardsObject, self)._checkForKey('uri')
|
||||||
|
|
||||||
return self.scryfallJson['uri']
|
return self.scryfallJson['uri']
|
||||||
|
|
||||||
|
@ -207,7 +152,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: The Scryfall URL for the card
|
string: The Scryfall URL for the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('scryfall_uri')
|
super(CardsObject, self)._checkForKey('scryfall_uri')
|
||||||
|
|
||||||
return self.scryfallJson['scryfall_uri']
|
return self.scryfallJson['scryfall_uri']
|
||||||
|
|
||||||
|
@ -217,7 +162,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
string: The card layout
|
string: The card layout
|
||||||
"""
|
"""
|
||||||
self._checkForKey('layout')
|
super(CardsObject, self)._checkForKey('layout')
|
||||||
|
|
||||||
return self.scryfallJson['layout']
|
return self.scryfallJson['layout']
|
||||||
|
|
||||||
|
@ -227,7 +172,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
boolean: True if card has a highres image available
|
boolean: True if card has a highres image available
|
||||||
"""
|
"""
|
||||||
self._checkForKey('highres_image')
|
super(CardsObject, self)._checkForKey('highres_image')
|
||||||
|
|
||||||
return self.scryfallJson['highres_image']
|
return self.scryfallJson['highres_image']
|
||||||
|
|
||||||
|
@ -237,7 +182,7 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
dict: The dictionary of image uris
|
dict: The dictionary of image uris
|
||||||
"""
|
"""
|
||||||
self._checkForKey('image_uris')
|
super(CardsObject, self)._checkForKey('image_uris')
|
||||||
|
|
||||||
return self.scryfallJson['image_uris']
|
return self.scryfallJson['image_uris']
|
||||||
|
|
||||||
|
@ -247,142 +192,142 @@ class CardsObject(object):
|
||||||
Returns:
|
Returns:
|
||||||
float: The cmc of the card
|
float: The cmc of the card
|
||||||
"""
|
"""
|
||||||
self._checkForKey('cmc')
|
super(CardsObject, self)._checkForKey('cmc')
|
||||||
|
|
||||||
return self.scryfallJson['cmc']
|
return self.scryfallJson['cmc']
|
||||||
|
|
||||||
def type_line(self):
|
def type_line(self):
|
||||||
self._checkForKey('type_line')
|
super(CardsObject, self)._checkForKey('type_line')
|
||||||
|
|
||||||
return self.scryfallJson['type_line']
|
return self.scryfallJson['type_line']
|
||||||
|
|
||||||
def oracle_text(self):
|
def oracle_text(self):
|
||||||
self._checkForKey('oracle_text')
|
super(CardsObject, self)._checkForKey('oracle_text')
|
||||||
|
|
||||||
return self.scryfallJson['oracle_text']
|
return self.scryfallJson['oracle_text']
|
||||||
|
|
||||||
def mana_cost(self):
|
def mana_cost(self):
|
||||||
self._checkForKey('mana_cost')
|
super(CardsObject, self)._checkForKey('mana_cost')
|
||||||
|
|
||||||
return self.scryfallJson['mana_cost']
|
return self.scryfallJson['mana_cost']
|
||||||
|
|
||||||
def colors(self):
|
def colors(self):
|
||||||
self._checkForKey('colors')
|
super(CardsObject, self)._checkForKey('colors')
|
||||||
|
|
||||||
return self.scryfallJson['colors']
|
return self.scryfallJson['colors']
|
||||||
|
|
||||||
def color_identity(self):
|
def color_identity(self):
|
||||||
self._checkForKey('color_identity')
|
super(CardsObject, self)._checkForKey('color_identity')
|
||||||
|
|
||||||
return self.scryfallJson['color_identity']
|
return self.scryfallJson['color_identity']
|
||||||
|
|
||||||
def legalities(self):
|
def legalities(self):
|
||||||
self._checkForKey('legalities')
|
super(CardsObject, self)._checkForKey('legalities')
|
||||||
|
|
||||||
return self.scryfallJson['legalities']
|
return self.scryfallJson['legalities']
|
||||||
|
|
||||||
def reserved(self):
|
def reserved(self):
|
||||||
self._checkForKey('reserved')
|
super(CardsObject, self)._checkForKey('reserved')
|
||||||
|
|
||||||
return self.scryfallJson['reserved']
|
return self.scryfallJson['reserved']
|
||||||
|
|
||||||
def reprint(self):
|
def reprint(self):
|
||||||
self._checkForKey('reprint')
|
super(CardsObject, self)._checkForKey('reprint')
|
||||||
|
|
||||||
return self.scryfallJson['reprint']
|
return self.scryfallJson['reprint']
|
||||||
|
|
||||||
def set_code(self):
|
def set_code(self):
|
||||||
self._checkForKey('set')
|
super(CardsObject, self)._checkForKey('set')
|
||||||
|
|
||||||
return self.scryfallJson['set']
|
return self.scryfallJson['set']
|
||||||
|
|
||||||
def set_name(self):
|
def set_name(self):
|
||||||
self._checkForKey('set_name')
|
super(CardsObject, self)._checkForKey('set_name')
|
||||||
|
|
||||||
return self.scryfallJson['set_name']
|
return self.scryfallJson['set_name']
|
||||||
|
|
||||||
def set_uri(self):
|
def set_uri(self):
|
||||||
self._checkForKey('set_uri')
|
super(CardsObject, self)._checkForKey('set_uri')
|
||||||
|
|
||||||
return self.scryfallJson['set_uri']
|
return self.scryfallJson['set_uri']
|
||||||
|
|
||||||
def set_search_uri(self):
|
def set_search_uri(self):
|
||||||
self._checkForKey('set_search_uri')
|
super(CardsObject, self)._checkForKey('set_search_uri')
|
||||||
|
|
||||||
return self.scryfallJson['set_search_uri']
|
return self.scryfallJson['set_search_uri']
|
||||||
|
|
||||||
def scryfall_set_uri(self):
|
def scryfall_set_uri(self):
|
||||||
self._checkForKey('scryfall_set_uri')
|
super(CardsObject, self)._checkForKey('scryfall_set_uri')
|
||||||
|
|
||||||
return self.scryfallJson['scryfall_set_uri']
|
return self.scryfallJson['scryfall_set_uri']
|
||||||
|
|
||||||
def rulings_uri(self):
|
def rulings_uri(self):
|
||||||
self._checkForKey('rulings_uri')
|
super(CardsObject, self)._checkForKey('rulings_uri')
|
||||||
|
|
||||||
return self.scryfallJson['rulings_uri']
|
return self.scryfallJson['rulings_uri']
|
||||||
|
|
||||||
def prints_search_uri(self):
|
def prints_search_uri(self):
|
||||||
self._checkForKey('prints_search_uri')
|
super(CardsObject, self)._checkForKey('prints_search_uri')
|
||||||
|
|
||||||
return self.scryfallJson['prints_search_uri']
|
return self.scryfallJson['prints_search_uri']
|
||||||
|
|
||||||
def collector_number(self):
|
def collector_number(self):
|
||||||
self._checkForKey('collector_number')
|
super(CardsObject, self)._checkForKey('collector_number')
|
||||||
|
|
||||||
return self.scryfallJson['collector_number']
|
return self.scryfallJson['collector_number']
|
||||||
|
|
||||||
def digital(self):
|
def digital(self):
|
||||||
self._checkForKey('digital')
|
super(CardsObject, self)._checkForKey('digital')
|
||||||
|
|
||||||
return self.scryfallJson['digital']
|
return self.scryfallJson['digital']
|
||||||
|
|
||||||
def rarity(self):
|
def rarity(self):
|
||||||
self._checkForKey('rarity')
|
super(CardsObject, self)._checkForKey('rarity')
|
||||||
|
|
||||||
return self.scryfallJson['rarity']
|
return self.scryfallJson['rarity']
|
||||||
|
|
||||||
def illustration_id(self):
|
def illustration_id(self):
|
||||||
self._checkForKey('illustration_id')
|
super(CardsObject, self)._checkForKey('illustration_id')
|
||||||
|
|
||||||
return self.scryfallJson['illustration_id']
|
return self.scryfallJson['illustration_id']
|
||||||
|
|
||||||
def artist(self):
|
def artist(self):
|
||||||
self._checkForKey('artist')
|
super(CardsObject, self)._checkForKey('artist')
|
||||||
|
|
||||||
return self.scryfallJson['artist']
|
return self.scryfallJson['artist']
|
||||||
|
|
||||||
def frame(self):
|
def frame(self):
|
||||||
self._checkForKey('frame')
|
super(CardsObject, self)._checkForKey('frame')
|
||||||
|
|
||||||
return self.scryfallJson['frame']
|
return self.scryfallJson['frame']
|
||||||
|
|
||||||
def full_art(self):
|
def full_art(self):
|
||||||
self._checkForKey('full_art')
|
super(CardsObject, self)._checkForKey('full_art')
|
||||||
|
|
||||||
return self.scryfallJson['full_art']
|
return self.scryfallJson['full_art']
|
||||||
|
|
||||||
def border_color(self):
|
def border_color(self):
|
||||||
self._checkForKey('border_color')
|
super(CardsObject, self)._checkForKey('border_color')
|
||||||
|
|
||||||
return self.scryfallJson['border_color']
|
return self.scryfallJson['border_color']
|
||||||
|
|
||||||
def timeshifted(self):
|
def timeshifted(self):
|
||||||
self._checkForKey('timeshifted')
|
super(CardsObject, self)._checkForKey('timeshifted')
|
||||||
|
|
||||||
return self.scryfallJson['timeshifted']
|
return self.scryfallJson['timeshifted']
|
||||||
|
|
||||||
def colorshifted(self):
|
def colorshifted(self):
|
||||||
self._checkForKey('colorshifted')
|
super(CardsObject, self)._checkForKey('colorshifted')
|
||||||
|
|
||||||
return self.scryfallJson['colorshifted']
|
return self.scryfallJson['colorshifted']
|
||||||
|
|
||||||
def futureshifted(self):
|
def futureshifted(self):
|
||||||
self._checkForKey('futureshifted')
|
super(CardsObject, self)._checkForKey('futureshifted')
|
||||||
|
|
||||||
return self.scryfallJson['futureshifted']
|
return self.scryfallJson['futureshifted']
|
||||||
|
|
||||||
def edhrec_rank(self):
|
def edhrec_rank(self):
|
||||||
self._checkForKey('edhrec_rank')
|
super(CardsObject, self)._checkForKey('edhrec_rank')
|
||||||
|
|
||||||
return self.scryfallJson['edhrec_rank']
|
return self.scryfallJson['edhrec_rank']
|
||||||
|
|
||||||
|
@ -391,27 +336,27 @@ class CardsObject(object):
|
||||||
if mode not in modes:
|
if mode not in modes:
|
||||||
raise KeyError("{} is not a key.".format(mode))
|
raise KeyError("{} is not a key.".format(mode))
|
||||||
|
|
||||||
self._checkForKey(mode)
|
super(CardsObject, self)._checkForKey(mode)
|
||||||
|
|
||||||
return self.scryfallJson[mode]
|
return self.scryfallJson[mode]
|
||||||
|
|
||||||
def related_uris(self):
|
def related_uris(self):
|
||||||
self._checkForKey('related_uris')
|
super(CardsObject, self)._checkForKey('related_uris')
|
||||||
|
|
||||||
return self.scryfallJson['related_uris']
|
return self.scryfallJson['related_uris']
|
||||||
|
|
||||||
def purchase_uris(self):
|
def purchase_uris(self):
|
||||||
self._checkForKey('purchase_uris')
|
super(CardsObject, self)._checkForKey('purchase_uris')
|
||||||
|
|
||||||
return self.scryfallJson['purchase_uris']
|
return self.scryfallJson['purchase_uris']
|
||||||
|
|
||||||
def life_modifier(self):
|
def life_modifier(self):
|
||||||
self._checkForKey('life_modifier')
|
super(CardsObject, self)._checkForKey('life_modifier')
|
||||||
|
|
||||||
return self.scryfallJson['life_modifier']
|
return self.scryfallJson['life_modifier']
|
||||||
|
|
||||||
def hand_modifier(self):
|
def hand_modifier(self):
|
||||||
self._checkForKey('hand_modifier')
|
super(CardsObject, self)._checkForKey('hand_modifier')
|
||||||
|
|
||||||
return self.scryfallJson['hand_modifier']
|
return self.scryfallJson['hand_modifier']
|
||||||
|
|
||||||
|
@ -421,86 +366,86 @@ class CardsObject(object):
|
||||||
return self.scryfallJson['card_faces'][num]['color_indicator']
|
return self.scryfallJson['card_faces'][num]['color_indicator']
|
||||||
|
|
||||||
def all_parts(self):
|
def all_parts(self):
|
||||||
self._checkForKey('all_parts')
|
super(CardsObject, self)._checkForKey('all_parts')
|
||||||
|
|
||||||
return self.scryfallJson['all_parts']
|
return self.scryfallJson['all_parts']
|
||||||
|
|
||||||
def card_faces(self):
|
def card_faces(self):
|
||||||
self._checkForKey('card_faces')
|
super(CardsObject, self)._checkForKey('card_faces')
|
||||||
|
|
||||||
return self.scryfallJson['card_faces']
|
return self.scryfallJson['card_faces']
|
||||||
|
|
||||||
def watermark(self):
|
def watermark(self):
|
||||||
self._checkForKey('watermark')
|
super(CardsObject, self)._checkForKey('watermark')
|
||||||
|
|
||||||
return self.scryfallJson['watermark']
|
return self.scryfallJson['watermark']
|
||||||
|
|
||||||
def story_spotlight(self):
|
def story_spotlight(self):
|
||||||
self._checkForKey('story_spotlight')
|
super(CardsObject, self)._checkForKey('story_spotlight')
|
||||||
|
|
||||||
return self.scryfallJson['story_spotlight']
|
return self.scryfallJson['story_spotlight']
|
||||||
|
|
||||||
def power(self):
|
def power(self):
|
||||||
self._checkForKey('power')
|
super(CardsObject, self)._checkForKey('power')
|
||||||
|
|
||||||
return self.scryfallJson['power']
|
return self.scryfallJson['power']
|
||||||
|
|
||||||
def toughness(self):
|
def toughness(self):
|
||||||
self._checkForKey('toughness')
|
super(CardsObject, self)._checkForKey('toughness')
|
||||||
|
|
||||||
return self.scryfallJson['toughness']
|
return self.scryfallJson['toughness']
|
||||||
|
|
||||||
def loyalty(self):
|
def loyalty(self):
|
||||||
self._checkForKey('loyalty')
|
super(CardsObject, self)._checkForKey('loyalty')
|
||||||
|
|
||||||
return self.scryfallJson['loyalty']
|
return self.scryfallJson['loyalty']
|
||||||
|
|
||||||
def flavor_text(self):
|
def flavor_text(self):
|
||||||
self._checkForKey('flavor_text')
|
super(CardsObject, self)._checkForKey('flavor_text')
|
||||||
|
|
||||||
return self.scryfallJson['flavor_text']
|
return self.scryfallJson['flavor_text']
|
||||||
|
|
||||||
def arena_id(self):
|
def arena_id(self):
|
||||||
self._checkForKey('arena_id')
|
super(CardsObject, self)._checkForKey('arena_id')
|
||||||
|
|
||||||
return self.scryfallJson['arena_id']
|
return self.scryfallJson['arena_id']
|
||||||
|
|
||||||
def lang(self):
|
def lang(self):
|
||||||
self._checkForKey('lang')
|
super(CardsObject, self)._checkForKey('lang')
|
||||||
|
|
||||||
return self.scryfallJson['lang']
|
return self.scryfallJson['lang']
|
||||||
|
|
||||||
def printed_name(self):
|
def printed_name(self):
|
||||||
self._checkForKey('printed_name')
|
super(CardsObject, self)._checkForKey('printed_name')
|
||||||
|
|
||||||
return self.scryfallJson['printed_name']
|
return self.scryfallJson['printed_name']
|
||||||
|
|
||||||
def printed_type_line(self):
|
def printed_type_line(self):
|
||||||
self._checkForKey('printed_type_line')
|
super(CardsObject, self)._checkForKey('printed_type_line')
|
||||||
|
|
||||||
return self.scryfallJson['printed_type_line']
|
return self.scryfallJson['printed_type_line']
|
||||||
|
|
||||||
def printed_text(self):
|
def printed_text(self):
|
||||||
self._checkForKey('printed_text')
|
super(CardsObject, self)._checkForKey('printed_text')
|
||||||
|
|
||||||
return self.scryfallJson['printed_text']
|
return self.scryfallJson['printed_text']
|
||||||
|
|
||||||
def oracle_id(self):
|
def oracle_id(self):
|
||||||
self._checkForKey('oracle_id')
|
super(CardsObject, self)._checkForKey('oracle_id')
|
||||||
|
|
||||||
return self.scryfallJson['oracle_id']
|
return self.scryfallJson['oracle_id']
|
||||||
|
|
||||||
def foil(self):
|
def foil(self):
|
||||||
self._checkForKey('foil')
|
super(CardsObject, self)._checkForKey('foil')
|
||||||
|
|
||||||
return self.scryfallJson['foil']
|
return self.scryfallJson['foil']
|
||||||
|
|
||||||
def nonfoil(self):
|
def nonfoil(self):
|
||||||
self._checkForKey('nonfoil')
|
super(CardsObject, self)._checkForKey('nonfoil')
|
||||||
|
|
||||||
return self.scryfallJson['nonfoil']
|
return self.scryfallJson['nonfoil']
|
||||||
|
|
||||||
def oversized(self):
|
def oversized(self):
|
||||||
self._checkForKey('oversized')
|
super(CardsObject, self)._checkForKey('oversized')
|
||||||
|
|
||||||
return self.scryfallJson['oversized']
|
return self.scryfallJson['oversized']
|
|
@ -1,7 +1,10 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
from .cards_object import CardsObject
|
from .cards_object import CardsObject
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
class Search(CardsObject):
|
class Search(FoundationObject):
|
||||||
"""
|
"""
|
||||||
cards/search
|
cards/search
|
||||||
Uses a search query to gather relevant data.
|
Uses a search query to gather relevant data.
|
||||||
|
@ -70,71 +73,6 @@ class Search(CardsObject):
|
||||||
|
|
||||||
super(Search, self).__init__(self.url)
|
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):
|
def object(self):
|
||||||
"""Returns the type of object it is.
|
"""Returns the type of object it is.
|
||||||
(card, error, etc)
|
(card, error, etc)
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
class CatalogsObject(object):
|
class CatalogsObject(FoundationObject):
|
||||||
"""
|
"""
|
||||||
Master object for all catalog objects.
|
Master object for all catalog objects.
|
||||||
|
|
||||||
|
@ -20,51 +23,23 @@ class CatalogsObject(object):
|
||||||
total_values : int ..................... The number of items in `data()`
|
total_values : int ..................... The number of items in `data()`
|
||||||
data : list .............. A list of all types returned by the endpoint.
|
data : list .............. A list of all types returned by the endpoint.
|
||||||
"""
|
"""
|
||||||
def __init__(self, _url, **kwargs):
|
|
||||||
self.params = {'format': kwargs.get('format', 'json'), 'pretty': kwargs.get('pretty', '')}
|
|
||||||
|
|
||||||
self.encodedParams = urllib.parse.urlencode(self.params)
|
|
||||||
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
|
||||||
|
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
raise Exception(self.scryfallJson['details'])
|
|
||||||
|
|
||||||
def _checkForKey(self, key):
|
|
||||||
if not key in self.scryfallJson:
|
|
||||||
raise KeyError('This card has no key \'{}\''.format(key))
|
|
||||||
|
|
||||||
def object(self):
|
def object(self):
|
||||||
self._checkForKey('object')
|
super(CatalogsObject, self)._checkForKey('object')
|
||||||
|
|
||||||
return self.scryfallJson['object']
|
return self.scryfallJson['object']
|
||||||
|
|
||||||
def uri(self):
|
def uri(self):
|
||||||
self._checkForKey('uri')
|
super(CatalogsObject, self)._checkForKey('uri')
|
||||||
|
|
||||||
return self.scryfallJson['uri']
|
return self.scryfallJson['uri']
|
||||||
|
|
||||||
def total_values(self):
|
def total_values(self):
|
||||||
self._checkForKey('total_values')
|
super(CatalogsObject, self)._checkForKey('total_values')
|
||||||
|
|
||||||
return self.scryfallJson['total_values']
|
return self.scryfallJson['total_values']
|
||||||
|
|
||||||
def data(self):
|
def data(self):
|
||||||
self._checkForKey('data')
|
super(CatalogsObject, self)._checkForKey('data')
|
||||||
|
|
||||||
return self.scryfallJson['data']
|
return self.scryfallJson['data']
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
import aiohttp
|
||||||
|
import asyncio
|
||||||
|
import urllib
|
||||||
|
|
||||||
|
class FoundationObject(object):
|
||||||
|
|
||||||
|
def __init__(self, _url, override=False, **kwargs):
|
||||||
|
self.params = {
|
||||||
|
'format': kwargs.get('format', 'json'), 'face': kwargs.get('face', ''),
|
||||||
|
'version': kwargs.get('version', ''), 'pretty': kwargs.get('pretty', '')
|
||||||
|
}
|
||||||
|
|
||||||
|
self.encodedParams = urllib.parse.urlencode(self.params)
|
||||||
|
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
||||||
|
|
||||||
|
if override:
|
||||||
|
self._url = _url
|
||||||
|
|
||||||
|
async def getRequest(client, url, **kwargs):
|
||||||
|
async with client.get(url, **kwargs) as response:
|
||||||
|
return await response.json()
|
||||||
|
|
||||||
|
async def main(loop):
|
||||||
|
async with aiohttp.ClientSession(loop=loop) as client:
|
||||||
|
self.scryfallJson = await getRequest(client, self._url)
|
||||||
|
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
loop.run_until_complete(main(loop))
|
||||||
|
|
||||||
|
if self.scryfallJson['object'] == 'error':
|
||||||
|
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))
|
|
@ -1,9 +1,12 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
class RulingsObject(object):
|
class RulingsObject(FoundationObject):
|
||||||
"""
|
"""
|
||||||
Master class for all rulings objects.
|
Master class for all rulings objects.
|
||||||
|
|
||||||
|
@ -31,33 +34,6 @@ class RulingsObject(object):
|
||||||
ruling_published_at : str ...... The date when the ruling was published.
|
ruling_published_at : str ...... The date when the ruling was published.
|
||||||
ruling_comment : str ............................. The effective ruling.
|
ruling_comment : str ............................. The effective ruling.
|
||||||
"""
|
"""
|
||||||
def __init__(self, _url, **kwargs):
|
|
||||||
self.params = {
|
|
||||||
'format': kwargs.get('format', 'json'), 'face': kwargs.get('face', ''),
|
|
||||||
'version': kwargs.get('version', ''), 'pretty': kwargs.get('pretty', '')
|
|
||||||
}
|
|
||||||
|
|
||||||
self.encodedParams = urllib.parse.urlencode(self.params)
|
|
||||||
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
|
||||||
|
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
raise Exception(self.scryfallJson['details'])
|
|
||||||
|
|
||||||
def _checkForKey(self, key):
|
def _checkForKey(self, key):
|
||||||
if not key in self.scryfallJson:
|
if not key in self.scryfallJson:
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
class SetsObject(object):
|
class SetsObject(FoundationObject):
|
||||||
"""
|
"""
|
||||||
The master class for all sets objects.
|
The master class for all sets objects.
|
||||||
|
|
||||||
|
@ -30,30 +33,6 @@ class SetsObject(object):
|
||||||
icon_svg_uri : str ................ A URI to the SVG of the set symbol.
|
icon_svg_uri : str ................ A URI to the SVG of the set symbol.
|
||||||
search_uri : str .................. The scryfall API url for the search.
|
search_uri : str .................. The scryfall API url for the search.
|
||||||
"""
|
"""
|
||||||
def __init__(self, _url, **kwargs):
|
|
||||||
self.params = {'format': kwargs.get('format', 'json'), 'pretty': kwargs.get('pretty', '')}
|
|
||||||
|
|
||||||
self.encodedParams = urllib.parse.urlencode(self.params)
|
|
||||||
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
|
||||||
|
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
raise Exception(self.scryfallJson['details'])
|
|
||||||
|
|
||||||
def _checkForKey(self, key):
|
def _checkForKey(self, key):
|
||||||
if not key in self.scryfallJson:
|
if not key in self.scryfallJson:
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
from .symbology_object import SymbologyObject
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
|
|
||||||
class ParseMana(SymbologyObject):
|
class ParseMana(FoundationObject):
|
||||||
"""
|
"""
|
||||||
symbology/parse-mana
|
symbology/parse-mana
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
from .symbology_object import SymbologyObject
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from scrython.foundation import FoundationObject
|
||||||
|
|
||||||
class Symbology(SymbologyObject):
|
class Symbology(FoundationObject):
|
||||||
"""
|
"""
|
||||||
/symbology
|
/symbology
|
||||||
|
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
import asyncio
|
|
||||||
import aiohttp
|
|
||||||
import urllib.parse
|
|
||||||
from threading import Thread
|
|
||||||
|
|
||||||
class SymbologyObject(object):
|
|
||||||
"""
|
|
||||||
The master class for all symbology objects.
|
|
||||||
|
|
||||||
Positional arguments:
|
|
||||||
No arguments required.
|
|
||||||
|
|
||||||
Optional arguments:
|
|
||||||
format : str ................... The format to return. Defaults to JSON.
|
|
||||||
pretty : bool ... Makes the returned JSON prettier. The library may not work properly with this setting.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
No attributes to call.
|
|
||||||
"""
|
|
||||||
def __init__(self, _url, **kwargs):
|
|
||||||
self.params = {'format': kwargs.get('format', 'json'), 'pretty': kwargs.get('pretty', '')}
|
|
||||||
|
|
||||||
self.encodedParams = urllib.parse.urlencode(self.params)
|
|
||||||
self._url = 'https://api.scryfall.com/{0}&{1}'.format(_url, self.encodedParams)
|
|
||||||
|
|
||||||
async def getRequest(client, url, **kwargs):
|
|
||||||
async with client.get(url, **kwargs) as response:
|
|
||||||
return await response.json()
|
|
||||||
|
|
||||||
async def main(loop):
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as client:
|
|
||||||
self.scryfallJson = await getRequest(client, self._url)
|
|
||||||
|
|
||||||
def do_everything():
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
loop.run_until_complete(main(loop))
|
|
||||||
|
|
||||||
t = Thread(target=do_everything)
|
|
||||||
t.run()
|
|
||||||
|
|
||||||
if self.scryfallJson['object'] == 'error':
|
|
||||||
raise Exception(self.scryfallJson['details'])
|
|
||||||
|
|
||||||
def _checkForKey(self, key):
|
|
||||||
if not key in self.scryfallJson:
|
|
||||||
raise KeyError('This object ahs no key \'{}\''.format(key))
|
|
||||||
|
|
||||||
def _checkForTupleKey(self, parent, num, key):
|
|
||||||
if not key in self.scryfallJson[parent][num]:
|
|
||||||
raise KeyError('This object has no key \'{}\''.format(key))
|
|
Loading…
Reference in New Issue