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
- 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).
- 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.
- Funktion
- Konfiguration laden
load_config()
: Lädtai_config.json
und parst JSON.- Bei Fehler: Abbrechen und Fehler melden.
- API-Erreichbarkeit prüfen
check_api_reachability()
: Testet Verbindung zur LMStudio-API.- Bei Fehler: Abbrechen und Hinweis anzeigen.
- Rating-Lookup generieren
generate_rating_lookup()
: Erstellt Tabelle für Bewertungsskala basierend auf Config.
- Stop-Flag zurücksetzen
stop_requested = false
- 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.
- Prüfe Stop-Flag: Wenn
- 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.
- 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.
- Schleife beenden
- Job abschließen.
- Zusammenfassung ausgeben: „X erfolgreich, Y Fehler, Z übersprungen.“
- Stop-Button (jederzeit)
- Setzt
stop_requested = true
und bricht Schleife ab.
- Setzt
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).