#!/usr/bin/env python3
"""
Manually add a new Etsy listing to the inventory JSON.
Usage: python3 add_listing.py "https://www.etsy.com/listing/1234567890/your-listing-title"
"""

import json
import sys
import re
from datetime import datetime
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent))
from config import *


def categorize_listing(title: str) -> str:
    """Categorize listing based on title keywords"""
    title_lower = title.lower()
    
    if any(kw in title_lower for kw in ['usmc', 'marine', 'military', 'veteran', 'semper']):
        return "Military"
    elif any(kw in title_lower for kw in ['patriotic', 'usa', 'american', '4th of july', 'flag', 'eagle', '1776', '250']):
        return "Patriotic"
    elif any(kw in title_lower for kw in ['reformed', 'calvin', 'luther', 'huguenot', 'burning bush', 'soli', 'tulip']):
        return "Reformed SVGs"
    elif any(kw in title_lower for kw in ['deer', 'hunting', 'wildlife', 'nature', 'outdoor', 'animal', 'butterfly', 'buck']):
        return "Nature/Animals/Insects"
    elif any(kw in title_lower for kw in ['easter', 'christian', 'faith', 'cross', 'bible', 'church', 'jesus', 'risen', 'tomb', 'lily', 'resurrection']):
        return "Easter SVGs"
    else:
        return "Easter SVGs"


def add_listing(url: str, title: str = None, price: str = "$2.49"):
    """Add a listing to the JSON file"""
    
    # Extract listing ID from URL
    match = re.search(r'/listing/(\d+)/', url)
    if not match:
        print(f"ERROR: Could not extract listing ID from URL: {url}")
        return False
    
    listing_id = match.group(1)
    
    # Clean URL
    url = url.split('?')[0]
    if not url.startswith('https://'):
        url = 'https://www.etsy.com' + url
    
    # Extract title from URL if not provided
    if not title:
        # Get title from URL slug
        slug_match = re.search(r'/listing/\d+/([^/?]+)', url)
        if slug_match:
            title = slug_match.group(1).replace('-', ' ').title()
        else:
            title = "New Listing"
    
    # Load existing data
    if LISTINGS_JSON.exists():
        with open(LISTINGS_JSON, 'r') as f:
            data = json.load(f)
    else:
        data = {
            "shop": ETSY_SHOP_NAME,
            "scrapedAt": None,
            "totalListings": 0,
            "listings": [],
            "pinterestBoards": PINTEREST_BOARDS
        }
    
    # Check if already exists
    existing_ids = {l['id'] for l in data['listings']}
    if listing_id in existing_ids:
        print(f"Listing {listing_id} already exists in inventory")
        return False
    
    # Add new listing
    new_listing = {
        "id": listing_id,
        "title": title,
        "url": url,
        "price": price,
        "category": categorize_listing(title),
        "posted_images": [],
        "addedManually": True,
        "addedAt": datetime.now().isoformat()
    }
    
    data['listings'].append(new_listing)
    data['totalListings'] = len([l for l in data['listings'] if not l.get('delisted')])
    data['scrapedAt'] = datetime.now().isoformat()
    
    # Save
    DATA_DIR.mkdir(exist_ok=True)
    with open(LISTINGS_JSON, 'w') as f:
        json.dump(data, f, indent=2)
    
    print(f"SUCCESS: Added listing {listing_id}")
    print(f"  Title: {title}")
    print(f"  Category: {new_listing['category']}")
    print(f"  Total listings: {data['totalListings']}")
    return True


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python3 add_listing.py <etsy_url> [title]")
        print("Example: python3 add_listing.py 'https://www.etsy.com/listing/123456/my-design' 'My Design SVG'")
        sys.exit(1)
    
    url = sys.argv[1]
    title = sys.argv[2] if len(sys.argv) > 2 else None
    
    add_listing(url, title)
