import scrython import time import csv import pickle import random """ As Fan averae words total words averae words per card total and average words per card per color identity """ def cubecardgrabber(filename): output = [] with open(filename) as f: reader = csv.reader(f, skipinitialspace=True) for row in reader: if len(row) >= 15: if row[10] == 'false': output += [row] # print(row) # else: # This is the maybe board # print("BAD", end="") # print(row) return output def oracle_text_grabber(data): i = 0 output = [] while i < len(data): # print(data[i][0]) card = scrython.cards.Named(fuzzy=data[i][0]) time.sleep(0.1) try: card = card.card_faces() output += [card[0]['oracle_text']] output += [card[1]['oracle_text']] except: output += [card.oracle_text()] i += 1 print(str(i) + " cards read") print("Data has finished being fetched") return output def total_words(data): # Currently it counts {T} and mana symbols as words i = 0 wordcount = 0 while i < len(data): wordcount += len(data[i].split()) i += 1 return wordcount def average_words_in_a_pack(data, packs): i = 0 average_words = 0 while i < packs: x = 1 pack = [] random_list = [] while x <= 15: idx = random.randint(0, len(data) - 1) if idx not in random_list: random_list.append(idx) x += 1 for rnd in random_list: pack += [data[rnd]] average_words += total_words(pack) i += 1 return average_words / packs def save_data(data, name): with open(name + "save", "wb") as fp: pickle.dump(data, fp) def load_data(name): with open(name, "rb") as fp: return pickle.load(fp) def create_data(filename): data = cubecardgrabber(filename) data = oracle_text_grabber(data) save_data(data, filename) def main(): filename = input("Enter file name ") try: data = load_data(filename + "save") print("Loaded data from " + filename) except: print("Creating data for " + filename) create_data(filename) data = load_data(filename + "save") print("Loaded data from " + filename) tests = int(input("How many test packs would you like to use to calculate average words per pack? ")) print(len(data)) print("This cube has " + str(total_words(data)) + " total words") print("There are approximately " + str(average_words_in_a_pack(data, tests)) + " words in an average pack(give or " "take some amount based on number " "of tests)") main()