Changed a whole bunch of stuff.
This commit is contained in:
		
							parent
							
								
									d92aad46b6
								
							
						
					
					
						commit
						958c332e65
					
				| 
						 | 
				
			
			@ -2,3 +2,4 @@ __pycache__
 | 
			
		|||
.ropeproject
 | 
			
		||||
scrython.egg-info
 | 
			
		||||
dist
 | 
			
		||||
tests
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
import scrython
 | 
			
		||||
 | 
			
		||||
getCard = input("What card would you like me to search? ")
 | 
			
		||||
getCard = str(input("What card would you like me to search? "))
 | 
			
		||||
 | 
			
		||||
card = scrython.cards.Named(fuzzy=getCard)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,76 @@
 | 
			
		|||
import scrython, time
 | 
			
		||||
 | 
			
		||||
def keyCheck(key, _dict):
 | 
			
		||||
    try:
 | 
			
		||||
        _dict[key]
 | 
			
		||||
        return True
 | 
			
		||||
    except KeyError:
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
def nameBar(name, manaCost):
 | 
			
		||||
    return "{} {}".format(name, manaCost)
 | 
			
		||||
 | 
			
		||||
def typeBar(typeLine, rarity):
 | 
			
		||||
    return "{} | {}".format(typeLine, rarity[:1].upper())
 | 
			
		||||
 | 
			
		||||
def powerAndToughness(power, toughness):
 | 
			
		||||
    return "{}/{}".format(power, toughness)
 | 
			
		||||
 | 
			
		||||
query = input("Enter a set: ")
 | 
			
		||||
 | 
			
		||||
currentSetSize = 0
 | 
			
		||||
lastList = []
 | 
			
		||||
currentList = []
 | 
			
		||||
 | 
			
		||||
while query is not None:
 | 
			
		||||
 | 
			
		||||
    #Grab the data
 | 
			
		||||
    spoilers = scrython.cards.Search(q="++e:{}".format(query), order='spoiled')
 | 
			
		||||
 | 
			
		||||
     #If the total cards has increased
 | 
			
		||||
    if spoilers.total_cards() > currentSetSize:
 | 
			
		||||
 | 
			
		||||
        #Dump if currentList already exists
 | 
			
		||||
        if currentList:
 | 
			
		||||
            del currentList[:]
 | 
			
		||||
 | 
			
		||||
        #If there aren't enough spoilers we iterate through the whole list.
 | 
			
		||||
        #Otherwise we only want the first 15
 | 
			
		||||
        if spoilers.total_cards() > 15:
 | 
			
		||||
            maxIteration = 15
 | 
			
		||||
        else:
 | 
			
		||||
            maxIteration = spoilers.total_cards()
 | 
			
		||||
 | 
			
		||||
        for i in range(maxIteration):
 | 
			
		||||
            currentList.append(spoilers.data()[i]['id'])
 | 
			
		||||
 | 
			
		||||
        #Iterate through data
 | 
			
		||||
        for card in reversed(spoilers.data()):
 | 
			
		||||
            if card['id'] in lastList:
 | 
			
		||||
                continue
 | 
			
		||||
            print("~~~~~~~~~~\nNew card:")
 | 
			
		||||
 | 
			
		||||
            #Grab the relevant keys
 | 
			
		||||
            if keyCheck('card_faces', card):
 | 
			
		||||
                print(nameBar(card['name'], card['card_faces'][0]['mana_cost']))
 | 
			
		||||
                print(typeBar(card['card_faces'][0]['mana_cost']))
 | 
			
		||||
            else:
 | 
			
		||||
                print(nameBar(card['name'], card['mana_cost']))
 | 
			
		||||
                print(typeBar(card['type_line'], card['rarity']))
 | 
			
		||||
 | 
			
		||||
            if keyCheck('oracle_text', card):
 | 
			
		||||
                print(card['oracle_text'])
 | 
			
		||||
 | 
			
		||||
            if keyCheck('power', card) and keyCheck('toughness', card):
 | 
			
		||||
                print(powerAndToughness(card['power'], card['toughness']))
 | 
			
		||||
 | 
			
		||||
    #Update card count
 | 
			
		||||
    currentSetSize = spoilers.total_cards()
 | 
			
		||||
    #Dump all in last list
 | 
			
		||||
    if lastList:
 | 
			
		||||
        del lastList[:]
 | 
			
		||||
    #Add the first 15 ids in current list to last list
 | 
			
		||||
    for i in range(maxIteration):
 | 
			
		||||
        lastList.append(currentList[i])
 | 
			
		||||
 | 
			
		||||
    time.sleep(300)
 | 
			
		||||
