SittingIch habe aus mehreren Gründen nach einer Möglichkeit gesucht die Darktable Import Prozedur zu automatisieren.
Bei einer Änderung der Dateien ausserhalb von Darktable die XMP Daten jedes Mal manuell neu einlesen zu müssen fand ich etwas umständlich.

Ich weiss natürlich, dass es grundsätzlich nicht vorgesehen ist, beispielsweise die Schlagwörter außerhalb von Darktable zu ändern.
Meinen Workflow ist aber genau dieser Prozess geschuldet.

 

 
Hintergrund

Ich nutze für die Verwaltung meiner Bildersammlung Digikam.
Zum Einen finde ich die Suchfunktion klasse. Zum Anderen ist die Verschlagwortung der Bilder in Digikam für mich einfacher.
Entwickelt werden die Bilder dann in Darktable.
Klar das ich dann auch mal in Darktable nach Bildern suche - von daher sollten die Schlagworte identisch zu denen in Digikam sein.

Was nicht geht

Einerseits funktioniert der Austausch von Beschreibungen, Schlagworten etc. zwischen beiden Programmen problemlos.
Andererseits werden die Entwicklungseinstellungen nicht übernommen.
Wenn ich also meine Bilder in Digikam anschaue, dann sehe ich das RAW ohne Änderungen.

Hierbei handelt es sich allerdings nicht um ein Problem zwischen Darktable und Digikam. Dieses Problem besteht so gut wie immer beim Einsatz verschiedener RAW Konverter.
Egal ob ich nun Windows oder Linux einsetze.
Alternativ könnt ihr nach der Entwicklung das RAW in ein TIF oder JPEG umwandeln, dann habt ihr auch in Digikam das fertige Bild.

Automatisierung

Während ich bei Digikam einstellen kann, dass automatisch nach neuen Bildern/Änderungen gesucht werden soll,  geht dies per Einstellung in Darktable derzeit (Aktuell ist Version 2.2) nicht.

Dafür lässt sich Darktable durch LUA Skripte erweitern.
Sofern ihr noch keine Erfahrung damit habt, empfehle ich das Lesen des entsprechenden Abschnittes im Handbuch.

Unser Skript soll nun dafür sorgen, dass bei jedem Start ein bestimmtes Verzeichnis neu eingelesen wird. Darktable aktualisiert dabei automatisch die Metadaten wie Schlagworte und Beschreibung.
Ich würde allerdings nicht dazu raten das Skript über die gesamte Bildersammlung laufen zu lassen.
Je nach Größe des Bildbestandes wird dies sonst einige Zeit dauern.

Vereinfacht ausgedrückt sieht meine Verzeichnisstruktur so aus:

  • Bilderordner - hier liegt die komplette Bildersammlung
  • Importordner - hier liegen die noch nicht bearbeiteten Bilder

Nach Abschluss der Arbeiten wandern die Bilder dann vom Import- in den Bilderordner.

Das Skript

Dementsprechend läuft das Skript bei mir auch nur über den Importordner.

In einem beliebigen Texteditor erstellt ihr nun eine leere Datei und fügt dort den nachfolgenden Code ein:

local dt = require "darktable"
require "official/yield"

local gettext = dt.gettext

dt.configuration.check_version(...,{3,0,0},{4,0,0})

local function reload_RAW()
dt.print("Reload RAW folder...")
dt.database.import("/euer/Import/Verzeichnis")
dt.print("Reload RAW folder - done")
end

dt.register_event("shortcut", reload_RAW, "Reload RAW folder")

reload_RAW()

Den Teil "/euer/Import/Verzeichnis" müsst ihr entsprechend anpassen.
Die Datei speichert ihr nun unter dem Namen 'import.lua' in eurem Skriptverzeichnis ab.

Zuletzt müsst ihr in der Datei 'luarc' noch das Skript eintragen.