[WIP] Double-faced card handling (#144)

* Double-faced card handling

Remove duplicate debug print (no image shows up in error file)

* Handle DFC different than Split

* Don't DFC if no number

Cards with ? for a card number shouldn't be attempted to match for DFC
This commit is contained in:
Dave 2017-09-07 21:08:06 -05:00 committed by GitHub
parent b1904667e4
commit dea584cb35

View File

@ -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"