| 
						 | 
				
			
			@ -5,5 +5,5 @@ class Id(CardsObject):
 | 
			
		|||
		if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
		self.url = 'cards/' + str(kwargs.get('id'))
 | 
			
		||||
		self.url = 'cards/{}?'.format(str(kwargs.get('id')))
 | 
			
		||||
		super(Id, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,17 @@
 | 
			
		|||
import aiohttp
 | 
			
		||||
import asyncio
 | 
			
		||||
import urllib.parse
 | 
			
		||||
 | 
			
		||||
class CardsObject(object):
 | 
			
		||||
	def __init__(self, _url, **kwargs):
 | 
			
		||||
		self._url = 'https://api.scryfall.com/' + _url
 | 
			
		||||
 | 
			
		||||
		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/' + _url + "&" + self.encodedParams #Find a fix for this later
 | 
			
		||||
		loop = asyncio.get_event_loop()
 | 
			
		||||
		self.session = aiohttp.ClientSession(loop=loop)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,14 +19,7 @@ class CardsObject(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', 'None'),
 | 
			
		||||
				'face': kwargs.get('face', 'None'),
 | 
			
		||||
				'version': kwargs.get('version', 'None'),
 | 
			
		||||
				'pretty': kwargs.get('pretty', 'None')
 | 
			
		||||
			}))
 | 
			
		||||
		self.scryfallJson = loop.run_until_complete(getRequest(url = self._url))
 | 
			
		||||
 | 
			
		||||
		if self.scryfallJson['object'] == 'error':
 | 
			
		||||
			self.session.close()
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +155,7 @@ class CardsObject(object):
 | 
			
		|||
 | 
			
		||||
	def set_code(self):
 | 
			
		||||
		if self.__checkForKey('set') is None:
 | 
			
		||||
			raise KeyError("This card has no key \'set_code\'")
 | 
			
		||||
			raise KeyError("This card has no key \'set\'")
 | 
			
		||||
 | 
			
		||||
		return self.scryfallJson['set']
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,5 +5,5 @@ class Collector(CardsObject):
 | 
			
		|||
		if kwargs.get('code') is None:
 | 
			
		||||
			raise TypeError('No code provided to search by')
 | 
			
		||||
 | 
			
		||||
		self.url = 'cards/{}/{}'.format(kwargs.get('code'), str(kwargs.get('collector_number')))
 | 
			
		||||
		self.url = 'cards/{}/{}?'.format(kwargs.get('code'), str(kwargs.get('collector_number')))
 | 
			
		||||
		super(Collector, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,5 +5,6 @@ class Mtgo(CardsObject):
 | 
			
		|||
	def __init__(self, **kwargs):
 | 
			
		||||
		if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
		self.url = 'cards/mtgo/' + str(kwargs.get('id'))
 | 
			
		||||
 | 
			
		||||
		self.url = 'cards/mtgo/{}?'.format(str(kwargs.get('id')))
 | 
			
		||||
		super(Mtgo, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,5 +4,6 @@ class Multiverse(CardsObject):
 | 
			
		|||
	def __init__(self, **kwargs):
 | 
			
		||||
		if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
		self.url = 'cards/multiverse/' + kwargs.get('id')
 | 
			
		||||
 | 
			
		||||
		self.url = 'cards/multiverse/{}?'.format(str(kwargs.get('id')))
 | 
			
		||||
		super(Multiverse, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,15 @@ import urllib.parse
 | 
			
		|||
class Named(CardsObject):
 | 
			
		||||
	def __init__(self, **kwargs):
 | 
			
		||||
		self.dict = {
 | 
			
		||||
			'exact':kwargs.get('exact', ''),
 | 
			
		||||
			'fuzzy':kwargs.get('fuzzy', ''),
 | 
			
		||||
			'set':kwargs.get('set', 'none')
 | 
			
		||||
			'set':kwargs.get('set', '')
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if kwargs.get('exact') is not None:
 | 
			
		||||
			self.dict['exact'] = kwargs.get('exact')
 | 
			
		||||
 | 
			
		||||
		if kwargs.get('fuzzy') is not None:
 | 
			
		||||
			self.dict['fuzzy'] = kwargs.get('fuzzy')
 | 
			
		||||
 | 
			
		||||
		self.args = urllib.parse.urlencode(self.dict)
 | 
			
		||||
		self.url = 'cards/named?' + self.args
 | 
			
		||||
		super(Named, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,5 +3,5 @@ from .cards_object import CardsObject
 | 
			
		|||
 | 
			
		||||
class Random(CardsObject):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.url = 'cards/random'
 | 
			
		||||
        self.url = 'cards/random?'
 | 
			
		||||
        super(Random, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from .rulings_object import RulingsObject
 | 
			
		|||
class Mtgo(RulingsObject):
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
            raise TypeError('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/mtgo/{}/rulings'.format(str(kwargs.get('id')))
 | 
			
		||||
        super(Mtgo, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from .rulings_object import RulingsObject
 | 
			
		|||
class Multiverse(RulingsObject):
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
            raise TypeError('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/multiverse/{}/rulings'.format(str(kwargs.get('id')))
 | 
			
		||||
        super(Multiverse, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from .rulings_object import RulingsObject
 | 
			
		|||
class Id(RulingsObject):
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if kwargs.get('id') is None:
 | 
			
		||||
			raise TypeError('No id provided to search by')
 | 
			
		||||
            raise TypeError('No id provided to search by')
 | 
			
		||||
 | 
			
		||||
        self.url = 'cards/{}/rulings'.format(str(kwargs.get('id')))
 | 
			
		||||
        super(Id, self).__init__(self.url)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								setup.py
								
								
								
								
							
							
						
						
									
										2
									
								
								setup.py
								
								
								
								
							| 
						 | 
				
			
			@ -7,7 +7,7 @@ with open('README.md') as f:
 | 
			
		|||
setup(
 | 
			
		||||
	name='scrython',
 | 
			
		||||
	packages=['scrython', 'scrython.cards', 'scrython.rulings'],
 | 
			
		||||
	version='0.2.0',
 | 
			
		||||
	version='0.4.0',
 | 
			
		||||
	description='A wrapper for using the Scryfall API.',
 | 
			
		||||
	long_description=readme,
 | 
			
		||||
	url='https://github.com/NandaScott/Scrython',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue