اعتبارًا من 21 نوفمبر 2023، لن يعمل إصلاح الخريطة كما هو موثق أدناه بعد الآن
راجع العدد رقم 41 للتعرف على الوضع الحالي.
اعتبارًا من 1 ديسمبر 2018، توقفت وظيفة الخريطة في إصدارات Lightroom بدون الاشتراك عن العمل. تقترح Adobe شراء اشتراك في Lightroom CC (120 دولارًا أمريكيًا سنويًا) أو نسخ ولصق إحداثيات GPS في محرك البحث المفضل لديك (LOL!).
يعمل هذا المشروع على إحياء الوظائف المفقودة، دون الاشتراك في Lightroom CC.
ولتحقيق ذلك، سنقوم بتعديل Lightroom لاستخدام مفتاح Google Maps API الخاص بنا بدلاً من مفتاح Adobe. على الرغم من أننا نحتاج إلى اشتراك مع Google، فإن هذا الاشتراك يتضمن 200 دولارًا أمريكيًا من أرصدة الاستخدام المجاني شهريًا، وهو ما يجب أن يكون كافيًا للمستخدمين العاديين لوحدة Lightroom Map.
يتطلب هذا الإجراء مهارات تقنية معلومات متوسطة إلى متقدمة. أخطاء قد تؤدي إلى تعطيل تثبيت Lightroom! إذا كنت لا تعرف ما تفعله، فاطلب المساعدة من شخص دعم تكنولوجيا المعلومات المعين لديك. نحن لسنا شخص دعم تكنولوجيا المعلومات الخاص بك!
احتفظ بسرية مفتاح Google Maps API
قد يؤدي الفشل في حماية مفتاح Google Maps API إلى فرض رسوم غير متوقعة على حسابك في Google Cloud.
الضمان باطل! نحن لسنا مسؤولين عن كسر تثبيت Lightroom الخاص بك. نحن لسنا مسؤولين عن أي رسوم على حساب Google Cloud الخاص بك.
تم تطوير هذا الإجراء واختباره باستخدام Lightroom 6.14 على نظام التشغيل Windows 10.
أبلغ المستخدمون أن هذا يعمل أيضًا مع:
لا يعمل التصحيح حاليًا مع Lightroom 5.x (الإصدار رقم 8) أو Lightroom 7.x (الإصدار رقم 10). يرجى إعلامنا إذا قمت بإحراز أي تقدم في هذه الإصدارات من خلال التعليق في القضايا المفتوحة.
شكرا جزيلا لك! لكل من ساهم بأبحاثهم وملاحظاتهم!
تحتاج إلى إنشاء مفتاح Google Maps API الشخصي الخاص بك ليحل محل مفتاح Adobe.
سيأخذك القسم الأول في هذا الدليل خلال هذه العملية. إذا لم يكن لديك حساب بالفعل على Google Cloud، فسيتضمن ذلك أيضًا إنشاء الحساب وإدخال تفاصيل الفوترة.
انتقل إلى واجهات برمجة التطبيقات والخدمات > المكتبة وقم بالتصفية حسب الفئة > الخرائط.
حدد واجهات برمجة التطبيقات التالية وانقر فوق "تمكين":
نظرًا لأن Lightroom يستدعي واجهتي API فقط، قم بتقييد مفتاح Google Maps API بالخدمات المطلوبة للحد من مخاطر إساءة الاستخدام.
يجب أن تكون أرصدة الاستخدام المجانية الشهرية لـ Google Cloud كافية للاستخدام غير الرسمي لوحدة Lightroom Map. لتجنب المفاجآت، يجب عليك تحديد الميزانيات أو الحصص. سترسل الميزانيات تنبيهًا عبر البريد الإلكتروني عند تجاوز المبلغ الذي تم تكوينه، بينما ستؤدي الحصص إلى إيقاف تشغيل واجهة برمجة التطبيقات.
نوصي بتكوين ميزانية بقيمة 1 دولار أمريكي والتنبيه الأول بنسبة 10%. باستخدام هذا التكوين، سترسل لك Google بريدًا إلكترونيًا إذا أنفقت أكثر من 10 سنتات من أموالك الخاصة.
إذا كان Lightroom لا يزال قيد التشغيل، فأغلقه الآن.
حدد موقع ملفات تطبيق Lightroom، وابحث عن ملف يسمى Location.lrmodule
. هذه هي وحدة خريطة Lightroom. قم بعمل نسخة احتياطية من هذا الملف واحتفظ به في مكان آمن.
قد يختلف الموقع واسم الملف باختلاف نظام التشغيل وإصدار Lightroom.
C:Program FilesAdobeLightroomLocation.lrmodule
/Applications/Adobe Lightroom/Adobe Lightroom.app
، وانقر بزر الماوس الأيمن وحدد إظهار محتوى الحزمة . وحدة الخريطة هي /Contents/PlugIns/Location.agmodule
.ملاحظة هامة: إذا تركت النسخة الاحتياطية في المجلد الأصلي، فيجب تغيير امتداد الملف (على سبيل المثال من Location.lrmodule إلى Location.lrmodule_bak). وإلا فقد يستمر التقاطه بواسطة Lightroom بدلاً من الملف المُصحح.
على نظام التشغيل Windows، استخدم Resource Hacker لاستخراج موارد Lua التي نحتاج إلى تصحيحها:
Location.lrmodule
باستخدام Resource HackerLUA
LOCATIONMAPVIEW.LUA
، انقر بزر الماوس الأيمن وحدد حفظ مورد الحاويةAGREVERSEGEOCODESERVICE.LUA
، انقر بزر الماوس الأيمن وحدد حفظ مورد الحاويةLOCATIONDEBUGPANEL.LUA
، انقر بزر الماوس الأيمن وحدد حفظ مورد الحاوية على نظام Mac، يمكن الوصول إلى ملفات Lua مباشرةً داخل Location.agmodule
:
Location.agmodel
وحدد إظهار محتوى الحزمة/Contents/Resources/
LocationMapView.lua
و AgReverseGeocodeService.lua
و LocationDebugPanel.lua
إلى الموقع المطلوب للتصحيحإذا لم تكن قد قمت بذلك بالفعل، فقم بتثبيت Python 3.
يمكّنك برنامج Python script patchluastr.py المتوفر مع هذا المشروع من استبدال سلاسل معينة في ملفات Lua.
بالنسبة إلى LocationMapView وAgReverseGeocodeService، استخدم برنامج Python النصي patchluastr.py لاستبدال مفتاح Adobe بمفتاح Google Maps API الشخصي الخاص بك:
.bin
، وإلا فلن يتمكن Resource Hacker من العثور عليه في الخطوة التالية. قم بتشغيل patchluastr.py
على النحو التالي، مع استبدال {your-api-key}
بمفتاح Google API (بدون الأقواس المتعرجة): patchluastr.py LOCATIONMAPVIEW.LUA "client=gme-adobesystems" "key={your-api-key}" -o LOCATIONMAPVIEW.tmp
patchluastr.py LOCATIONMAPVIEW.tmp "3.12" "3.51" -o LOCATIONMAPVIEW.bin
patchluastr.py AGREVERSEGEOCODESERVICE.LUA "client=gme-adobesystems" "key={your-api-key}" -o AGREVERSEGEOCODESERVICE.bin
orignal-name.lua.bak
. ثم قم بتشغيل patchluastr.py
على النحو التالي، مع استبدال {your-api-key}
بمفتاح Google API (بدون الأقواس المتعرجة): patchluastr.py LocationMapView.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o LocationMapView.lua.tmp
patchluastr.py LocationMapView.lua.tmp "3.12" "3.51" -o LocationMapView.lua
patchluastr.py AgReverseGeocodeService.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o AgReverseGeocodeService.lua
باستخدام الملف LocationDebugPanel، استخدم برنامج Python النصي patchluastr.py لتعطيل التحقق من التوقيع:
patchluastr.py LOCATIONDEBUGPANEL.LUA "nature" "street" -o LOCATIONDEBUGPANEL.bin
patchluastr.py LocationDebugPanel.lua.bak "nature" "street" -o LocationDebugPanel.lua
إذا فشل تشغيل patchluastr.py مع حدوث خطأ مثل TypeError: unsupported operand type(s)
، فتأكد من تثبيت Python 3 لديك. إذا كان لديك إصدارات متعددة من Python مثبتة، فيمكنك تشغيل البرنامج النصي بشكل صريح مع Python 3 عن طريق بادئة الأمر بـ python3
:
python3 patchluastr.py {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.lua
تجريبي : بالنسبة لمستخدمي Windows الذين لا يريدون تثبيت Python، قمت بإنشاء إصدار قابل للتنفيذ من patchluastr
متاح هنا، والذي لا يتطلب تثبيت Python. سطر الأوامر هو:
patchluastr.exe {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.bin
ملاحظة : أبلغ بعض المستخدمين عن الحاجة إلى تصحيحات إضافية. إذا لم تتمكن من تشغيل الخريطة أو توقفت الخريطة عن العمل، فراجع الإصدار رقم 12 والإصدار رقم 19. لم نلاحظ هذه المشكلة في الولايات المتحدة، لذا قد يعتمد الأمر على بلدك.
على نظام التشغيل Windows، استخدم Resource Hacker لاستبدال موارد Lua بإصدارها المصحح.
Location.lrmodule
باستخدام Resource HackerLUA
LOCATIONMAPVIEW.LUA
، انقر بزر الماوس الأيمن وحدد استبدال المورد ، ثم انقر فوق تحديد ملف وانتقل إلى الإصدار المصحح من هذا المورد. ثم انقر فوق استبدالAGREVERSEGEOCODESERVICE.LUA
انقر بزر الماوس الأيمن وحدد استبدال المورد ، ثم انقر فوق تحديد ملف وانتقل إلى الإصدار المصحح من هذا المورد. ثم انقر فوق استبدال .LOCATIONDEBUGPANEL.LUA
انقر بزر الماوس الأيمن وحدد استبدال المورد ، ثم انقر فوق تحديد ملف وانتقل إلى الإصدار المصحح من هذا المورد. ثم انقر فوق استبدالLocation.lrmodule
.lrmodule . اعتمادًا على الأذونات، قد يتعين عليك استخدام حفظ باسم ثم نسخ الملف المعدل مرة أخرى إلى C:Program FilesAdobeLightroom
على نظام Mac، انسخ ملفات Lua المصححة مرة أخرى إلى /Applications/Adobe Lightroom/Adobe Lightroom.app/Contents/PlugIns/Location.agmodule/Contents/Resources/
، مع الكتابة فوق الملفات الأصلية.
تعمل الآن وحدة الخريطة الموجودة في تثبيت Lightroom مرة أخرى.
إذا لم تقم بتمكين Geo Coding API، فسوف ترى رسائل خطأ لفترة وجيزة. ومع ذلك، ستظل وظيفة الخريطة ووضع العلامات الجغرافية الأساسية تعمل. (ملاحظة: أبلغ بعض المستخدمين أن وحدة الخريطة لم تعمل معهم ما لم يتم تنشيط Geo Coding API)
تأكد جيدًا من أن لديك نسخة احتياطية من Locations.lrmodule قبل اللعب بها!
تستخدم الأمثلة أدناه ملفات التصحيح، والتي يمكن العثور عليها في المجلد hacks
. إذا لم تقم بذلك بعد، فنوصيك باستنساخ المشروع الكامل أو تنزيله من Github، على سبيل المثال عن طريق النقر على الزر الأخضر الموجود في أعلى يمين هذه الصفحة.
ملاحظة: تعتمد معظم هذه الاختراقات على Google Maps API، وبالتالي لا تزال تتطلب إصلاح مفتاح Google Maps API أولاً.
يستبدل هذا التصحيح نمط الخريطة "الخفيف" بـ OpenStreeMap.
بعد تصحيح مفتاح API، قم بتنفيذ ما يلي:
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/osm.patch -o LOCATIONMAPVIEW-osm.bin
استخدم الآن LOCATIONMAPVIEW-osm.bin
مع Resource Hacker بدلاً من LOCATIONMAPVIEW.bin
، وبعد ذلك يتوفر OpenStreetMap كنمط خريطة "Light".
رصيد الاختراق: @pbb72
وهذا أمر جذري للغاية؛ إذا قمنا بتمكين ميزة StreetView، فيمكننا رؤية دبابيس خريطتنا بشكل ثلاثي الأبعاد! إنها ليست دقيقة جدًا، لكنها رائعة جدًا.
يوجد بالفعل تعليمات برمجية في ملف Lightroom لتمكين ميزة StreetView، لذا يبدو أن Adobe كانت تعمل عليها، ولكن ربما أوقفتها لأنها لم تكن جيدة بما يكفي.
لتمكين هذه الميزة المخفية، قم بتشغيل:
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/streetview.patch -o LOCATIONMAPVIEW-sv.bin
رصيد الاختراق ولقطات الشاشة: @pbb72
تقدم بعض المواقع على الأرض صورًا جوية بمنظور قطري (بدلاً من العرض من أعلى إلى أسفل). ملاحظة: هذه الصور ليست دقيقة للغاية.
لتمكين عنصر التحكم هذا، قم بتشغيل:
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/tiltmap.patch -o LOCATIONMAPVIEW-tilt.bin
مع هذا التصحيح، ستظهر عناصر تحكم جديدة في أسفل اليمين إذا كانت البيانات متاحة للموقع الحالي. قد يتعين عليك التكبير حتى يظهر عنصر التحكم.
رصيد الاختراق: @pbb72
لا يمكننا إضافة المزيد من الخرائط إلى محدد نمط خريطة Lightroom (على ما نعتقد). لكن لحسن الحظ، توفر خرائط Google أداة تحديد نمط الخريطة الخاصة بها، والتي نحتاج فقط إلى تمكينها.
بمجرد التمكين، يمكننا إضافة إدخالاتنا الخاصة إلى القائمة المنسدلة. راجع التعليقات داخل ملف التصحيح لمزيد من المعلومات.
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/mapselector.patch -o LOCATIONMAPVIEW-sel.bin
رصيد الاختراق: @pbb72
يعرض هذا التصحيح خطأ JavaScript ورسائل تصحيح الأخطاء في نافذة أسفل الخريطة، مما سيكون مفيدًا جدًا عند تطوير المزيد من الاختراقات. ربما لا تريد تمكين هذا بشكل دائم، لذا قم بعمل نسخة احتياطية من وحدة المواقع قبل تطبيق هذا الاختراق.
قم بتشغيل البرنامج النصي hacks/jsconsole.patch:
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/jsconsole.patch -o LOCATIONMAPVIEW-con.bin
يقوم البرنامج النصي بما يلي:
استمتع الآن برسائل الخطأ القابلة للقراءة بالفعل!
رصيد الاختراق ولقطات الشاشة: @pbb72
في أوائل عام 2018، قامت Google بتجديد نموذج التسعير لدمج خرائط Google في تطبيقات الطرف الثالث، والتغيير من الوصول المجاني أو الرسوم الثابتة إلى التسعير القائم على المعاملات. يتم حساب عدد الطلبات المقدمة إلى واجهات برمجة تطبيقات خرائط Google، وبعد الحد الأدنى، يتم فرض رسوم بسيطة على كل طلب.
لا تتوافق أسعار Google الجديدة مع المنتجات المرخصة بشكل دائم. مع Lightroom الكلاسيكي، حصلت Adobe على المال مرة واحدة فقط، ولكن سيتعين عليها أن تدفع لـ Google في كل مرة تستخدم فيها وحدة الخريطة. بالنسبة لشركة Adobe، لا يعد هذا نموذج عمل مستدامًا.
انتهت صلاحية مفتاح Google Maps API المضمن في الإصدارات القديمة من Adobe Lightroom في 30 نوفمبر 2018.
تسمح واجهة برمجة تطبيقات JavaScript لخرائط Google بتضمين خرائط Google في مواقع الويب والتطبيقات.
اعتبارًا من ديسمبر 2018، تبلغ تكلفة واجهة برمجة تطبيقات JavaScript لخرائط Google 0.007 دولارًا أمريكيًا لكل تحميل خريطة (7/1000 دولارًا أمريكيًا). بمجرد تحميل الخريطة، لا تؤدي تفاعلات المستخدم مع الخريطة، مثل التحريك أو التكبير/التصغير أو تبديل طبقات الخريطة، إلى إنشاء تحميلات خريطة إضافية.
بالإضافة إلى ذلك، اعتبارًا من مارس 2023، تم إهمال إصدار واجهة برمجة التطبيقات (API) الذي طلبته Lightroom، مما تسبب في تحميل Lightroom لإصدار غير متوافق، مما أدى إلى تعطيل وظيفة الخرائط.
تستدعي وحدة Lightroom Map واجهة برمجة تطبيقات Maps JavaScript لعرض الخريطة داخل Lightroom. الوصول إلى واجهة برمجة التطبيقات هذه مطلوب حتى تعمل وحدة الخريطة.
يتم تنفيذ الوصول إلى واجهة برمجة التطبيقات (API) هذه في مورد Lua LOCATIONMAPVIEW.LUA.
تتيح واجهة برمجة تطبيقات Google Geocoding API للتطبيقات البحث في المواقع والبحث عن أسماء الأماكن بناءً على إحداثيات نظام تحديد المواقع العالمي (GPS).
اعتبارًا من ديسمبر 2018، تبلغ تكلفة Google Geocoding API 0.005 دولارًا أمريكيًا لكل طلب (5 دولارات أمريكية / 1000 دولار أمريكي).
تستدعي وحدة Lightroom Map واجهة برمجة تطبيقات الترميز الجغرافي لعرض اسم المكان للصورة المحددة حاليًا وعند البحث عن موقع. تعمل وحدة الخريطة دون الوصول إلى واجهة برمجة التطبيقات هذه، ولكنها ستظهر رسالة خطأ لفترة وجيزة عند الدخول إلى وحدة الخريطة وعند التبديل بين الصور.
لقد لاحظنا استدعاءات متعددة لواجهة برمجة تطبيقات الترميز الجغرافي عند الدخول إلى وحدة الخريطة. لا نعرف أيضًا ما هي العمليات الأخرى التي ستنشئ استدعاءات لواجهة برمجة التطبيقات هذه. نوصي بمراقبة تقارير الاستخدام المتاحة على Google Cloud Platform عن كثب. إذا كان لديك شك أو كان ذلك مكلفًا للغاية، فقم بتعطيل الوصول إلى واجهة برمجة تطبيقات الترميز الجغرافي عن طريق إزالة الخدمة من قيود واجهة برمجة التطبيقات ضمن واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
يتم تنفيذ الوصول إلى واجهة برمجة التطبيقات (API) هذه في مورد Lua AGREVERSEGEOCODESERVICE.LUA.
بالنسبة للترميز الجغرافي العكسي (إضافة اسم الموقع إلى البيانات الوصفية للصورة استنادًا إلى الإحداثيات المعروفة)، يصل Lightroom إلى Google API باستخدام signature
معلمة الاستعلام الذي يبدو أنه تم حسابه استنادًا إلى مفتاح واجهة برمجة تطبيقات Adobe (منتهي الصلاحية) ومفتاح ترخيص Lightroom الخاص بك. يبدو استدعاء API المخالف كما يلي:
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&signature=[string-of-characters]
لحسن الحظ بالنسبة لنا، بينما ترفض واجهة برمجة تطبيقات Google الوصول بتوقيع منتهي الصلاحية، فإن واجهة برمجة التطبيقات تعمل إذا تمت إزالة signature=[string-of-characters]
من عنوان URL، أو عند استبدال signature
باسم معلمة غير معروفة. لسوء الحظ، signature
السلسلة غير موجود في أي ملف Lua.
اتضح أن الوظيفة مخفية عن طريق تفكيك السلاسل. يتم حساب التوقيع في LocationDebugPanel.lua
وتكون nature
السلسلة في هذا الملف جزءًا من signature
اسم المعلمة. سيؤدي استبدال nature
street
إلى تغيير استدعاء واجهة برمجة التطبيقات (API) إلى:
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&sigstreet=[string-of-characters]
الذي تقبله جوجل بسعادة.
بدءًا من عام 2018، تطلب Google حسابًا على Google Cloud Platform ممكّنًا للفوترة. يتم تحميل جميع معاملات Google Maps API على هذا الحساب. ولحسن الحظ بالنسبة لنا، تمنح Google كل حساب رصيدًا شهريًا بقيمة 200 دولار أمريكي. فقط المعاملات التي تتجاوز هذا الحد ستتم محاسبتها على بطاقتك الائتمانية.
قد تختلف التكاليف وشروط الخدمة حسب البلد. يرجى مراجعة التفاصيل بعناية على موقع جوجل.
200 دولار أمريكي يكفي لأكثر من 28000 عملية تحميل للخرائط أو 40000 مكالمة إلى Geo Coding API، وهو ما يجب أن يكون كافيًا للاستخدام غير الرسمي لوحدة Lightroom Map. لتجنب المفاجآت، يمكنك تعيين الميزانيات أو الحصص. سترسل الميزانيات تنبيهًا عبر البريد الإلكتروني عند تجاوز المبلغ الذي تم تكوينه، بينما ستؤدي الحصص إلى إيقاف تشغيل واجهة برمجة التطبيقات.
نوصي بتكوين ميزانية بقيمة 1 دولار أمريكي والتنبيه الأول بنسبة 10%. باستخدام هذا التكوين، سترسل لك Google بريدًا إلكترونيًا إذا أنفقت أكثر من 10 سنتات من أموالك الخاصة.