diff --git a/spoilers.py b/spoilers.py index 967c6172..8d89e6b3 100644 --- a/spoilers.py +++ b/spoilers.py @@ -92,10 +92,45 @@ def correct_cards(mtgjson, manual_cards=[], card_corrections=[], delete_cards=[] print "Manual Cards Added: " + str(manual_added).strip('[]') mtgjson = {"cards": mtgjson2} - + transforms = {} for card in mtgjson['cards']: - if '{' in card['text']: - card['text'] = re.sub(r'{(.*?)}', replace_costs, card['text']) + if 'text' in card: + if '{' in card['text']: + card['text'] = re.sub(r'{(.*?)}', replace_costs, card['text']) + for card2 in mtgjson['cards']: + if 'number' in card and 'number' in card2 and card2['number'] == card['number'] and \ + not card['name'] == card2['name'] and card['number'] != '?' and card2['number'] != '?': + transforms[card['name']] = card2['name'] + if 'number' in card and not '?' in card['number']: + if 'transforms from' in card['text'].lower(): + if 'number' in card: + if not 'b' in card['number']: + if 'a' in card['number']: + card['number'] = card['number'].replace('a','b') + else: + card['number'] = str(card['number']) + 'b' + card['layout'] = 'double-faced' + if 'transform ' in card['text'].lower() or 'transformed' in card['text'].lower(): + if 'number' in card: + if not 'a' in card['number']: + if 'b' in card['number']: + card['number'] = card['number'].replace('b','a') + else: + card['number'] = str(card['number']) + 'a' + card['layout'] = 'double-faced' + if 'number' in card and 'a' in card['number'] or 'b' in card['number']: + for card1 in transforms: + if card['name'] == card1: + if 'a' in card['number']: + card['names'] = [card1, transforms[card1]] + else: + card['names'] = [transforms[card1], card1] + if card['name'] == transforms[card1]: + if 'a' in card['number']: + card['names'] = [card['name'], card1] + else: + card['names'] = [card1, card['name']] + return mtgjson @@ -355,9 +390,9 @@ def get_image_urls(mtgjson, isfullspoil, setinfo=False): if mtgsImages[card['name']]['url'] != '': card['url'] = mtgsImages[card['name']]['url'] - for card in mtgjson['cards']: - if len(str(card['url'])) < 10: - print(card['name'] + ' has no image.') + #for card in mtgjson['cards']: + # if len(str(card['url'])) < 10: + # print(card['name'] + ' has no image.') return mtgjson @@ -421,14 +456,24 @@ def write_xml(mtgjson, code, name, releaseDate): for jsoncard in mtgjson["cards"]: if jsoncard['name'] == card['names'][1]: cardtype += " // " + jsoncard["type"] + newmanacost = "" + if 'manaCost' in jsoncard: + newmanacost = jsoncard['manaCost'] manacost += " // " + \ - (jsoncard["manaCost"]).replace( + newmanacost.replace( '{', '').replace('}', '') cardcmc += " // " + str(jsoncard["cmc"]) text += "\n---\n" + jsoncard["text"] name += " // " + jsoncard['name'] + elif card['layout'] == 'double-faced': + if not 'names' in card: + print card['name'] + ' is double-faced but no "names" key' + else: + for dfcname in card['names']: + if dfcname != card['name']: + related = dfcname else: - print card["name"] + " has names, but layout != split" + print card["name"] + " has names, but layout != split, aftermath, or double-faced" else: print card["name"] + " has multiple names and no 'layout' key"