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