| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import csv
- import json
- import os
- def discover_sets():
- # find all set directories
- sets = []
- for root, dirs, files in os.walk("sets"):
- for dir in dirs:
- sets.append(dir)
- return sets
- def find_card(all_card_data, name):
- for card in all_card_data:
- if card["name"] == name:
- return card
- return None
- def find_card_with_dual_faces(all_card_data, name):
- for card in all_card_data:
- parts = [p.strip() for p in card["name"].split("//")]
- if name in parts:
- return card
- return None
- def main():
- with open("cards/oracle-cards.json") as f:
- all_card_data = json.load(f)
- for set in discover_sets():
- ratings_csv = os.path.join("sets", set, "card-ratings-all.csv")
- ratings_json = os.path.join("sets", set, "card-ratings-all.json")
- card_data_json = os.path.join("sets", set, "card-data.json")
- with (open(ratings_csv) as f):
- lines = []
- cards = []
- for line in csv.DictReader(f):
- name = line["\ufeff\"Name\""]
- line["Name"] = name
- del line["\ufeff\"Name\""]
- lines.append(line)
- card_data = find_card(all_card_data, name)
- if card_data is None:
- card_data = find_card_with_dual_faces(all_card_data, name)
- if card_data is None:
- print(f"Could not find card data for {name}")
- continue
- cards.append(card_data)
- with open(ratings_json, "w") as f:
- json.dump(lines, f, indent=4)
- with open(card_data_json, "w") as f:
- json.dump(cards, f, indent=4)
- if __name__ == '__main__':
- main()
|