diff --git a/backend/routes/admin.py b/backend/routes/admin.py index b48720c..69dceeb 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -1058,21 +1058,25 @@ async def ors_stats(user=Depends(require_mod)): @router.post("/media/generate-previews") async def generate_media_previews(user=Depends(require_admin)): - """Generiert fehlende _preview.jpg für alle Bilder in /data/media.""" - import io as _io + """Generiert fehlende _preview.webp für alle Bilder in /data/media.""" + import logging as _log from media_utils import generate_preview, _PREVIEW_EXTS + _logger = _log.getLogger(__name__) MEDIA_DIR = os.getenv("MEDIA_DIR", "/data/media") generated = 0 skipped = 0 errors = 0 + dirs_info = {} for subdir in ("diary", "forum", "breeds", "breeds/gallery", "breeds/submissions"): folder = os.path.join(MEDIA_DIR, subdir) if not os.path.isdir(folder): + dirs_info[subdir] = "not found" continue - for fname in os.listdir(folder): - # Nur Original-Bilder (keine _preview, _thumb, Videos, PDFs) + files = os.listdir(folder) + dirs_info[subdir] = f"{len(files)} files" + for fname in files: low = fname.lower() if "_preview" in low or "_thumb" in low: continue @@ -1091,10 +1095,13 @@ async def generate_media_previews(user=Depends(require_admin)): generated += 1 else: skipped += 1 + _logger.warning(f"Preview None für {subdir}/{fname}") except Exception as exc: errors += 1 + _logger.error(f"Preview-Fehler {subdir}/{fname}: {exc}") - return {"generated": generated, "skipped": skipped, "errors": errors} + _logger.info(f"generate-previews: {generated} neu, {skipped} vorhanden, {errors} Fehler | dirs: {dirs_info}") + return {"generated": generated, "skipped": skipped, "errors": errors, "dirs": dirs_info} # ------------------------------------------------------------------