AppleScript: получение данных о местоположении изображения

Я пытаюсь написать сценарий Automator, который включает, среди прочего, получение данных о местоположении GPS из изображения. Это будет служба поиска.

Из того, что мне удалось обнаружить до сих пор, это включает в себя запуск AppleScript и общение с безголовым Image Eventsприложением.

Отсюда, как мне получить широту и долготу изображения?

Я знаю, что есть приложения, которые могут читать эти данные, в том числе из командной строки, но мне было интересно, доступно ли это для MacOS без добавления чего-либо.

Я не верю, что Image Events может получить этот тип метаданных из фотографии, однако mdlsможет это сделать, например, mdls -name kMDItemLatitude -name kMDItemLongitude /path/to/photoоднако все зависит от того, что именно вы пытаетесь сделать с этой информацией. Я лично предпочитаю использовать, exiftoolоднако вам придется установить его. Если бы вы предоставили больше информации о том, что вы пытаетесь сделать, и были бы немного более явными и конкретными, было бы легче написать и ответить.
@ user3439894 Выглядит хорошо. Можете ли вы изменить свой комментарий на ответ, чтобы я мог его принять?
Я могу, однако, вам нужна дополнительная информация или вы согласны с тем, что я сказал?
@user3439894 user3439894 Ваш комментарий ответил на вопрос, который я задал, так что этого должно быть достаточно. Однако, если вы знаете, как использовать эту -nullMarkerопцию (похоже, она не работает для меня, даже когда я использую эту rawопцию) или есть ли альтернатива для файлов RAW, это будет бонусом. В противном случае это хорошо.

Ответы (1)

Я не верю, что Image Events может получить этот тип метаданных из фотографии, однако mdlsможет это сделать, например, mdls -name kMDItemLatitude -name kMDItemLongitude /path/to/photoоднако все зависит от того, что именно вы пытаетесь сделать с этой информацией. Я лично предпочитаю использовать, exiftoolоднако вам придется установить его.

Чтобы ответить на вопрос в вашем комментарии:

Если вы запрашиваете attributeNameпри использовании -raw, а attributeNameрезультат не существует, вывод будет буквально (null), и если вы хотите, чтобы это было что-то еще, используйте −nullMarker markerString, например:−nullMarker "Does Not Exist"

mdls -name kMDItemFake -raw -nullMarker "Does Not Exist" /path/to/photo

В приведенном выше примере команда kMDItemFakeявляется фальшивым kMDItemэлементом, поэтому эта команда выведет: Does Not Existвместо (null).

Другими словами, если, например, у фотографии нет kMDItemLatitudeинформации, и вы запрашиваете ее, вывод будет (null)при использовании mdls -name kMDItemLatitude -raw. Чтобы изменить это, используйте −nullMarker markerString.

Если a kMDItemне существует, и вы не хотите, чтобы вывод при использовании использовался, mdls -name attar -rawиспользуйте mdls -name attar -raw −nullMarker '' /path/to/photo.

Спасибо за Ваш ответ. У меня есть связанный с этим вопрос: apple.stackexchange.com/questions/271289/… , по которому у вас может быть некоторое представление.