Ich habe nichts mit Lua gemacht
Lua ist wahrscheinlich die einfachste und sauberste Programmiersprache, die ich kenne. (Und ich kenne ein paar .)
Die Einfachheit von Lua ist auch seine größte Schwäche: Da es sich um eine kleine, übersichtliche Sprache handelt, sind nicht viele Dinge eingebaut, die Sie erwarten würden, wenn Sie aus einer industriellen Sprache wie Java oder einer Batterie stammen Sprache wie Python.
Lua ist so konzipiert, dass es von C erweitert wird, was in diesem Fall das SDK von Lightroom bedeutet. Das ist großartig, wenn Adobe die Arbeit geleistet hat, um die Tools bereitzustellen, die Sie benötigen, die nicht in Lua integriert sind, aber ab und zu werden Sie wahrscheinlich externe Tools in Anspruch nehmen müssen, um die Dinge zu erledigen.
Ist die Lightroom-API einfach zu integrieren?
Das einzig schwierige daran ist, dass Sie Ihren Quellcode auf eine bestimmte Weise strukturieren und eine spezielle Info.lua
Datei bereitstellen müssen , um Lightroom über Ihr Plugin zu informieren. Alles wird in den SDK-Dokumenten erklärt . Das SDK enthält mehrere funktionierende Plugins, von denen aus man starten kann, einschließlich eines ziemlich ausgeklügelten "Hallo Welt" -Plugins, das nach nützlichem Startcode durchsucht werden kann.
Benötigt es spezielle Tools für die Entwicklung?
Sie kommen mit nur einem Texteditor zurecht.
In Lightroom ist keine Debugging-Funktion integriert, das SDK enthält jedoch eine Debugging-Funktion . Sie können diese Meldungen entweder WinDbg
unter Windows oder Console
unter OS X abfangen.
Eine neuere Entwicklung ist die Open Source ZeroBrane Studio Lua IDE. Sie können dies anstelle eines anderen Texteditors verwenden, aber das wirklich coole ist, dass es möglich ist, es an Ihr laufendes Plugin anzuhängen, wodurch Sie es während der Ausführung debuggen können. Ich habe dies versucht, und es hilft, die Zykluszeit für das Beheben / Neuladen / Neustarten des Debugs zu verkürzen.
Kann ich Skripte schreiben, um die oben beschriebenen Aufgaben problemlos auszuführen?
Ich denke nicht, dass eine der beiden Aufgaben zu 100% nur mit dem Lightroom SDK erledigt werden kann, aber es kann einen Großteil der Arbeit für Sie erledigen.
Wählen Sie die Datei in jedem Stapel mit der JPG-Erweiterung aus und legen Sie sie oben auf dem Stapel ab
Hier ist ein vage Lua-ähnlicher Code, mit dem Sie fast den gesamten Weg dorthin zurücklegen können:
for photo in catalog:getMultipleSelectedOrAllPhotos() do
for peer in photo:stackInFolderMembers() do
if string.find('%.jpg$', peer:getFormattedMetadata('fileName')) then
-- *mumble* move 'peer' photo to top of stack *mumble*
break
end
end
end
Leider sehe ich im SDK keine Möglichkeit, die Aktion der innersten Kommentarzeile auszuführen, zumindest ab LR 5. Am besten rufe ich an catalog:setSelectedPhotos(peer)
und überlasse es dann dem Benutzer, auf das Nummernschild zu klicken, um den Stapel neu zu ordnen.
Führen Sie eine Massenkopie von Metadaten aus einer (vorhandenen) RAW-Datei in eine (vorhandene) JPEG-Datei durch
Sie können einen Teil davon mit dem vorhandenen SDK ausführen, es gibt jedoch Einschränkungen.
Zum Beispiel, während Sie lesen den Wert des EXIF - dateTimeOriginal
Feld gibt es keine Möglichkeit , im SDK selbst setzen Sie den Wert. Ich nehme an, das liegt daran, dass die Lightroom-Entwickler entschieden haben, dass dies niemals programmgesteuert geändert werden sollte. Das sind wertvolle Informationen von der Kamera. (Warum dies der Fall sein sollte, wenn es einen Menüpunkt Metadaten> Aufnahmezeit bearbeiten ... gibt, weiß ich nicht, aber Sie haben ihn.)
Wenn das SDK jedoch versucht, Sie mit einer dieser Einschränkungen zu überlisten, gibt es häufig eine Notausstiegsluke. Sie können beispielsweise ExifTool installieren und von Lua aus aufrufen. Dies ist keine perfekte Lösung, da es dann zu Inkonsistenzen zwischen den Katalog-Metadaten und den Foto-Metadaten kommt. Lightroom erkennt das Foto jedoch und versieht es mit einem Symbol. Wenn Sie darauf klicken, können Sie den Konflikt lösen, indem Sie die Metadaten aus dem Foto neu laden.
(Wenn Sie ein solches Plugin verwenden, sollten Sie die Option "Änderungen automatisch in XMP schreiben" im Dialogfeld "Katalogeinstellungen" festlegen. Andernfalls können Sie leichter einen bidirektionalen Konflikt erstellen, bei dem sowohl Katalog- als auch Fotometadaten vorhanden sind Lightroom weiß nicht, wie die beiden Metadatensätze zusammengeführt werden sollen. Sie müssen nur einen auswählen und überschreiben damit die andere Metadatenkopie.)