Вопрос для разработчиков Aperture и Cocoa…
Я использую плагин Aperture и @Fraser Speirs 'FlickrExport, чтобы управлять моими фотографиями и загружать их в 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
, я смогу извлечь временную метку без каких-либо «исправлений».Но я ищу решение, которое не требует такого большого вмешательства пользователя.