import os
import re
import requests

# Ajuste se houver subpasta (ex: /imagens/ ou /imagens/itens/)
URL_BASE = "https://api.rebornsystem.com.br/imagens/"

# Pasta do seu XAMPP local
PASTA_DESTINO = r"C:\xampp\htdocs\imagens"
os.makedirs(PASTA_DESTINO, exist_ok=True)

ARQUIVOS_LUA = [
    r"items.lua",
    r"Itemlist.lua",
    r"vehicles.lua",
    r"Vehicles.lua",
]

HEADERS = {
    "User-Agent": (
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    )
}


def coletar_nomes():
    nomes = set()
    for arq in ARQUIVOS_LUA:
        if not os.path.exists(arq):
            continue
        with open(arq, "r", encoding="utf-8", errors="ignore") as f:
            conteudo = f.read()

        # Chaves de tabelas ['chave'] = { ... }
        for k in re.findall(r"\[['\"]([a-zA-Z0-9_\-]+)['\"]\]\s*=", conteudo):
            nomes.add(k.strip())

        # Atributos image = 'nome.png'
        for img in re.findall(r"image\s*=\s*['\"]([^'\"]+)['\"]", conteudo):
            nomes.add(os.path.splitext(img)[0].strip())

        # Atributos index = 'nome'
        for idx in re.findall(r"index\s*=\s*['\"]([^'\"]+)['\"]", conteudo):
            nomes.add(idx.strip())

    return sorted(list(nomes))


def baixar():
    lista = coletar_nomes()
    print(f"Total de itens/veículos identificados: {len(lista)}")

    baixados = 0
    erros = 0

    for item in lista:
        baixou = False
        for ext in [".png", ".jpg", ".webp"]:
            nome_arquivo = f"{item}{ext}"
            caminho_salvar = os.path.join(PASTA_DESTINO, nome_arquivo)

            if os.path.exists(caminho_salvar):
                baixou = True
                break

            url = f"{URL_BASE}{nome_arquivo}"
            try:
                res = requests.get(url, headers=HEADERS, timeout=5)
                if (
                    res.status_code == 200
                    and "image" in res.headers.get("Content-Type", "").lower()
                ):
                    with open(caminho_salvar, "wb") as f:
                        f.write(res.content)
                    print(f"[BAIXADO] {nome_arquivo}")
                    baixados += 1
                    baixou = True
                    break
            except Exception:
                pass

        if not baixou:
            erros += 1

    print("\n" + "=" * 40)
    print(f"Sucessos: {baixados}")
    print(f"Não encontrados/Falhas: {erros}")
    print(f"Salvo em: {PASTA_DESTINO}")
    print("=" * 40)


if __name__ == "__main__":
    baixar()