import requests
import json
import time

CARS = {
    "hatchback": ["Maruti Suzuki Swift", "Hyundai i20", "Tata Altroz", "Volkswagen Polo", "Honda Jazz"],
    "sedan": ["Honda City", "Hyundai Verna", "Maruti Suzuki Ciaz", "Skoda Slavia", "Volkswagen Virtus"],
    "suv": ["Hyundai Creta", "Tata Nexon", "Kia Seltos", "Mahindra XUV700", "Toyota Fortuner"],
    "muv": ["Toyota Innova Crysta", "Maruti Suzuki Ertiga", "Kia Carens", "Mahindra Marazzo"],
    "electric": ["Tata Nexon EV", "MG ZS EV", "Hyundai Kona Electric", "Tata Tiago EV"],
    "luxury": ["Mercedes-Benz C-Class", "BMW 3 Series", "Audi A4", "Jaguar XF"],
    "pickup_trucks": ["Isuzu D-Max", "Toyota Hilux", "Mahindra Bolero Pik-Up"]
}

NAME_MAP = {
    "hatchback": "Hatchback",
    "sedan": "Sedan",
    "suv": "SUV",
    "muv": "MUV",
    "electric": "Electric",
    "luxury": "Luxury",
    "pickup_trucks": "Pickup Trucks"
}

HEADERS = {"User-Agent": "BuyzzApp/1.0 (test@example.com)"}

def get_commons_image(query):
    search_url = "https://commons.wikimedia.org/w/api.php"
    params = {
        "action": "query",
        "format": "json",
        "list": "search",
        "srsearch": query + " car",
        "srnamespace": 6,
        "srlimit": 1
    }
    try:
        r = requests.get(search_url, params=params, headers=HEADERS, timeout=15)
        results = r.json().get("query", {}).get("search", [])
        if not results:
            return None
        title = results[0]["title"]
        info_params = {
            "action": "query",
            "format": "json",
            "titles": title,
            "prop": "imageinfo",
            "iiprop": "url"
        }
        r2 = requests.get(search_url, params=info_params, headers=HEADERS, timeout=15)
        pages = r2.json().get("query", {}).get("pages", {})
        for page in pages.values():
            imageinfo = page.get("imageinfo")
            if imageinfo:
                return imageinfo[0]["url"]
    except Exception as e:
        print("image fetch failed", query, e)
    return None

products = []

for sub_id, cars in CARS.items():
    for car in cars:
        image = get_commons_image(car)
        time.sleep(1)
        if not image:
            print("skip (no image)", car)
            continue
        make = car.split(" ")[0]
        products.append({
            "id": car.lower().replace(" ", "-"),
            "name": car,
            "image": image,
            "source": "wikimedia",
            "brand": make,
            "description": car,
            "sub": NAME_MAP[sub_id],
            "attributes": {}
        })
        print("added", car)

with open("cars.json", "w") as f:
    json.dump({"products": products}, f)

print("TOTAL:", len(products))
