Luaで何もしていません
Luaはおそらく、私が知っている最も単純でクリーンなプログラミング言語です。(そして、私はいくつか知っています。)
Luaのシンプルさは最大の弱点でもあります:小さくてきれいな言語であるため、Javaのような工業用の言語やバッテリーから来る場合に期待するようなものはあまり組み込まれていません-Pythonのような組み込み言語。
LuaはCによって拡張されるように設計されています。この場合、LightroomのSDKを意味します。Luaに組み込まれていない必要なツールを提供するためにAdobeが作業を行った場合、それは素晴らしいことですが、たまに外部のツールを呼び出して作業を完了することになります。
Lightroom APIは簡単に接続できますか
これに関する唯一の注意点は、特定の方法でソースコードを構造化しInfo.lua
、プラグインについてLightroomに伝えるための特別なファイルを提供する必要があることです。すべてSDKのドキュメントで説明されています。SDKには、便利な開始コードを探し出すことができるかなり精巧な「hello world」プラグインなど、開始する機能プラグインがいくつか含まれています。
開発には特別なツールが必要ですか?
テキストエディターだけで対応できます。
Lightroomにはデバッグ機能は組み込まれていませんが、SDKにはデバッグログ機能があります。これらのメッセージは、WinDbg
WindowsまたはConsole
OS X でキャッチできます。
より最近の開発は、オープンソースのZeroBrane Studio Lua IDEです。別のテキストエディターの代わりにこれを使用できますが、本当にクールな点は、実行中のプラグインに添付して実行時にデバッグできることです。私はこれを試してみましたが、修正/再読み込み/再起動のデバッグサイクル時間の短縮に役立ちます。
上記のようなタスクを簡単に実行するスクリプトを作成できますか?
どちらのタスクもLightroom SDKのみを使用して100%実行できるとは思いませんが、多くの作業を行うことができます。
JPG拡張子を持つ各スタック内のファイルを選択し、スタックの最上位にします
ほぼすべての方法で使用できるLuaに似た漠然としたコードを次に示します。
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
残念ながら、少なくともLR 5の時点で、SDKにはその最も内側のコメント行のアクションを実行する方法がありません。考えられる最善の方法は、を呼び出しcatalog:setSelectedPhotos(peer)
てから、ユーザーに任せて、実際に番号バッジをクリックしてスタックの順序を変更することです。
(既存の)RAWファイルから(既存の)JPEGファイルへのメタデータの一括コピーを実行する
既存のSDKでこれの一部を実行できますが、制限があります。
たとえば、EXIF フィールドの値を読み取ることはできますがdateTimeOriginal
、SDK自体には値を設定する機能はありません。これは、Lightroomの開発者が、これをプログラムで変更するべきではなく、カメラからの貴重な情報だと判断したためだと思います。(メタデータ>キャプチャ時間の編集...メニュー項目があるのにどうしてそうなのかはわかりませんが、そこにあります。)
ただし、SDKがこれらの制限の1つであなたを捕まえようとするときはいつでも、しばしばエスケープハッチがあります。ExifToolをインストールして、たとえばLuaから呼び出すことができます。カタログメタデータと写真のメタデータの間に矛盾があるため、これは完璧なソリューションではありませんが、Lightroomは写真にバッジを付けて表示します。クリックすると、写真からメタデータをリロードして競合を解決できます。
(このようなプラグインを使用する場合は、[カタログ設定]ダイアログで[XMPへの変更を自動的に書き込む]オプションを設定する必要があります。そうしないと、カタログと写真のメタデータの両方で双方向の競合が発生しやすくなります変更されました。Lightroomは、2つのメタデータセットをマージする方法を知りません; 1つを選択し、他のメタデータコピーを上書きします。)