mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- Migrated pictures and rarity from other files into cards.txt
- Added migratedCardsScript.py as a replacement for cardsScript.py when the game parses only the single file. Original script is still needed until then. - The new script will alphabetize cards.txt instead of writing in random order. - Added Mythic and Land rarity for future use.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -80,6 +80,7 @@ res/lib/napkinlaf-1.2.jar -text svneol=unset#unset
|
|||||||
res/lib/nimrodlf.jar -text svneol=unset#unset
|
res/lib/nimrodlf.jar -text svneol=unset#unset
|
||||||
res/lib/substance.jar -text svneol=unset#unset
|
res/lib/substance.jar -text svneol=unset#unset
|
||||||
res/main.properties svneol=native#text/plain
|
res/main.properties svneol=native#text/plain
|
||||||
|
res/migratedCardsScript.py -text svneol=native#text/x-python
|
||||||
res/pics/BookIcon.png -text svneol=unset#image/png
|
res/pics/BookIcon.png -text svneol=unset#image/png
|
||||||
res/pics/BoxIcon.png -text svneol=unset#image/png
|
res/pics/BoxIcon.png -text svneol=unset#image/png
|
||||||
res/pics/GoldIcon.png -text svneol=unset#image/png
|
res/pics/GoldIcon.png -text svneol=unset#image/png
|
||||||
|
|||||||
59416
res/cards.txt
59416
res/cards.txt
File diff suppressed because it is too large
Load Diff
118
res/migratedCardsScript.py
Normal file
118
res/migratedCardsScript.py
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
from httplib import HTTP
|
||||||
|
from urlparse import urlparse
|
||||||
|
from urllib import urlopen
|
||||||
|
|
||||||
|
def clean(name):
|
||||||
|
return name.lower().replace('-',' ').replace(',','').replace('_', ' ').replace('\'', '').replace('\"', '').replace('.', '').strip()
|
||||||
|
|
||||||
|
def checkURL(url):
|
||||||
|
p = urlparse(url)
|
||||||
|
h = HTTP(p[1])
|
||||||
|
h.putrequest('HEAD', p[2])
|
||||||
|
h.endheaders()
|
||||||
|
if h.getreply()[0] == 200: return 1
|
||||||
|
else: return 0
|
||||||
|
|
||||||
|
def getURL(url):
|
||||||
|
return urlopen(url).read()
|
||||||
|
|
||||||
|
def getSVarString(line, str):
|
||||||
|
start = line.find(str) + len(str) + 1
|
||||||
|
return line[start:].strip()
|
||||||
|
|
||||||
|
def getRarity(name):
|
||||||
|
html = getURL('http://magiccards.info/query?q=!'+name)
|
||||||
|
# magiccards.info uses (<rarity>) on the page for rarity.
|
||||||
|
# since older editions had funky things like c2, and u1, only use open parenthesis for this search
|
||||||
|
landCount = html.count("(Land")
|
||||||
|
commonCount = html.count("(Common")
|
||||||
|
uncommonCount = html.count("(Uncommon")
|
||||||
|
rareCount = html.count("(Rare")
|
||||||
|
mythicCount = html.count("(Mythic Rare)")
|
||||||
|
if (landCount > 0):
|
||||||
|
return 'Land'
|
||||||
|
elif (commonCount + uncommonCount + rareCount + mythicCount == 0):
|
||||||
|
err.write("Bad magiccards.info Query: " + name + '\n')
|
||||||
|
return ''
|
||||||
|
elif (commonCount >= uncommonCount and commonCount >= rareCount and commonCount >= mythicCount):
|
||||||
|
return 'Common'
|
||||||
|
elif (commonCount < uncommonCount and uncommonCount >= rareCount and uncommonCount >= mythicCount):
|
||||||
|
return 'Uncommon'
|
||||||
|
elif (rareCount >= mythicCount):
|
||||||
|
return 'Rare'
|
||||||
|
else:
|
||||||
|
return 'Mythic'
|
||||||
|
|
||||||
|
def getPicture(name):
|
||||||
|
urlName = name.replace(' ', '_')
|
||||||
|
picUrl ='http://www.wizards.com/global/images/magic/general/' + urlName + '.jpg'
|
||||||
|
if not checkURL(picUrl):
|
||||||
|
err.write("Bad Picture URL " + name + '\n')
|
||||||
|
return ''
|
||||||
|
return picUrl
|
||||||
|
|
||||||
|
class Card:
|
||||||
|
def __init__(self, name):
|
||||||
|
self.name = name
|
||||||
|
self.cleanName = clean(name)
|
||||||
|
self.hasPicture = False
|
||||||
|
self.picURL = ''
|
||||||
|
self.hasRarity = False
|
||||||
|
self.rarity = ''
|
||||||
|
self.lines = ''
|
||||||
|
|
||||||
|
#get master card list and drop into a dictionary
|
||||||
|
file = open('cards.txt')
|
||||||
|
err = open('cardsScript.log','w')
|
||||||
|
line = file.readline().strip()
|
||||||
|
cardDict = {}
|
||||||
|
rarityStr = 'SVar:Rarity'
|
||||||
|
pictureStr = 'SVar:Picture'
|
||||||
|
|
||||||
|
# parse cards.txt for Card Lines and Rarity/Picture SVars. Filling in any gaps
|
||||||
|
while line != 'End':
|
||||||
|
temp = Card(line)
|
||||||
|
cardDict[temp.cleanName] = temp
|
||||||
|
skip = file.readline()
|
||||||
|
while skip.strip() != '':
|
||||||
|
if skip.find(rarityStr) != -1:
|
||||||
|
temp.hasRarity = True
|
||||||
|
temp.rarity = getSVarString(skip, rarityStr)
|
||||||
|
elif skip.find(pictureStr) != -1:
|
||||||
|
temp.hasPicture = True
|
||||||
|
temp.picURL = getSVarString(skip, pictureStr)
|
||||||
|
else:
|
||||||
|
temp.lines += skip
|
||||||
|
skip = file.readline()
|
||||||
|
|
||||||
|
if not temp.hasRarity:
|
||||||
|
rarity = getRarity(temp.name)
|
||||||
|
if not rarity == '':
|
||||||
|
temp.hasRarity = True
|
||||||
|
temp.rarity = rarity
|
||||||
|
|
||||||
|
if not temp.hasPicture:
|
||||||
|
pic = getPicture(temp.cleanName)
|
||||||
|
if not pic == '':
|
||||||
|
temp.hasPicture = True
|
||||||
|
temp.picURL = pic
|
||||||
|
|
||||||
|
line = file.readline().strip()
|
||||||
|
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
file = open('cards.txt', 'w')
|
||||||
|
|
||||||
|
for c in sorted(cardDict):
|
||||||
|
card = cardDict[c]
|
||||||
|
file.write(card.name+'\n')
|
||||||
|
file.write(card.lines)
|
||||||
|
if card.hasRarity:
|
||||||
|
file.write('SVar:Rarity:'+card.rarity + '\n')
|
||||||
|
if card.hasPicture:
|
||||||
|
file.write('SVar:Picture:'+card.picURL + '\n')
|
||||||
|
file.write('\n')
|
||||||
|
|
||||||
|
file.write('End')
|
||||||
|
file.close()
|
||||||
|
err.close()
|
||||||
Reference in New Issue
Block a user