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:
parent
9dd4186e1c
commit
f75ccf13cd
1 changed files with 44 additions and 0 deletions
44
analyze_keywords.py
Normal file
44
analyze_keywords.py
Normal 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)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue