मैंने लुआ के साथ कुछ नहीं किया है
लुआ शायद सबसे सरल, सबसे साफ सुथरी प्रोग्रामिंग भाषा है जिसे मैं जानता हूं। (और मुझे कुछ पता है ।)
लुआ की सादगी भी इसकी सबसे बड़ी कमजोरी है: डिजाइन के हिसाब से छोटी, साफ भाषा होने के नाते इसमें बहुत सारी चीजें नहीं हैं, जो आपको जावा, या बैटरी जैसी औद्योगिक-श्रेणी की भाषा से आने पर मिलेंगी। -पाइथन की तरह भाषा को शामिल किया गया।
Lua को C द्वारा विस्तारित करने के लिए डिज़ाइन किया गया है, जिसका इस मामले में मतलब है Lightroom का SDK। यह बहुत अच्छा है अगर Adobe ने उन उपकरणों को प्रदान करने के लिए काम किया है जिनकी आपको आवश्यकता है जो कि Lua में निर्मित नहीं हैं, लेकिन हर बार और फिर आप शायद अपने आप को बाहरी उपकरणों को कॉल करके चीजों को प्राप्त करने के लिए कहेंगे।
क्या Lightroom API को हुक करना आसान है
इसके बारे में केवल मुश्किल हिस्सा यह है कि आपको अपने स्रोत कोड को एक विशेष तरीके से संरचना करने की आवश्यकता है और Info.lua
अपने प्लगइन के बारे में लाइटरूम को बताने के लिए एक विशेष फ़ाइल प्रदान करें। यह सब एसडीके डॉक्स में बताया गया है । एसडीके में कई कामकाजी प्लगइन्स शामिल हैं, जिनमें से एक काफी विस्तृत "हैलो वर्ल्ड" प्लगइन शामिल है, जिसे उपयोगी शुरुआती कोड के लिए परिमार्जन किया जा सकता है।
क्या इसे विकास के लिए किसी विशेष उपकरण की आवश्यकता है?
आप बस एक पाठ संपादक के साथ प्राप्त कर सकते हैं।
लाइटरूम में कोई डिबगिंग सुविधा नहीं है, लेकिन एसडीके में डिबग लॉगिंग सुविधा है। आप इन संदेशों WinDbg
को Windows या Console
OS X पर पकड़ सकते हैं
एक और हालिया विकास ओपन सोर्स ZeroBrane Studio Lua IDE है। आप इसे किसी अन्य टेक्स्ट एडिटर के बजाय उपयोग कर सकते हैं, लेकिन वास्तव में अच्छा सा यह है कि इसे अपने रनिंग प्लगइन से अटैच करना संभव है, जो इसे रन करते ही आपको डीबग कर देता है। मैंने यह कोशिश की है, और यह फिक्सिंग / पुनः लोड / पुनः आरंभ डिबगिंग चक्र समय को कम करने में मदद करता है।
क्या मैं ऊपर बताए गए कार्यों को आसानी से करने के लिए स्क्रिप्ट लिख सकता हूं?
मुझे नहीं लगता कि या तो टास्क 100% डू-सक्षम है जो केवल लाइटरूम एसडीके का उपयोग कर सकता है, लेकिन यह आपके लिए बहुत काम कर सकता है।
JPG एक्सटेंशन के साथ प्रत्येक स्टैक में फ़ाइल का चयन करें और इसे स्टैक के ऊपर बनाएं
यहाँ कुछ अस्पष्ट लुआ जैसे कोड हैं जो आपको लगभग सभी तरह से मिलते हैं:
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
दुर्भाग्य से, मुझे उस अंतरतम टिप्पणी लाइन की कार्रवाई को करने के लिए एसडीके में एक रास्ता नहीं दिखता है, कम से कम एलआर 5 के रूप में। सबसे अच्छा मैं साथ आ सकता हूं कॉल करना है catalog:setSelectedPhotos(peer)
, फिर उपयोगकर्ता को छोड़ दें वास्तव में स्टैक को फिर से चालू करने के लिए नंबर बैज पर क्लिक करें।
(मौजूदा) RAW फ़ाइल से (मौजूदा) JPEG फ़ाइल की मेटाडेटा की एक सामूहिक प्रतिलिपि बनाएँ
आप इसमें से कुछ मौजूदा एसडीके के साथ कर सकते हैं, लेकिन सीमाएं हैं।
उदाहरण के लिए, जब आप EXIF फ़ील्ड का मान पढ़ सकते हैं , तो मान सेटdateTimeOriginal
करने के लिए SDK में कोई सुविधा नहीं है । मुझे लगता है कि यह इसलिए है क्योंकि लाइटरूम डेवलपर्स ने तय किया कि इसे कभी भी प्रोग्रामेटिक रूप से नहीं बदला जाना चाहिए, क्योंकि यह कैमरे से कीमती जानकारी है। (ऐसा क्यों होना चाहिए जब मेटाडेटा> कैप्चर टाइम संपादित करें ... मेनू आइटम मुझे नहीं पता, लेकिन वहां आपके पास है।)
लेकिन, जब भी एसडीके आपको इन सीमाओं में से किसी एक के साथ फंसाने की कोशिश करता है, तो अक्सर पलायन होता है। आप ExifTool स्थापित कर सकते हैं और उदाहरण के लिए लुआ से इसे कॉल कर सकते हैं । यह एक सही समाधान नहीं है, क्योंकि आपके पास कैटलॉग मेटाडेटा और फोटो मेटाडेटा के बीच असंगतता है, लेकिन लाइटरूम नोटिस करेगा और फोटो पर एक बैज लगाएगा, जिसे क्लिक करने पर आप फोटो से मेटाडेटा को पुनः लोड करके संघर्ष को हल कर देंगे।
(आप इस तरह के एक प्लगइन का उपयोग करते समय कैटलॉग सेटिंग्स संवाद में सेट "स्वचालित रूप से एक्सएमपी में परिवर्तन लिखना" विकल्प चाहते हैं। अन्यथा, आप दो-तरफ़ा संघर्ष बनाने में आसान बनाते हैं, जहां कैटलॉग और फोटो मेटाडेटा दोनों हैं। परिवर्तित। लाइटरूम को मेटाडेटा के दो सेटों को मर्ज करने का तरीका नहीं पता है, यह आपको एक चुनता है, और यह इसके साथ अन्य मेटाडेटा कॉपी को अधिलेखित करता है।)