From 248e09219e4742257fcb774b1756fa2f61095f7e Mon Sep 17 00:00:00 2001 From: tritoch Date: Thu, 22 Jun 2017 12:54:59 -0500 Subject: [PATCH] More aftermath improvements. (#47) "layout" now is "aftermath". "colors" and "colorIdentity" will check both sides of card. --- spoilers.py | 55 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/spoilers.py b/spoilers.py index 613f80d0..54adbc96 100644 --- a/spoilers.py +++ b/spoilers.py @@ -77,6 +77,8 @@ def parse_mtgs(mtgs, manual_cards=[], card_corrections=[], delete_cards=[], spli card2['rarity'] = card['rarity'] if not card1['name'] in split_cards: split_cards[card1['name']] = card2['name'] + card1['layout'] = 'aftermath' + card2['layout'] = 'aftermath' cards2.append(card1) cards2.append(card2) else: @@ -173,10 +175,12 @@ def parse_mtgs(mtgs, manual_cards=[], card_corrections=[], delete_cards=[], spli cardnames.append(card['name']) cardnames.append(split_cards[card['name']]) cardnumber = cardnumber.replace('b','').replace('a','') + 'a' - card['layout'] = 'split' + if not 'layout' in card: + card['layout'] = 'split' for namematch in split_cards: if card['name'] == split_cards[namematch]: - card['layout'] = 'split' + if not 'layout' in card or ('layout' in card and card['layout'] == ''): + card['layout'] = 'split' cardnames.append(namematch) if not card['name'] in cardnames: cardnames.append(card['name']) @@ -406,18 +410,38 @@ def error_check(mtgjson, card_corrections={}): errors.append({"name": card['name'], "key": "url", "value": ""}) elif len(card['url']) < 10: errors.append({"name": card['name'], "key": "url", "value": ""}) - if 'layout' in card: - if card['layout'] == 'split' or card['layout'] == 'meld' or card['layout'] == 'aftermath': - if not 'names' in card: - errors.append({"name": card['name'], "key": "names", "value": ""}) - if 'number' in card: - if not 'a' in card['number'] and not 'b' in card['number'] and not 'c' in card['number']: - errors.append({"name": card['name'], "key": "number", "value": card['number']}) if not 'number' in card: errors.append({"name": card['name'], "key": "number", "value": ""}) if not 'types' in card: errors.append({"name": card['name'], "key": "types", "value": ""}) + for card in mtgjson['cards']: #we're going to loop through again and make sure split cards get paired + if 'layout' in card: + if card['layout'] == 'split' or card['layout'] == 'meld' or card['layout'] == 'aftermath': + if not 'names' in card: + errors.append({"name": card['name'], "key": "names", "value": ""}) + else: + for related_card_name in card['names']: + if related_card_name != card['name']: + related_card = False + for card2 in mtgjson['cards']: + if card2['name'] == related_card_name: + related_card = card2 + if not related_card: + errors.append({"name": card['name'], "key": "names", "value": card['names']}) + else: + if 'colors' in related_card: + for color in related_card['colors']: + if not color in card['colors']: + card['colors'].append(color) + if 'colorIdentity' in related_card: + for colorIdentity in related_card['colorIdentity']: + if not colorIdentity in card['colorIdentity']: + card['colorIdentity'].append(colorIdentity) + if 'number' in card: + if not 'a' in card['number'] and not 'b' in card['number'] and not 'c' in card['number']: + errors.append({"name": card['name'], "key": "number", "value": card['number']}) + for card in mtgjson['cards']: for cardCorrection in card_corrections: if card['name'] == cardCorrection: @@ -639,7 +663,8 @@ def scrape_fullspoil(url, showRarityColors=False, showFrameColors=False, manual_ if card['name'] in split_cards: card["names"] = [card['name'], split_cards[card['name']]] - card["layout"] = "split" + if not 'layout' in card: + card["layout"] = "split" notSplit = True for backsplit in split_cards: if card['name'] == split_cards[backsplit]: @@ -866,7 +891,7 @@ def write_xml(mtgjson, setname, setlongname, setreleasedate, split_cards=[]): cardtype = card["type"] if card.has_key("names"): if "layout" in card: - if card['layout'] == 'split': + if card['layout'] == 'split' or card['layout'] == 'aftermath': if 'names' in card: if card['name'] == card['names'][0]: for jsoncard in mtgjson["cards"]: @@ -895,7 +920,7 @@ def write_xml(mtgjson, setname, setlongname, setreleasedate, split_cards=[]): if 'number' in card: if 'b' in card['number']: if 'layout' in card: - if card['layout'] == 'split': + if card['layout'] == 'split' or card['layout'] == 'aftermath': #print "We're skipping " + card['name'] + " because it's the right side of a split card" continue @@ -973,7 +998,7 @@ def write_combined_xml(mtgjson, setinfos): for setcode in mtgjson: setobj = mtgjson[setcode] for card in setobj["cards"]: - if 'layout' in card and card['layout'] == 'split': + if 'layout' in card and (card['layout'] == 'split' or card['layout'] == 'aftermath'): if 'b' in card["number"]: continue if count == 0: @@ -999,7 +1024,7 @@ def write_combined_xml(mtgjson, setinfos): cardtype = card["type"] if card.has_key("names"): if "layout" in card: - if card["layout"] != 'split': + if card["layout"] != 'split' and card["layout"] != 'aftermath': if len(card["names"]) > 1: if card["names"][0] == card["name"]: related = card["names"][1] @@ -1033,7 +1058,7 @@ def write_combined_xml(mtgjson, setinfos): if 'number' in card: if 'b' in card['number']: if 'layout' in card: - if card['layout'] == 'split': + if card['layout'] == 'split' or card['layout'] == 'aftermath': #print "We're skipping " + card['name'] + " because it's the right side of a split card" continue