added edh deck maker using edhrec and scryfall
This commit is contained in:
parent
1208e6eedb
commit
638d4abee2
45
debug.py
Normal file
45
debug.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
def refactor_commander_name(name):
|
||||||
|
# Replace spaces, commas, and apostrophes with dashes
|
||||||
|
name = name.replace(" ", "-").replace(",", "").replace("'", "")
|
||||||
|
return name.lower()
|
||||||
|
|
||||||
|
def fetch_edhrec_data(commander_name):
|
||||||
|
url = f"https://json.edhrec.com/pages/commanders/{commander_name}.json"
|
||||||
|
response = requests.get(url)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
print(f"Failed to fetch data for {commander_name}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def test_archidekt_section(edhrec_data):
|
||||||
|
if 'archidekt' in edhrec_data:
|
||||||
|
print("Archidekt Section Found:")
|
||||||
|
print(json.dumps(edhrec_data['archidekt'], indent=4)) # Pretty-print the Archidekt section
|
||||||
|
|
||||||
|
# Since archidekt is a list, we'll iterate directly over the elements
|
||||||
|
for idx, deck_section in enumerate(edhrec_data['archidekt']):
|
||||||
|
print(f"\nProcessing Archidekt section {idx}...")
|
||||||
|
if isinstance(deck_section, dict) and 'u' in deck_section:
|
||||||
|
uuid = deck_section['u']
|
||||||
|
print(f"Found UUID: {uuid}")
|
||||||
|
else:
|
||||||
|
print("No Archidekt section found in the EDHREC data.")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
commander_name = input("Enter the commander card name: ")
|
||||||
|
refactored_name = refactor_commander_name(commander_name)
|
||||||
|
|
||||||
|
print(f"Fetching EDHREC data for {commander_name}...")
|
||||||
|
edhrec_data = fetch_edhrec_data(refactored_name)
|
||||||
|
|
||||||
|
if edhrec_data:
|
||||||
|
print(f"Testing Archidekt section...")
|
||||||
|
test_archidekt_section(edhrec_data)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
80
edhrec_deck.py
Normal file
80
edhrec_deck.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
|
def refactor_commander_name(name):
|
||||||
|
# Replace spaces, commas, and apostrophes with dashes, and convert to lowercase
|
||||||
|
name = name.replace(" ", "-").replace(",", "").replace("'", "")
|
||||||
|
return name.lower()
|
||||||
|
|
||||||
|
def fetch_edhrec_data(commander_name):
|
||||||
|
url = f"https://json.edhrec.com/pages/commanders/{commander_name}.json"
|
||||||
|
response = requests.get(url)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
print(f"Failed to fetch data for {commander_name}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def fetch_card_name_from_scryfall(uuid):
|
||||||
|
scryfall_url = f"https://api.scryfall.com/cards/{uuid}"
|
||||||
|
response = requests.get(scryfall_url)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
data = response.json()
|
||||||
|
return data['name']
|
||||||
|
else:
|
||||||
|
print(f"Failed to fetch card name from Scryfall for UUID: {uuid}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def extract_uuids_and_quantities_from_archidekt(edhrec_data):
|
||||||
|
card_info = []
|
||||||
|
|
||||||
|
if 'archidekt' in edhrec_data:
|
||||||
|
for idx, deck_section in enumerate(edhrec_data['archidekt']):
|
||||||
|
if isinstance(deck_section, dict) and 'u' in deck_section and 'q' in deck_section:
|
||||||
|
uuid = deck_section['u']
|
||||||
|
quantity = deck_section['q']
|
||||||
|
card_info.append((uuid, quantity))
|
||||||
|
else:
|
||||||
|
print("No Archidekt section found in the EDHREC data.")
|
||||||
|
|
||||||
|
return card_info
|
||||||
|
|
||||||
|
def fetch_card_names_from_uuids(card_info):
|
||||||
|
card_entries = []
|
||||||
|
for uuid, quantity in card_info:
|
||||||
|
card_name = fetch_card_name_from_scryfall(uuid)
|
||||||
|
if card_name:
|
||||||
|
card_entries.append(f"{quantity}x {card_name}")
|
||||||
|
return card_entries
|
||||||
|
|
||||||
|
def create_moxfield_deck_file(commander_name, card_entries):
|
||||||
|
filename = f"{commander_name}_edh.txt"
|
||||||
|
with open(filename, 'w') as file:
|
||||||
|
for entry in card_entries:
|
||||||
|
file.write(f"{entry}\n")
|
||||||
|
print(f"Deck list saved to {filename}")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
commander_name = input("Enter the commander card name: ")
|
||||||
|
refactored_name = refactor_commander_name(commander_name)
|
||||||
|
|
||||||
|
print(f"Fetching EDHREC data for {commander_name}...")
|
||||||
|
edhrec_data = fetch_edhrec_data(refactored_name)
|
||||||
|
|
||||||
|
if edhrec_data:
|
||||||
|
print(f"Extracting UUIDs and quantities from Archidekt section...")
|
||||||
|
card_info = extract_uuids_and_quantities_from_archidekt(edhrec_data)
|
||||||
|
|
||||||
|
if card_info:
|
||||||
|
print(f"Fetching card names from Scryfall...")
|
||||||
|
card_entries = fetch_card_names_from_uuids(card_info)
|
||||||
|
if card_entries:
|
||||||
|
create_moxfield_deck_file(refactored_name, card_entries)
|
||||||
|
else:
|
||||||
|
print("No card names found for the given UUIDs.")
|
||||||
|
else:
|
||||||
|
print("No UUIDs found in the Archidekt decks.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user