#!/usr/bin/env python3
"""
Verplaatst alle afbeeldingen naar de /images/ folder en past
HTML/CSS verwijzingen aan naar de nieuwe paden.
"""

import os
import shutil
import re
from pathlib import Path

BASE_DIR = Path("/home/anisy/projects/websites/correctvloerverwarming/correctvloerverwarming.nl")
IMAGES_DIR = BASE_DIR / "images"
IMAGES_DIR.mkdir(exist_ok=True)

IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg", ".ico", ".bmp"}

def collect_images():
    """Verzamel alle afbeeldingen en verplaats ze naar /images/."""
    moved = 0
    mapping = {}  # old_relative_path -> new_relative_path

    for img_path in BASE_DIR.rglob("*"):
        if img_path.suffix.lower() in IMAGE_EXTENSIONS and img_path.is_file():
            # Sla over als al in images/ staat
            if img_path.parent == IMAGES_DIR:
                continue

            dest = IMAGES_DIR / img_path.name

            # Voorkom naamconflicten
            if dest.exists():
                stem = img_path.stem
                suffix = img_path.suffix
                counter = 1
                while dest.exists():
                    dest = IMAGES_DIR / f"{stem}_{counter}{suffix}"
                    counter += 1

            old_rel = str(img_path.relative_to(BASE_DIR))
            new_rel = str(dest.relative_to(BASE_DIR))

            mapping[old_rel] = new_rel
            shutil.copy2(img_path, dest)
            moved += 1
            print(f"  Gekopieerd: {old_rel} -> {new_rel}")

    print(f"\nTotaal {moved} afbeeldingen naar images/ gekopieerd.")
    return mapping


def update_html_files(mapping):
    """Pas HTML bestanden aan met nieuwe afbeelding paden."""
    updated = 0

    for html_path in BASE_DIR.rglob("*.html"):
        try:
            content = html_path.read_text(encoding="utf-8", errors="ignore")
            original = content

            for old_path, new_path in mapping.items():
                filename = Path(old_path).name
                # Vervang verwijzingen naar de afbeelding op basis van bestandsnaam
                old_name_escaped = re.escape(filename)
                # Vervang src="...filename..." en href="...filename..."
                content = re.sub(
                    r'(src|href)=["\']([^"\']*/)?' + old_name_escaped + r'["\']',
                    lambda m: f'{m.group(1)}="images/{filename}"',
                    content
                )

            if content != original:
                html_path.write_text(content, encoding="utf-8")
                updated += 1

        except Exception as e:
            print(f"  Fout bij {html_path}: {e}")

    print(f"{updated} HTML bestanden bijgewerkt.")


def update_css_files(mapping):
    """Pas CSS bestanden aan met nieuwe afbeelding paden."""
    updated = 0

    for css_path in BASE_DIR.rglob("*.css"):
        try:
            content = css_path.read_text(encoding="utf-8", errors="ignore")
            original = content

            for old_path, new_path in mapping.items():
                filename = Path(old_path).name
                old_name_escaped = re.escape(filename)
                # Vervang url(...) verwijzingen
                content = re.sub(
                    r'url\(["\']?([^"\'()]*/)?' + old_name_escaped + r'["\']?\)',
                    f'url("../images/{filename}")',
                    content
                )

            if content != original:
                css_path.write_text(content, encoding="utf-8")
                updated += 1

        except Exception as e:
            print(f"  Fout bij {css_path}: {e}")

    print(f"{updated} CSS bestanden bijgewerkt.")


if __name__ == "__main__":
    print("=== Afbeeldingen organiseren ===\n")
    mapping = collect_images()
    print("\n=== HTML bestanden bijwerken ===")
    update_html_files(mapping)
    print("\n=== CSS bestanden bijwerken ===")
    update_css_files(mapping)
    print("\nKlaar!")
