#!/usr/bin/env python3
import csv
import re

SRC = "/home/viraelyh/sarasota.autos/dealercenter/latest.csv"
DEST = "/home/viraelyh/sarasota.autos/dealercenter/meta_feed.csv"
BASE_URL = "https://www.lakewoodranchautosales.net/inventory"

META_HEADERS = [
    "id", "title", "description", "availability", "condition",
    "price", "link", "image_link", "additional_image_link", "quantity_to_sell_on_facebook",
    "make", "model", "year", "mileage", "vin", "body_style",
    "exterior_color", "interior_color", "transmission",
    "address.addr1", "address.city", "address.region",
    "address.postal_code", "address.country"
]

def slugify(s):
    s = (s or "").lower().strip()
    s = re.sub(r"[^a-z0-9\s-]", "", s)
    s = re.sub(r"\s+", "-", s)
    s = re.sub(r"-+", "-", s)
    return s

def build_vdp_url(make, model, stock):
    return f"{BASE_URL}/{slugify(make)}/{slugify(model)}/{stock}/"

def main():
    with open(SRC, newline="", encoding="utf-8-sig") as f_in:
        reader = csv.DictReader(f_in)
        rows_out = []
        for row in reader:
            stock = row.get("Stock Number", "").strip()
            vin = row.get("VIN", "").strip()
            year = row.get("Year", "").strip()
            make = row.get("Make", "").strip()
            model = row.get("Model", "").strip()
            trim = row.get("Trim", "").strip()
            price = row.get("Special Price", "").strip()
            odometer = row.get("Odometer", "").strip()
            ext_color = row.get("ExteriorColor", "").strip()
            int_color = row.get("Interior Color", "").strip()
            transmission = row.get("Transmission", "").strip()
            photos_raw = row.get("PhotoURLs", "").strip()
            desc = row.get("WebAdDescription", "").strip()
            addr = row.get("Address", "").strip()
            city = row.get("City", "").strip()
            state = row.get("State", "").strip()
            zip_code = row.get("Zip", "").strip()

            if not stock or not vin:
                continue

            photos = [p.strip() for p in photos_raw.split(",") if p.strip()]
            image_link = photos[0] if photos else ""
            additional_images = ",".join(photos[1:10]) if len(photos) > 1 else ""

            title = f"{year} {make} {model} {trim}".strip()
            price_fmt = f"{price}.00 USD" if price and price.replace(".", "").isdigit() else ""
            link = build_vdp_url(make, model, stock)

            rows_out.append({
                "id": vin, "title": title,
                "description": desc if desc.strip() else title,
                "availability": "in stock", "condition": "used", "quantity_to_sell_on_facebook": 1,
                "price": price_fmt, "link": link,
                "image_link": image_link, "additional_image_link": additional_images,
                "make": make, "model": model, "year": year,
                "mileage": odometer, "vin": vin, "body_style": trim,
                "exterior_color": ext_color, "interior_color": int_color,
                "transmission": transmission, "address.addr1": addr,
                "address.city": city, "address.region": state,
                "address.postal_code": zip_code, "address.country": "US",
            })

    with open(DEST, "w", newline="", encoding="utf-8") as f_out:
        writer = csv.DictWriter(f_out, fieldnames=META_HEADERS)
        writer.writeheader()
        writer.writerows(rows_out)
    print(f"Wrote {len(rows_out)} vehicles to {DEST}")

if __name__ == "__main__":
    main()