Add card list reader and card import test scripts
This commit is contained in:
@@ -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)
|
||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user