Example #1
0
def get_stored_card_data(database, user, logger, prod_mode):
    with psycopg2.connect(database=database, user=user) as conn:
        conn.autocommit = True
        with conn.cursor() as cursor:
            for set_name, set_info in si.get_set_data(logger).items():
                cards = ssu.json_from_url(set_info['search_uri'])
                has_cards = True
                while has_cards:
                    for card_data in cards['data']:
                        parse_and_store(card_data, cursor, logger, prod_mode)

                    # might have multiple pages
                    if cards['has_more']:
                        cards = ssu.json_from_url(set_info['search_uri'])
                    else:
                        has_cards = False
Example #2
0
def get_card_printings(set_search_url: str) -> Set[Tuple[str, str]]:
    """Given the url listing the data for every set an associated card has been printed in, returns a list of each set
    the card was printed in - with its rarity at that printing.
    :param set_search_url: url to retrieve card set data from
    :return: list of sets the card associated with url has been printed in"""
    json_response = ssu.json_from_url(set_search_url)
    set_data = json_response['data']
    return set([(card['set'], card['rarity']) for card in set_data])
Example #3
0
def get_card_data(card_name, logger):
    """Retrieves the data around a given card from the Scryfall API and returns it as a dictionary.
    :param card_name: (String) name of card to retrieve data for
    :return: dictionary of data associated with given card"""
    logger.info(msg=f'Retrieving data for card {card_name}')
    formatted_card_name = map(lambda x: x.lower(), card_name.split(' '))
    card_request_url = SCRYFALL_ENDPOINT + '?exact=' + '+'.join(
        formatted_card_name)
    return ssu.json_from_url(card_request_url)
Example #4
0
def get_card_printings(set_search_url):
    """Given the url listing the data for every set an associated card has been printed in, returns a list of each set
    the card was printed in.
    :param set_search_url: url to retrieve card set data from
    :return: list of sets card associated with url has been printed in
    """
    json_response = ssu.json_from_url(set_search_url)
    set_data = json_response['data']
    return set([card['set'] for card in set_data])
Example #5
0
def get_set_data(logger):
    logger.info('Retrieving all set info from Scryfall')
    json_data = ssu.json_from_url(SCRYFALL_SET_URL)
    data = json_data['data']

    printing_info = {}
    for printing in data:
        set_name = printing['code']
        printing_info[set_name] = printing
    return printing_info
Example #6
0
def get_set_data(logger):
    logger.info('Retrieving all set info from Scryfall')
    json_data = ssu.json_from_url(SCRYFALL_SET_URL)
    return {printing['code']: printing for printing in json_data['data']}