Files
correctvloerverwarming/organize.py
2026-03-01 13:23:48 +00:00

119 lines
3.8 KiB
Python

#!/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!")