mtgencode/scripts/summarize.py

49 lines
1.6 KiB
Python
Executable File

#!/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:
print 'This looks like a json file: ' + fname
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:
print 'Opening encoded card file: ' + fname
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)