С 21 НОЯБРЯ 2023 ГОДА ИСПРАВЛЕНИЕ КАРТЫ, ОПИСАННОЕ НИЖЕ, БОЛЬШЕ НЕ РАБОТАЕТ.
Текущий статус см. в выпуске № 41.
С 1 декабря 2018 г. функция «Карта» в версиях Lightroom без подписки перестала работать. Adobe предлагает купить подписку на Lightroom CC (120 долларов США в год) или скопировать и вставить координаты GPS в вашу любимую поисковую систему (LOL!).
Этот проект воскрешает утраченную функциональность без подписки на Lightroom CC.
Для этого мы изменим Lightroom, чтобы он использовал наш собственный ключ API Google Maps вместо 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). Пожалуйста, дайте нам знать, если вы добьетесь какого-либо прогресса в этих версиях, комментируя открытые вопросы.
Большое Спасибо! всем, кто внес свой вклад своими исследованиями и отзывами!
Вам необходимо создать свой личный ключ API Карт Google, чтобы заменить ключ Adobe.
Первый раздел данного руководства проведет вас через этот процесс. Если у вас еще нет учетной записи в Google Cloud, это также будет включать создание учетной записи и ввод платежных данных.
Перейдите в раздел «API и сервисы» > «Библиотека» и отфильтруйте по категории > «Карты».
Выберите следующие API и нажмите «Включить»:
Поскольку Lightroom вызывает только два API, ограничьте ключ API Google Maps необходимыми службами, чтобы ограничить риск злоупотреблений.
Ежемесячных бесплатных кредитов на использование Google Cloud должно быть достаточно для повседневного использования модуля Lightroom Map. Чтобы избежать сюрпризов, вам следует установить бюджеты или квоты. Бюджеты отправят оповещение по электронной почте при превышении настроенной суммы, тогда как квоты отключат API.
Мы рекомендуем настроить бюджет в 1 доллар США и первое оповещение на уровне 10%. При такой конфигурации Google отправит вам электронное письмо, если вы потратите более 10 центов собственных денег.
Если Lightroom все еще работает, закройте его сейчас.
Найдите файлы приложения Lightroom и найдите файл с именем Location.lrmodule
. Это модуль Lightroom Map. Сделайте резервную копию этого файла и сохраните ее в надежном месте.
Местоположение и имя файла могут различаться в зависимости от операционной системы и версии 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 patchluastr.py, поставляемый с этим проектом, позволяет заменять определенные строки в файлах Lua.
Для LocationMapView и AgReverseGeocodeService используйте скрипт Python patchluastr.py, чтобы заменить ключ Adobe вашим личным ключом API Карт Google:
.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
. В зависимости от разрешений вам, возможно, придется использовать «Сохранить как» , а затем скопировать измененный файл обратно в C:Program FilesAdobeLightroom
На Mac скопируйте исправленные файлы Lua обратно в /Applications/Adobe Lightroom/Adobe Lightroom.app/Contents/PlugIns/Location.agmodule/Contents/Resources/
, перезаписав исходные файлы.
Модуль «Карта» в вашей установке Lightroom теперь снова работает.
Если вы не включили API геокодирования, вы ненадолго увидите сообщения об ошибках. Однако базовые функции карты и геотегирования по-прежнему будут работать. (Примечание: некоторые пользователи сообщают, что модуль карты не работал у них, если не активирован API геокодирования)
Прежде чем играть с ними, убедитесь, что у вас есть резервная копия Locations.lrmodule!
В примерах ниже используются файлы патчей, которые можно найти в папке hacks
. Если вы еще этого не сделали, мы рекомендуем клонировать или загрузить весь проект с Github, например, нажав зеленую кнопку в правом верхнем углу этой страницы.
Примечание. Большинство этих хаков основаны на API Карт Google и, следовательно, по-прежнему требуют предварительного исправления ключа API Карт Google.
Этот патч заменяет стиль карты «Light» на 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, мы сможем видеть наши отметки на карте в 3-D! Это не очень точно, но это просто очень круто.
В файле 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 Maps предлагает собственный выбор стиля карты, который нам просто нужно включить.
После включения мы можем добавлять свои собственные записи в раскрывающееся меню. Дополнительную информацию смотрите в комментариях внутри файла патча.
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 Maps в сторонние приложения, заменив бесплатный доступ или фиксированную плату на ценообразование на основе транзакций. Подсчитывается количество запросов к API Карт Google, и после достижения определенного порога за каждый запрос взимается небольшая плата.
Новые цены Google несовместимы с продуктами, имеющими бессрочную лицензию. За классический Lightroom Adobe получила деньги только один раз, но ей придется платить Google каждый раз, когда вы используете модуль «Карта». Для Adobe это неустойчивая бизнес-модель.
Срок действия ключа Google Maps API, встроенного в старые версии Adobe Lightroom, истек 30 ноября 2018 г.
API JavaScript Карт Google позволяет встраивать Карты Google в веб-сайты и приложения.
По состоянию на декабрь 2018 года стоимость использования JavaScript API Google Maps составляет 0,007 доллара США за загрузку карты (7 долларов США/1000 долларов США). После загрузки карты взаимодействие пользователя с картой, например панорамирование, масштабирование или переключение слоев карты, не приводит к дополнительной загрузке карты.
Кроме того, по состоянию на март 2023 года версия API, запрошенная Lightroom, была устаревшей, в результате чего Lightroom загрузил несовместимую версию, что нарушило функциональность карт.
Модуль Lightroom Map вызывает Maps JavaScript API, чтобы отобразить карту внутри Lightroom. Для работы модуля Map необходим доступ к этому API.
Доступ к этому API реализован в ресурсе Lua LOCATIONMAPVIEW.LUA.
API геокодирования Google позволяет приложениям выполнять поиск местоположений и названий мест на основе координат GPS.
По состоянию на декабрь 2018 года стоимость Google Geocoding API составляет 0,005 доллара США за запрос (5 долларов США/1000).
Модуль Lightroom Map вызывает API геокодирования для отображения названия места выбранного в данный момент изображения и при поиске местоположения. Модуль «Карта» работает без доступа к этому API, но при входе в модуль «Карта» и при переключении между изображениями на короткое время отображается сообщение об ошибке.
Мы наблюдали несколько вызовов API геокодирования при входе в модуль «Карта». Мы также не знаем, какие еще операции будут вызывать вызовы этого API. Мы рекомендуем внимательно следить за отчетами об использовании, доступными на Google Cloud Platform. Если у вас есть сомнения или это слишком дорого, отключите доступ к API геокодирования, удалив службу из ограничений API в разделе «API и службы» > «Учетные данные».
Доступ к этому API реализован в ресурсе Lua AGREVERSEGEOCODESERVICE.LUA.
Для обратного геокодирования (добавления названия местоположения в метаданные изображения на основе известных координат) Lightroom обращается к API Google с signature
параметра запроса, которая, по-видимому, рассчитывается на основе ключа API 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]
К счастью для нас, хотя API Google запрещает доступ с истекшим сроком действия подписи, API работает, если 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]
что Google с радостью принимает.
Начиная с 2018 года Google требуется учетная запись на Google Cloud Platform, в которой разрешено выставление счетов. Все транзакции API Карт Google взимаются с этого аккаунта. К счастью для нас, Google ежемесячно предоставляет каждому аккаунту кредит в размере 200 долларов США. На вашу кредитную карту будут списываться только транзакции, превышающие этот лимит.
Стоимость и условия обслуживания могут различаться в зависимости от страны. Пожалуйста, внимательно ознакомьтесь с подробностями на веб-сайте Google.
200 долларов США достаточно для более чем 28 000 загрузок карт или 40 000 вызовов API геокодирования, чего должно быть достаточно для повседневного использования модуля Lightroom Map. Чтобы избежать сюрпризов, вы можете установить бюджеты или квоты. Бюджеты отправят оповещение по электронной почте при превышении настроенной суммы, тогда как квоты отключат API.
Мы рекомендуем настроить бюджет в 1 доллар США и первое оповещение на уровне 10%. При такой конфигурации Google отправит вам электронное письмо, если вы потратите более 10 центов собственных денег.