Programmablauf-Plan: AI XMP Importer & Rater (Version 6.3)

Dieser Ablaufplan beschreibt den Hauptprozess des Lua-Scripts für darktable. Das Script führt KI-gestützte Bewertungen von Bildern durch, indem es Bilder an eine lokale LMStudio-API sendet und die Ergebnisse in darktable sowie optional in eine separate XMP-Dateien speichert.

Übersicht

Das Script lädt eine Konfiguration aus ai_config.json, prüft die API-Erreichbarkeit und verarbeitet ausgewählte Bilder. Es exportiert jedes Bild als Base64-JPEG, sendet es an die KI-API, parst die Antwort und wendet die Ergebnisse an. Der Prozess kann durch einen Stop-Button abgebrochen werden.

Schritt-für-Schritt-Ablauf

  1. Initialisierung und GUI-Setup
    • Script wird in darktable geladen.
    • GUI-Widgets (Checkboxen für Überschreiboptionen, Buttons) werden erstellt und registriert.
    • Standardwerte für Settings werden gesetzt (falls nicht vorhanden).
  2. Benutzeraktion: „AI-Bewertung durchführen“ klicken
    • Funktion ai_rate_selection() wird aufgerufen.
    • Auswahl der Bilder prüfen: Wenn keine Bilder ausgewählt, Fehler anzeigen und abbrechen.
  3. Konfiguration laden
    • load_config(): Lädt ai_config.json und parst JSON.
    • Bei Fehler: Abbrechen und Fehler melden.
  4. API-Erreichbarkeit prüfen
    • check_api_reachability(): Testet Verbindung zur LMStudio-API.
    • Bei Fehler: Abbrechen und Hinweis anzeigen.
  5. Rating-Lookup generieren
    • generate_rating_lookup(): Erstellt Tabelle für Bewertungsskala basierend auf Config.
  6. Stop-Flag zurücksetzen
    • stop_requested = false
  7. Job erstellen und Schleife starten
    • Erstellt einen darktable-Job für Fortschritt.
    • Schleife über alle ausgewählten Bilder:
      • Prüfe Stop-Flag: Wenn stop_requested, Schleife abbrechen.
      • Fortschritt aktualisieren.
  8. XMP-Prüfung pro Bild
    • Prüfe, ob XMP-Datei existiert und nicht überschrieben werden soll.
    • Wenn ja: Überspringe Bild (zähle als „übersprungen“), gehe zu nächstem Bild.
  9. Bild verarbeiten (process_image_with_ai())
    • Leerzeile für Trennung ausgeben.
    • Bild exportieren: export_image_to_base64() – konvertiert zu JPEG und kodiert Base64.
      • Bei Fehler: Fehler zählen und nächstes Bild.
    • Export-Zeit messen und anzeigen.
    • API-Aufruf: call_ai_api() – sendet Base64-Bild an KI.
      • Bei Fehler: Fehler zählen und nächstes Bild.
    • Antwort parsen: parse_ai_response() – extrahiert Rating, Keywords, Beschreibung.
    • Ergebnisse anwenden: apply_ai_result() – setzt Rating, Beschreibung, Tags in darktable; schreibt XMP-Datei.
    • Ausgabe formatieren (Sterne für Rating, Tokens, Dauer) und anzeigen.
  10. Schleife beenden
    • Job abschließen.
    • Zusammenfassung ausgeben: „X erfolgreich, Y Fehler, Z übersprungen.“
  11. Stop-Button (jederzeit)
    • Setzt stop_requested = true und bricht Schleife ab.

Einfacher Flowchart (Textdarstellung)

Fish
Start  

GUI laden & Settings initialisieren  

Button "AI-Bewertung durchführen" geklickt  

Auswahl prüfen (Bilder vorhanden?)  
  ├─ Nein → Fehler & Ende  
  ↓ Ja  
Konfiguration laden  
  ├─ Fehler → Ende  
  ↓ OK  
API-Erreichbarkeit prüfen  
  ├─ Fehler → Ende  
  ↓ OK  
Rating-Lookup generieren  

Stop-Flag = false  

Job erstellen  

Schleife über Bilder:  
  ├─ Stop angefordert? → Ja → Abbrechen  
  ↓ Nein  
  Fortschritt aktualisieren  

  XMP-Datei existiert & nicht überschreiben?  
  ├─ Ja → Überspringen & Zähler +1  
  ↓ Nein  
  Bild exportieren (Base64)  
  ├─ Fehler → Fehler-Zähler +1 & nächstes Bild  
  ↓ OK  
  API-Aufruf  
  ├─ Fehler → Fehler-Zähler +1 & nächstes Bild  
  ↓ OK  
  Antwort parsen  

  Ergebnisse anwenden (Rating, Beschreibung, Tags, XMP)  

  Ausgabe formatieren & anzeigen  

  Nächstes Bild (bis alle durch)  

Job abschließen  

Zusammenfassung ausgeben  

Ende  

Hinweise zur Dokumentation

  • Konfiguration: Alle Einstellungen (API-URL, Prompts, Bildgrößen) sind in ai_config.json definiert.
  • Fehlerbehandlung: API-Fehler werden mit Retries behandelt; Export-Fehler brechen das Bild ab.
  • Performance: Export-Zeit und API-Dauer werden gemessen und angezeigt.
  • Anpassungen: Checkboxen in der GUI steuern, was überschrieben wird (Rating, Beschreibung, Tags, XMP).