Скрипт импорта и экспорта апертуры - PullRequest
1 голос
/ 01 ноября 2019

Поскольку macOS Catalina отказывается от поддержки Aperture, мне нужно переместить мою библиотеку в другое приложение. Mylio имеет отличный инструмент импорта, который переносит почти всю структуру библиотеки и метаданные, но теряет некоторые настройки. Чтобы сохранить их, я пытаюсь написать скрипт Apple, который экспортирует все изображения (с примененными корректировками) в мою библиотеку и повторно импортирует их в один и тот же проект перед удалением оригинала.

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

tell application "Aperture"
  tell library 1
        set projects to (get every project)
        repeat with i from 1 to count of projects
            tell (item i of projects)
                export its every image version naming folders with folder naming policy ¬
                    "Project Name" using export setting ¬
                    "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
            end tell
        end repeat
  end tell
end tell

Однако, когда я пытаюсь запустить этот скрипт, я получаю сообщение об ошибке

apertureExportImport.applescript:704:712:
execution error: Aperture got an error: Can’t make {project id "1ixjjya6T+Sb3pFmhRK8Fg"} into type project. (-1700)

Я думаю, проблема в set projects to (get every project), но яне могу найти в сети примеров, из которых можно выяснить, что еще можно написать здесь.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

В конце концов все заработало (все, кроме удаления исходных изображений после экспорта и повторного импорта, но это можно сделать вручную, пометив или обозначив цветом все изображения, которые будет обрабатывать сценарий).

tell application "Aperture"
  with timeout of 86400 seconds
    activate
    set exportSetting to export setting "JPEG - Original Size"
    set folderPolicy to folder naming policy "Project Name"
    set exportFolder to "/Users/<user>/Desktop"
    -- Alternatively, use
    -- set exportFolder to (choose folder with prompt "Choose an export folder")

    tell library 1
    repeat with proj in projects
      set imageSel to every image version in proj where flagged is true
      export imageSel naming folders with folderPolicy using exportSetting to exportFolder
        set importFolder to exportFolder & "/" & name of proj
        import importFolder by referencing into proj
    end repeat
    end tell
  end timeout
end tell

Один важный урок, который было трудно выучить, заключается в том, что exportSetting и folderPolicy должны быть заданы в контексте всей библиотеки (т.е. в самом начале сценария), а не на уровне проекта, чтобы избежатьошибка

execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728)
2 голосов
/ 01 ноября 2019

Я не использую Aperture, поэтому я могу сделать только обоснованное предположение:

Из сообщения об ошибке я могу быть достаточно уверен, что project - это AppleScriptобъект, в частности элемент , который, как я предполагаю, из вашего сценария принадлежит объекту library. В этом случае почти наверняка будет форма элемента множественного числа с именем "projects", уже определенная, которая будет относиться к набору (то есть множеству) элементов, которые имеют тип project.

. Следовательно,следующая строка:

set projects to (get every project)

проблематично, потому что вы пытаетесь переопределить объект класса, который принадлежит AppleScript. Фактически, projects будет сокращением для every project, так что это уже должно быть определено так, как вы хотите, и простого удаления этой строки должно быть достаточно.

В отдельной заметке это выглядиткак (из вашего сценария) команде export можно передать коллекцию объектов в качестве ее прямого параметра, который вы делаете с export its every image.... Предполагая, что это действительно так, возможно, вы сможете экспортировать все изображения сразу во все проекты:

tell application "Aperture" to export every image version in every project of library 1 ¬
    naming folders with folder naming policy "Project Name" using export setting ¬
    "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
...