Advertisement
Guest User

MTG Cube Word Counter

a guest
Feb 5th, 2023
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.07 KB | Gaming | 0 0
  1. import scrython
  2. import time
  3. import csv
  4. import pickle
  5. import random
  6.  
  7. """
  8. As Fan averae words
  9. total words
  10. averae words per card
  11.  
  12. total and average words per card per color identity
  13.  
  14. """
  15.  
  16.  
  17. def cubecardgrabber(filename):
  18.     output = []
  19.     with open(filename) as f:
  20.         reader = csv.reader(f, skipinitialspace=True)
  21.         for row in reader:
  22.             if len(row) >= 15:
  23.                 if row[10] == 'false':
  24.                     output += [row]
  25.                     # print(row)
  26.                 # else:
  27.                 # This is the maybe board
  28.                 # print("BAD", end="")
  29.                 # print(row)
  30.     return output
  31.  
  32.  
  33. def oracle_text_grabber(data):
  34.     i = 0
  35.     output = []
  36.     while i < len(data):
  37.         # print(data[i][0])
  38.         card = scrython.cards.Named(fuzzy=data[i][0])
  39.         time.sleep(0.1)
  40.         try:
  41.             card = card.card_faces()
  42.             output += [card[0]['oracle_text']]
  43.             output += [card[1]['oracle_text']]
  44.         except:
  45.             output += [card.oracle_text()]
  46.         i += 1
  47.         print(str(i) + " cards read")
  48.     print("Data has finished being fetched")
  49.     return output
  50.  
  51.  
  52. def total_words(data):
  53.     # Currently it counts {T} and mana symbols as words
  54.     i = 0
  55.     wordcount = 0
  56.     while i < len(data):
  57.         wordcount += len(data[i].split())
  58.         i += 1
  59.     return wordcount
  60.  
  61.  
  62. def average_words_in_a_pack(data, packs):
  63.     i = 0
  64.     average_words = 0
  65.     while i < packs:
  66.         x = 1
  67.         pack = []
  68.         random_list = []
  69.         while x <= 15:
  70.             idx = random.randint(0, len(data) - 1)
  71.             if idx not in random_list:
  72.                 random_list.append(idx)
  73.             x += 1
  74.         for rnd in random_list:
  75.             pack += [data[rnd]]
  76.         average_words += total_words(pack)
  77.         i += 1
  78.     return average_words / packs
  79.  
  80.  
  81. def save_data(data, name):
  82.     with open(name + "save", "wb") as fp:
  83.         pickle.dump(data, fp)
  84.  
  85.  
  86. def load_data(name):
  87.     with open(name, "rb") as fp:
  88.         return pickle.load(fp)
  89.  
  90.  
  91. def create_data(filename):
  92.     data = cubecardgrabber(filename)
  93.     data = oracle_text_grabber(data)
  94.     save_data(data, filename)
  95.  
  96.  
  97. def main():
  98.     filename = input("Enter file name ")
  99.     try:
  100.         data = load_data(filename + "save")
  101.         print("Loaded data from " + filename)
  102.     except:
  103.         print("Creating data for " + filename)
  104.         create_data(filename)
  105.         data = load_data(filename + "save")
  106.         print("Loaded data from " + filename)
  107.     tests = int(input("How many test packs would you like to use to calculate average words per pack? "))
  108.     print(len(data))
  109.     print("This cube has " + str(total_words(data)) + " total words")
  110.     print("There are approximately " + str(average_words_in_a_pack(data, tests)) + " words in an average pack(give or "
  111.                                                                                    "take some amount based on number "
  112.                                                                                    "of tests)")
  113.  
  114.  
  115. main()
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement