diff --git a/analyze_all_set_keywords.py b/analyze_all_set_keywords.py new file mode 100644 index 0000000..472d008 --- /dev/null +++ b/analyze_all_set_keywords.py @@ -0,0 +1,19 @@ +"""Find keyword count in each set. +""" + +import keyword_stats + +if __name__ == '__main__': + f = open('set_codes.txt') + codes = [line.strip() for line in f.readlines()] + output_file = open('set_keyword_frequency.csv', 'w+') + output_file.write('Set,Keywords\n') + for code in codes: + if code == 'CON': + code = 'CON_' + filename = f'scryfall/sets/{code}.json' + k_dict = keyword_stats.keyword_count(filename) + print(f'{code}: {len(k_dict)}') + output_file.write(f'{code},{len(k_dict)}\n') + output_file.close() + f.close() diff --git a/analyze_cube_keywords.py b/analyze_cube_keywords.py new file mode 100644 index 0000000..9a8b0e6 --- /dev/null +++ b/analyze_cube_keywords.py @@ -0,0 +1,11 @@ +"""Print a keyword report for a cards.json file +""" + +import cube_json +import keyword_stats + +if __name__ == '__main__': + cube_list = cube_json.load_cube_from_csv('cube_csvs/TheElegantCube_2020-11-17_5.0.4.csv', {'core'}) + cube_json_filename = cube_json.create_cube_json(cube_list, 'cubes/TheElegantCube_2020-11-17_5.0.4.json') + keyword_dict = keyword_stats.keyword_count(cube_json_filename) + keyword_stats.keyword_report(keyword_dict) diff --git a/analyze_keywords.py b/analyze_keywords.py deleted file mode 100644 index e5da331..0000000 --- a/analyze_keywords.py +++ /dev/null @@ -1,81 +0,0 @@ -import json -import os - -import cube_json -import word_count - -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)}') - - -if __name__ == '__main__': - ### Example use: print a keyword report for a cards.json file ### - # cube_list = cube_json.load_cube_from_csv('cube_csvs/TheElegantCube_2020-11-17_5.0.4.csv', {'core'}) - # cube_json_filename = cube_json.create_cube_json(cube_list, 'cubes/TheElegantCube_2020-11-17_5.0.4.json') - # keyword_dict = keyword_count(cube_json_filename) - # keyword_report(keyword_dict) - - - # ### Example use: count keywords in a list of cube.json files ### - # output = open('cube_keyword_frequency.csv', 'w+') - # all_cube_files = os.listdir('cubes') - # output_file = open('cube_keyword_frequency.csv', 'w+') - # output_file.write('Cube,Keywords\n') - # for filename in all_cube_files: - # if filename.endswith('json'): - # k_dict = keyword_count('cubes/' + filename) - # output_file.write(f"{filename.strip('json')},{len(k_dict)}\n") - # print(filename, len(k_dict)) - # output_file.close() - - - # ### Example use: find keyword count in each set ### - # f = open('set_codes.txt') - # codes = [line.strip() for line in f.readlines()] - # output_file = open('set_keyword_frequency.csv', 'w+') - # output_file.write('Set,Keywords\n') - # for code in codes: - # if code == 'CON': - # code = 'CON_' - # filename = f'scryfall/sets/{code}.json' - # k_dict = keyword_count(filename) - # print(f'{code}: {len(k_dict)}') - # output_file.write(f'{code},{len(k_dict)}\n') - # output_file.close() - # f.close() - - pass diff --git a/analyze_multiple_cubes_keywords.py b/analyze_multiple_cubes_keywords.py new file mode 100644 index 0000000..f9d7dd6 --- /dev/null +++ b/analyze_multiple_cubes_keywords.py @@ -0,0 +1,20 @@ +"""Count keywords in a list of cube.json files. +""" +import json +import os + +import keyword_stats + + +if __name__ == '__main__': + output = open('cube_keyword_frequency.csv', 'w+') + all_cube_files = os.listdir('cubes') + output_file = open('cube_keyword_frequency.csv', 'w+') + output_file.write('Cube,Keywords\n') + for filename in all_cube_files: + if filename.endswith('json'): + k_dict = keyword_stats.keyword_count('cubes/' + filename) + output_file.write(f"{filename.strip('json')},{len(k_dict)}\n") + print(filename, len(k_dict)) + output_file.close() + diff --git a/keyword_stats.py b/keyword_stats.py new file mode 100644 index 0000000..69ce5fe --- /dev/null +++ b/keyword_stats.py @@ -0,0 +1,38 @@ +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)}')