Add card list reader and card import test scripts

This commit is contained in:
2026-07-26 18:32:05 +00:00
parent fc6b87515e
commit 1556a6d1aa
2 changed files with 119 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env python3
"""Read the MTG card list XLSX and print all card names."""
import openpyxl
wb = openpyxl.load_workbook('/home/wall-o/MTG card list.xlsx')
ws = wb.active
print(f"Sheet: {ws.title}, Rows: {ws.max_row}, Cols: {ws.max_column}")
for row in ws.iter_rows(min_row=1, max_row=min(ws.max_row, 50), values_only=True):
print(row)
+110
View File
@@ -0,0 +1,110 @@
#!/usr/bin/env python3
"""
Test the card import feature against the MTG card list XLSX.
Reads card names, calls the import API, and returns corrected card details.
"""
import openpyxl
import requests
import json
from datetime import datetime
# Configuration
BACKEND_URL = "http://localhost:5555"
INPUT_FILE = "/home/wall-o/MTG card list.xlsx"
OUTPUT_FILE = "/home/wall-o/MTG card list - corrected.xlsx"
def read_card_names_from_xlsx(filepath):
"""Read card names from the XLSX file."""
wb = openpyxl.load_workbook(filepath)
ws = wb.active
card_names = []
for row in ws.iter_rows(min_row=2, values_only=True): # Skip header
if row[0]: # First column has card name
card_names.append(str(row[0]).strip())
return card_names
def call_card_import_api(card_names):
"""Call the card import API to get corrected spellings."""
url = f"{BACKEND_URL}/api/v1/card-import/"
payload = {
"card_names": card_names
}
try:
response = requests.post(url, json=payload, timeout=30)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error calling API: {e}")
return None
def create_corrected_xlsx(card_names, import_result, output_filepath):
"""Create a new XLSX with corrected card details."""
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Corrected Card List"
# Headers
headers = ["Original Name", "Corrected Name", "Status", "Imported At"]
ws.append(headers)
# Add data
if import_result and "card_names" in import_result:
imported_cards = import_result["card_names"]
for i, original_name in enumerate(card_names):
if i < len(imported_cards):
corrected_name = imported_cards[i]
ws.append([
original_name,
corrected_name,
"Imported",
datetime.now().isoformat()
])
else:
ws.append([
original_name,
"Not Found",
"Failed",
datetime.now().isoformat()
])
else:
# If API failed, just copy original names
for name in card_names:
ws.append([
name,
name,
"API Error",
datetime.now().isoformat()
])
# Save
wb.save(output_filepath)
print(f"Saved corrected card list to: {output_filepath}")
def main():
print("Reading card names from XLSX...")
card_names = read_card_names_from_xlsx(INPUT_FILE)
print(f"Found {len(card_names)} card names")
if not card_names:
print("No card names found in the file")
return
print(f"First 5 card names: {card_names[:5]}")
print("\nCalling card import API...")
import_result = call_card_import_api(card_names)
if import_result:
print(f"API Response: {json.dumps(import_result, indent=2)}")
create_corrected_xlsx(card_names, import_result, OUTPUT_FILE)
else:
print("API call failed. Creating output with original names.")
create_corrected_xlsx(card_names, None, OUTPUT_FILE)
if __name__ == "__main__":
main()