2015-07-16 06:40:15 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
|
|
|
libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../lib')
|
|
|
|
sys.path.append(libdir)
|
|
|
|
import utils
|
|
|
|
import jdecode
|
|
|
|
from datalib import Datamine
|
|
|
|
|
|
|
|
def main(fname, verbose = True, outliers = False, dump_all = False):
|
|
|
|
if fname[-5:] == '.json':
|
|
|
|
if verbose:
|
2016-08-14 01:16:43 +00:00
|
|
|
print('This looks like a json file: ' + fname)
|
2015-07-16 06:40:15 +00:00
|
|
|
json_srcs = jdecode.mtg_open_json(fname, verbose)
|
|
|
|
card_srcs = []
|
|
|
|
for json_cardname in sorted(json_srcs):
|
|
|
|
if len(json_srcs[json_cardname]) > 0:
|
|
|
|
card_srcs += [json_srcs[json_cardname][0]]
|
|
|
|
else:
|
|
|
|
if verbose:
|
2016-08-14 01:16:43 +00:00
|
|
|
print('Opening encoded card file: ' + fname)
|
2015-07-16 06:40:15 +00:00
|
|
|
with open(fname, 'rt') as f:
|
|
|
|
text = f.read()
|
|
|
|
card_srcs = text.split(utils.cardsep)
|
|
|
|
|
|
|
|
mine = Datamine(card_srcs)
|
|
|
|
mine.summarize()
|
|
|
|
if outliers or dump_all:
|
|
|
|
mine.outliers(dump_invalid = dump_all)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
|
|
|
|
parser.add_argument('infile',
|
|
|
|
help='encoded card file or json corpus to process')
|
|
|
|
parser.add_argument('-x', '--outliers', action='store_true',
|
|
|
|
help='show additional diagnostics and edge cases')
|
|
|
|
parser.add_argument('-a', '--all', action='store_true',
|
|
|
|
help='show all information and dump invalid cards')
|
|
|
|
parser.add_argument('-v', '--verbose', action='store_true',
|
|
|
|
help='verbose output')
|
|
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
main(args.infile, verbose = args.verbose, outliers = args.outliers, dump_all = args.all)
|
|
|
|
exit(0)
|