mirror of
https://github.com/correl/mtgsqlive.git
synced 2024-12-01 11:09:57 +00:00
wip 2
This commit is contained in:
parent
9099f59346
commit
8a0e745641
2 changed files with 63 additions and 14 deletions
|
@ -10,6 +10,11 @@ def getVal(data, field):
|
|||
return str(val)
|
||||
return val
|
||||
|
||||
def fixJson(data):
|
||||
if data:
|
||||
return data.replace("'", '"')
|
||||
return data
|
||||
|
||||
def create_db(database_connection):
|
||||
c = database_connection.cursor()
|
||||
c.execute('create table cards (id, layout, name, names, manaCost, cmc, colors, colorIdentity, type, supertypes, types, subtypes, rarity, text, flavor, artist, number, power, toughness, loyalty, multiverseid, variations, imageName, watermark, border, timeshifted, hand, life, reserved, releaseDate, starter, rulings, foreignNames, printings, originalText, originalType, legalities, source, setName, setCode, setReleaseDate)')
|
||||
|
@ -42,12 +47,12 @@ def json_to_db(json_file_opened, database_connection):
|
|||
names = getVal(thisCard, "names")
|
||||
manaCost = getVal(thisCard, "manaCost")
|
||||
cmc = getVal(thisCard, "cmc")
|
||||
colors = getVal(thisCard, "colors")
|
||||
colorIdentity = getVal(thisCard, "colorIdentity")
|
||||
colors = fixJson( getVal(thisCard, "colors") )
|
||||
colorIdentity = fixJson( getVal(thisCard, "colorIdentity") )
|
||||
thisCard_type = getVal(thisCard, "type")
|
||||
supertypes = getVal(thisCard, "supertypes")
|
||||
types = getVal(thisCard, "types")
|
||||
subtypes = getVal(thisCard, "subtypes")
|
||||
supertypes = fixJson( getVal(thisCard, "supertypes") )
|
||||
types = fixJson( getVal(thisCard, "types") )
|
||||
subtypes = fixJson( getVal(thisCard, "subtypes") )
|
||||
rarity = getVal(thisCard, "rarity")
|
||||
text = getVal(thisCard, "text")
|
||||
flavor = getVal(thisCard, "flavor")
|
||||
|
@ -67,12 +72,12 @@ def json_to_db(json_file_opened, database_connection):
|
|||
reserved = getVal(thisCard, "reserved")
|
||||
releaseDate = getVal(thisCard, "releaseDate")
|
||||
starter = getVal(thisCard, "starter")
|
||||
rulings = getVal(thisCard, "rulings")
|
||||
foreignNames = getVal(thisCard, "foreignNames")
|
||||
printings = getVal(thisCard, "printings")
|
||||
rulings = fixJson( getVal(thisCard, "rulings") )
|
||||
foreignNames = fixJson( getVal(thisCard, "foreignNames") )
|
||||
printings = fixJson( getVal(thisCard, "printings") )
|
||||
originalText = getVal(thisCard, "originalText")
|
||||
originalType = getVal(thisCard, "originalType")
|
||||
legalities = getVal(thisCard, "legalities")
|
||||
legalities = fixJson( getVal(thisCard, "legalities") )
|
||||
source = getVal(thisCard, "source")
|
||||
|
||||
thisCard_data = [thisCard_id, layout, name, names, manaCost, cmc, colors, colorIdentity, thisCard_type, supertypes, types, subtypes, rarity, text, flavor, artist, number, power, toughness, loyalty, multiverseid, variations, imageName, watermark, border, timeshifted, hand, life, reserved, releaseDate, starter, rulings, foreignNames, printings, originalText, originalType, legalities, source, setName, thisSet, setReleaseDate]
|
||||
|
|
|
@ -2,6 +2,12 @@
|
|||
import json
|
||||
import sqlite3
|
||||
import os
|
||||
import fileinput
|
||||
|
||||
def get_next(some_iterable, window=1):
|
||||
items, nexts = tee(some_iterable, 2)
|
||||
nexts = islice(nexts, window, None)
|
||||
return izip_longest(items, nexts)
|
||||
|
||||
def dict_from_row(row):
|
||||
return dict(zip(row.keys(), row))
|
||||
|
@ -16,19 +22,18 @@ def db_to_json(database_connection):
|
|||
database_connection.row_factory = sqlite3.Row # Enable keys for the rows
|
||||
cursor = database_connection.cursor()
|
||||
|
||||
cursor.execute("SELECT DISTINCT setCode from cards LIMIT 3,5")
|
||||
cursor.execute("SELECT DISTINCT setCode from cards LIMIT 10")
|
||||
|
||||
mainDict = []
|
||||
returnData = []
|
||||
rows = cursor.fetchall()
|
||||
for setCode in rows:
|
||||
setCode = remove_empty_keys(dict_from_row(setCode))
|
||||
cursor.execute("SELECT * FROM cards WHERE setCode = '%s' LIMIT 5" % setCode["setCode"])
|
||||
cursor.execute("SELECT * FROM cards WHERE setCode = '%s'" % setCode["setCode"])
|
||||
card_rows = cursor.fetchall()
|
||||
|
||||
for row in card_rows:
|
||||
row = remove_empty_keys(dict_from_row(row))
|
||||
|
||||
returnData.append(row)
|
||||
|
||||
mainDict.append([setCode, returnData])
|
||||
|
@ -42,13 +47,52 @@ def main():
|
|||
d = sqlite3.connect(d)
|
||||
|
||||
#xml = os.path.join(os.path.expanduser(input("Location of save file: ")), "Output.json")
|
||||
xml = os.path.join(os.path.expanduser("~/Desktop"), "Output.json")
|
||||
xml = os.path.join(os.path.expanduser("~/Desktop"), "Output.tmp.json")
|
||||
xml2 = os.path.join(os.path.expanduser("~/Desktop"), "Output.json")
|
||||
|
||||
json_code = json.dumps(db_to_json(d), indent=4, sort_keys=True)
|
||||
json_code = json.dumps(db_to_json(d), sort_keys=True, indent=2)
|
||||
|
||||
writeFile = open(xml, 'w')
|
||||
writeFile.write(json_code)
|
||||
writeFile.close()
|
||||
|
||||
with open(xml) as f:
|
||||
with open(xml2, 'w') as f2:
|
||||
for line in f.readlines():
|
||||
if replace_and_write_these_keys(f2, line, "colorIdentity"): continue
|
||||
if replace_and_write_these_keys(f2, line, "colors"): continue
|
||||
if replace_and_write_these_keys(f2, line, "printings"): continue
|
||||
if replace_and_write_these_keys(f2, line, "subtypes"): continue
|
||||
if replace_and_write_these_keys(f2, line, "legalities"): continue
|
||||
if replace_and_write_these_keys(f2, line, "types"): continue
|
||||
#if replace_and_write_these_keys(f2, line, "rulings"): continue
|
||||
#if replace_and_write_these_keys(f2, line, "foreignNames"): continue
|
||||
|
||||
if '"' + "variations" + '":' in line:
|
||||
f2.write(",")
|
||||
|
||||
f2.write(line)
|
||||
f2.close()
|
||||
os.remove(xml)
|
||||
|
||||
def replace_and_write_these_keys(file_opened, line, key_val):
|
||||
retVal = str_to_json(line, key_val)
|
||||
if retVal:
|
||||
file_opened.write(retVal)
|
||||
return True
|
||||
|
||||
def str_to_json(line, key_val):
|
||||
if '"' + key_val + '":' in line:
|
||||
line_index = line.index('"[')
|
||||
line = line[:line_index] + line[line_index:].replace('\\"', '"')[1:]
|
||||
|
||||
while line.strip()[-1:] != "]":
|
||||
line = line[:-1]
|
||||
|
||||
if key_val != "types":
|
||||
line += ","
|
||||
line += "\n"
|
||||
return line
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in a new issue