Получение правильной метки времени для изображения в Aperture

Вопрос для разработчиков Aperture и Cocoa...

Я использую плагин FlickrExport от Aperture и @Fraser Speirs для управления моими фотографиями и загрузки их на Flickr. FlickrExport устанавливает пользовательские теги в Aperture с идентификатором фотографии Flickr (среди прочего), чтобы вы могли видеть, какие изображения были экспортированы. Я также выкладываю фотографии прямо на Flickr со своего iPhone по электронной почте (единственный способ сохранить данные EXIF ​​без изменений).

Я пытаюсь создать сценарий Python, который будет опрашивать мой поток Flickr и идентифицировать изображения, которые существуют в обоих пространствах, но не имеют пользовательских тегов Aperture, которые указывают, что фотография также была загружена в Flickr. Обычно я работал хорошо, пока я не перешел на Lion, и теперь я нахожу некоторые дыры.

Flickr и Aperture имеют ужасную / несуществующую обработку часового пояса, а временные метки EXIF ​​не фиксируют часовой пояс. Временная метка изображения просто говорит: "14 июля в 10:03". Если системный часовой пояс моего компьютера установлен на Бостон (США / Восток), когда я импортирую изображение в Aperture, Aperture отобразит его как 7/14/11 10:03:00 AM EDT, Если я снова импортирую то же самое изображение, но для моего системного часового пояса будет задан Лос-Анджелес (США / Тихий океан), дата изображения будет отображаться как 7/14/11 10:03:00 AM PDT, Хорошо, это сбивает с толку и неправильно (если часовой пояс не выражен, ни один не должен подразумеваться).

Теперь давайте переключим домены. Я использую ScriptingBridge для взаимодействия с Aperture через Python. NSDate, возвращаемое при извлечении значения для тега ImageDate EXIF, корректируется с учетом текущего часового пояса системы (в моем случае, США / Восточный).

Для изображения, импортированного, когда системный часовой пояс был установлен на США / Восток:

>>> aperture = ScriptingBridge.SBApplication.applicationWithBundleIdentifier_("com.apple.Aperture")
>>> aperture.selection()[0].EXIFTags().objectWithName_("ImageDate").value().get()
2011-07-14 10:43:37 −0400

Для изображения, импортированного, когда системный часовой пояс был установлен в США / Тихоокеанский регион:

>>> aperture.selection()[0].EXIFTags().objectWithName_("ImageDate").value().get()
2011-07-14 13:43:37 −0400

Таким образом, Aperture, похоже, думает, что знает часовой пояс изображения (даже если он не был указан), но, похоже, нет способа вернуть его через ScriptingBridge. Итак, учитывая объект NSDate, могу ли я найти дату и время в их исходном часовом поясе, даже если я не знаю, что это за часовой пояс? Возможно ли это вместо этого через API плагина Aperture?

Обратите внимание, что если я использую команду "Пакетное изменение", чтобы выполнить настройку времени и установить часовой пояс, или выполнить те же настройки через панель импорта, добавляются два пользовательских тега: pictureTimeZoneName а также cameraTimeZoneName, Если pictureTimeZoneName существует, я должен быть в состоянии извлечь метку времени без каких-либо "исправлений". Но я ищу решение, которое не требует такого большого вмешательства пользователя.

0 ответов

Другие вопросы по тегам