"""Valida o diff vendidos/novos coletando TODOS os IDs atuais do site via Selenium."""
import json, re, time
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.edge.options import Options

BASE=Path(r"C:\Users\P7530\Downloads\quitcar estoque")
opts=Options()
for a in ['--headless=new','--disable-gpu','--no-sandbox','--window-size=1400,1200','--log-level=3']:
    opts.add_argument(a)
d=webdriver.Edge(options=opts); d.set_page_load_timeout(60)

atuais={}  # id -> titulo curto
for p in range(1,7):
    d.get(f"https://quitcar.com.br/estoque?pagina={p}"); time.sleep(3)
    html=d.page_source
    # cards de veiculo: links /carros/.../ano/ID ou /caminhoes/.../ID
    for m in re.finditer(r'/(?:carros|caminhoes)/[a-z0-9\-]+/[a-z0-9\-./]+/(\d{4,7})(?:["/?])', html):
        vid=m.group(1)
        atuais.setdefault(vid, p)
    print(f"pagina {p}: total IDs acumulados = {len(atuais)}")
    if "0 veículos" in html or "0 veiculos" in html.lower():
        break
d.quit()

# IDs antigos
antigos=json.loads((BASE/"catalogo_carros.json").read_text(encoding="utf-8"))
antigos_ids={x["id"] for x in antigos}
antigos_map={x["id"]:f"{x['n']} {x['modelo']} {x['ano']}" for x in antigos}

atuais_ids=set(atuais.keys())
print(f"\n== IDs antigos: {len(antigos_ids)} | IDs atuais no site: {len(atuais_ids)} ==")

vendidos = antigos_ids - atuais_ids
novos    = atuais_ids - antigos_ids
mantidos = antigos_ids & atuais_ids
print(f"VENDIDOS (antigo e nao esta mais): {len(vendidos)}")
print(f"NOVOS (no site, nao estava no antigo): {len(novos)}")
print(f"MANTIDOS: {len(mantidos)}")

print("\n--- VENDIDOS ---")
for vid in sorted(vendidos):
    print(f"  {vid}  {antigos_map.get(vid,'?')}")

print("\n--- NOVOS (ids no site fora do catalogo antigo) ---")
for vid in sorted(novos):
    print(f"  {vid}  (visto na pagina {atuais[vid]})")

# compara com o que processei
proc=json.loads((BASE/"catalogo_carros_2026-05-31.json").read_text(encoding="utf-8"))
meus_novos={x["id"] for x in proc if x.get("n","") >= "089"}
meus_vendidos={x["id"] for x in proc if x.get("status")=="VENDIDO"}
print("\n== CONFERENCIA com meu catalogo ==")
print("Novos que processei mas NAO aparecem no site:", meus_novos - atuais_ids)
print("Vendidos que marquei mas AINDA estao no site:", meus_vendidos & atuais_ids)
print("Novos do site que NAO processei:", novos - meus_novos)
print("Sumiram do site mas NAO marquei vendido:", vendidos - meus_vendidos)
