Reports frequency of keywords for a list of cards

This is a starting point for reporting on keywords in a list of cards.
This commit is contained in:
Dan Niemitalo 2020-11-29 12:53:09 -06:00
parent 9dd4186e1c
commit f75ccf13cd

44
analyze_keywords.py Normal file
View file

@ -0,0 +1,44 @@
import json
def get_keywords(card):
if 'keywords' in card.keys():
return card['keywords']
elif 'card_faces' in card:
keywords = []
for face in card['card_faces']:
if 'keywords' in face:
keywords += face['keywords']
return keywords
else:
return []
def keyword_count(filename):
# json file must contain a list of Scryfall card objects
f = open(filename, encoding='utf8')
d = json.load(f)
keywords = []
for card in d:
keywords += get_keywords(card)
f.close()
k_unique = set(keywords)
k_dict = {}
for keyword in k_unique:
k_dict[keyword] = keywords.count(keyword)
return k_dict
def keyword_report(k_dict):
k_lists = []
for keyword in k_dict:
k_lists += [[k_dict[keyword], keyword]]
k_lists = sorted(k_lists, reverse=True)
for n, keyword in k_lists:
print(keyword, n)
print(f'\nTotal unique keywords: {len(k_dict)}')
filename = f'scryfall/sets/ZNR.json'
k_dict = keyword_count(filename)
keyword_report(k_dict)