Lua ile hiçbir şey yapmadım
Lua muhtemelen bildiğim en basit, en temiz programlama dilidir. ( Birkaç tanesini biliyorum .)
Lua'nın sadeliği aynı zamanda en büyük zayıflığıdır: küçük, temiz bir dil olarak tasarımdan, Java gibi endüstriyel bir dilden veya bataryalardan gelirken bulmayı umacağınız pek bir şey yoktur. Python gibi dahil dil.
Lua, bu durumda Lightroom'un SDK'sı anlamına gelen C tarafından uzatılmak üzere tasarlanmıştır. Adobe, Lua'da yerleşik olmayan ihtiyaç duyduğunuz araçları sağlamak için çalışma yaptıysa, bu harikadır, ancak her zaman ve muhtemelen kendiniz işlerin yapılması için dış araçlara seslendiğini göreceksiniz.
Lightroom API'sinin bağlantı kurması kolay mı
Bununla ilgili en zor kısım, kaynak kodunuzu belirli bir şekilde yapılandırmanız ve Info.lua
Lightroom'a eklentiniz hakkında bilgi vermek için özel bir dosya sağlamanız gerektiğidir. Hepsi SDK belgelerinde açıklanmıştır . SDK, kullanışlı bir başlangıç kodu için elden çıkarılabilecek oldukça ayrıntılı bir "merhaba dünyası" eklentisi de dahil olmak üzere, başlaması gereken birkaç işlevsel eklenti içerir.
Geliştirme için herhangi bir özel araç gerektiriyor mu?
Sadece bir metin editörü ile alabilirsiniz.
Lightroom'da yerleşik bir hata ayıklama tesisi yoktur, ancak SDK'da bir hata ayıklama günlüğü tesisi vardır. Bu mesajları WinDbg
Windows'ta veya Console
OS X'de yakalayabilirsiniz .
Daha yeni bir gelişme, açık kaynaklı ZeroBrane Studio Lua IDE'dir. Bunu başka bir metin düzenleyici yerine kullanabilirsiniz, ancak asıl harika olan şey, çalışırken hata ayıklamanızı sağlayan çalışan eklentinize eklemenizin mümkün olmasıdır. Bunu denedim ve bu düzeltme / yeniden yükleme / yeniden başlatma hata ayıklama döngüsü süresini azaltmaya yardımcı olur.
Yukarıda tarif ettiğim işleri kolayca gerçekleştirmek için senaryo yazabilir miyim?
Her iki görevin de yalnızca Lightroom SDK'yı kullanarak% 100 yapabileceğini sanmıyorum, ancak sizin için çok iş yapabilir.
JPG uzantılı her istifte dosyayı seçin ve istifin üstünde yapın
İşte size hemen hemen tüm yol boyunca sizi uyaran belli belirsiz Lua benzeri kod :
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
Ne yazık ki, SDK'da en içteki yorum satırının en azından LR 5'ten itibaren yaptığı eylemi yapmanın bir yolunu görmüyorum. Bulabileceğim en iyi şey aramak catalog:setSelectedPhotos(peer)
, sonra yığını yeniden düzenlemek için gerçekte sayı rozetini tıklatması için kullanıcıya bırakmasıdır.
(Mevcut) bir RAW dosyasından (mevcut) bir JPEG dosyasına meta verilerin toplu bir kopyasını alın
Bunların bir kısmını mevcut SDK ile yapabilirsiniz, ancak sınırlamalar vardır.
Örneğin , EXIF alanının değerini okuyabileceğiniz gibi , değeri ayarlamak için dateTimeOriginal
SDK'nın kendisinde bir olanak yoktur . Bunun, Lightroom geliştiricilerin bunun programlı olarak değiştirilmemesi gerektiğine, kameradan gelen değerli bilgilerin olduğuna karar vermeleri nedeniyle olduğunu düşünüyorum. (Bilmiyorum, bir Meta Veri> Yakalama Zamanını Düzenle ... menü öğesi varken neden böyle olmalıdır?)
Ancak, SDK sizi bu sınırlamalardan biriyle yakalamaya çalıştığında, genellikle bir kaçış kapısı vardır. Örneğin, ExifTool'u yükleyebilir ve Lua'dan arayabilirsiniz. Bu mükemmel bir çözüm değil, çünkü o zaman katalog meta verileri ve fotoğraf meta verileri arasında bir tutarsızlığa sahip olursunuz, ancak Lightroom, fotoğrafın üzerine bir rozet yerleştirir ve tıklandığında meta verileri fotoğraftan yeniden yükleyerek çakışmayı çözmenize izin verir.
(Böyle bir eklentisi kullanıldığında Kataloğu Ayarları iletişim seçeneği seti "XMP içine otomatik olarak yazma değişiklikleri" sahip olmak isteyeceksiniz. Aksi takdirde, daha kolay iki yönlü çatışma, katalog oluşturmak, hem de yapmak ve fotoğraf var metadata Lightroom, iki meta verinin nasıl birleştirileceğini bilmez, bir tanesini seçmenizi sağlar ve diğer meta veri kopyasının üzerine yazar.)