import os
import json
import time

ROOT_DIR = "/mnt/pdfs/İŞ MAKİNASI GRUBU"
OUTPUT_FILE = "/var/www/html/PEPCVSON/scripts/brand_structure.json"

def scan_directory():
    print(f"📂 Tarama Başlıyor: {ROOT_DIR}")
    start_time = time.time()
    
    structure = {
        "brands": {},
        "total_pdfs": 0,
        "last_updated": time.strftime("%Y-%m-%d %H:%M:%S")
    }
    
    if not os.path.exists(ROOT_DIR):
        print(f"❌ HATA: Klasör bulunamadı: {ROOT_DIR}")
        return

    # 1. Seviye: Markalar
    try:
        brands = [d for d in os.listdir(ROOT_DIR) if os.path.isdir(os.path.join(ROOT_DIR, d))]
        
        for brand_name in brands:
            brand_path = os.path.join(ROOT_DIR, brand_name)
            # Yapı: brands[MARKA] = { models: [], pdfs: [] }
            # Bazen pdf direkt markanın altında olabilir, bazen model klasörünün içinde.
            
            structure["brands"][brand_name] = {
                "models": {},
                "root_pdfs": []
            }
            
            # Marka içini gez
            for root, dirs, files in os.walk(brand_path):
                # root: Şu anki klasör yolu
                # dirs: Alt klasörler (Model adayları)
                # files: Dosyalar
                
                relative_path = os.path.relpath(root, brand_path)
                
                # PDF'leri bul
                pdfs = [f for f in files if f.lower().endswith('.pdf')]
                structure["total_pdfs"] += len(pdfs)
                
                if relative_path == ".":
                    # Markanın hemen altındaki PDF'ler (Modelsiz)
                    structure["brands"][brand_name]["root_pdfs"] = pdfs
                else:
                    # Model klasörleri (veya alt-alt klasörler)
                    # Basitlik için: İlk seviye klasörü "MODEL" kabul edelim.
                    # Eğer daha derin hiyerarşi varsa, onu model isminin bir parçası yapabiliriz.
                    
                    parts = relative_path.split(os.sep)
                    model_name = parts[0] # İlk klasör Model'dir
                    
                    if model_name not in structure["brands"][brand_name]["models"]:
                        structure["brands"][brand_name]["models"][model_name] = []
                    
                    # PDF'leri ekle
                    # Her pdf için tam yolu (relative) saklayalım ki erişebilelim
                    for pdf in pdfs:
                        full_relative_path = os.path.join("İŞ MAKİNASI GRUBU", brand_name, relative_path, pdf)
                        structure["brands"][brand_name]["models"][model_name].append({
                            "name": pdf,
                            "path": full_relative_path
                        })

    except Exception as e:
        print(f"❌ Kritik Hata: {e}")
        return

    # JSON Kaydet
    with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
        json.dump(structure, f, ensure_ascii=False, indent=2)
        
    duration = time.time() - start_time
    print(f"✅ Tarama Tamamlandı ({duration:.2f} sn)")
    print(f"📊 Toplam Marka: {len(structure['brands'])}")
    print(f"📄 Toplam PDF: {structure['total_pdfs']}")
    print(f"💾 Kayıt: {OUTPUT_FILE}")

if __name__ == "__main__":
    scan_directory()
