import os
import json

# A script könyvtára (html/galeria/data)
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
# A full könyvtár egy szinttel feljebb van
FULL_DIR = os.path.join(SCRIPT_DIR, "..", "full")
KAT_FILE = os.path.join(SCRIPT_DIR, "kategoriak.json")
KEP_FILE = os.path.join(SCRIPT_DIR, "kepek.json")

def update_gallery_db():
    # 1. Kategóriák fájl ellenőrzése / létrehozása
    if not os.path.exists(KAT_FILE):
        alap_kategoriak = [
            {"id": 0, "nev": "Egyéb nem feldolgozott képek"},
            {"id": 1, "nev": "TVC Alapgép"},
            {"id": 2, "nev": "Tápegység"},
            {"id": 3, "nev": "Cartridge"},
            {"id": 4, "nev": "Bővítő kártyák"},
            {"id": 5, "nev": "Joystick"},
            {"id": 6, "nev": "Kazetták"}
        ]
        with open(KAT_FILE, 'w', encoding='utf-8') as f:
            json.dump(alap_kategoriak, f, ensure_ascii=False, indent=4)
        print(f"Létrehozva: {KAT_FILE}")

    # 2. Képek fájl beolvasása vagy létrehozása
    kepek_adatok = []
    if os.path.exists(KEP_FILE):
        with open(KEP_FILE, 'r', encoding='utf-8') as f:
            kepek_adatok = json.load(f)
    else:
        print(f"Létrehozva: {KEP_FILE}")

    # Meglévő fájlnevek kigyűjtése a gyorsabb kereséshez
    meglevo_fajlok = {kep['fajlnev'] for kep in kepek_adatok}

    # 3. Képek keresése a 'full' könyvtárban és hiányzók törlése
    hozzadott_db = 0
    torolt_db = 0
    tamogatott_kiterjesztesek = ('.jpg', '.jpeg', '.png', '.gif')
    
    # Lemez tartalmának beolvasása egyszerre a sebesség miatt
    if not os.path.exists(FULL_DIR):
        print(f"Hiba: A {FULL_DIR} könyvtár nem létezik!")
        return
        
    fajlok_a_lemezen = set(os.listdir(FULL_DIR))
    
    # Csak azokat tartjuk meg, amik fizikailag léteznek a lemezen
    frissitett_kepek = []
    for kep in kepek_adatok:
        if kep['fajlnev'] in fajlok_a_lemezen:
            frissitett_kepek.append(kep)
        else:
            torolt_db += 1
    
    kepek_adatok = frissitett_kepek
    meglevo_adatbazis_fajlok = {kep['fajlnev'] for kep in kepek_adatok}
    
    # Új fájlok keresése
    for fajlnév in fajlok_a_lemezen:
        if fajlnév.lower().endswith(tamogatott_kiterjesztesek):
            if fajlnév not in meglevo_adatbazis_fajlok:
                uj_kep = {
                    "fajlnev": fajlnév,
                    "kategoria": 0,
                    "megjegyzes": ""
                }
                kepek_adatok.append(uj_kep)
                hozzadott_db += 1
    
    # 4. JSON mentése
    with open(KEP_FILE, 'w', encoding='utf-8') as f:
        json.dump(kepek_adatok, f, ensure_ascii=False, indent=4)
    
    print(f"Adatbázis frissítve. Összesen {len(kepek_adatok)} kép.")
    if hozzadott_db > 0 or torolt_db > 0:
        print(f"Változások: +{hozzadott_db} új kép, -{torolt_db} hiányzó törölve.")

if __name__ == "__main__":
    update_gallery_db()
