Appscript для написания ITunes обложек - PullRequest
0 голосов
/ 29 октября 2009

Я пытаюсь захватить изображение из файла pict и вставить в трек в iTunes, используя python appscript. Я сделал что-то вроде этого:

imFile = open('/Users/kartikaiyer/temp.pict','r')
data = imFile.read()
it = app('iTunes')
sel = it.current_track.get()
sel.artworks[0].data_.set(data[513:])

Я получаю ошибку OSERROR: -1731 СООБЩЕНИЕ: Неизвестный объект

Подобный код appleScript выглядит так:

tell application "iTunes"
    set the_artwork to read (POSIX file "/Users/kartikaiyer/temp.pict") from 513 as picture
    set data of artwork 1 of current track to the_artwork
end tell

Я пытался использовать ASTranslate, но он никогда не создает экземпляр the_artwork и затем выдает ошибку, когда есть ссылка на the_artwork. Может кто-нибудь помочь. Я новичок в приложениях и Python в целом.

Ответы [ 3 ]

3 голосов
/ 27 декабря 2010

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

selected = appscript.app('iTunes').selection.get()

for t in selected:
    myArt = open(/path/to/image.jpg,'r')
    data = myArt.read()
    t.artworks[1].data_.set(data) # no need to remove header but one-indexed as has said earlier
    myArt.close()

Надеюсь, это поможет.

0 голосов
/ 07 мая 2010

Команда read является частью дополнения сценариев, в которое ASTranslate не переводит. Используйте ASDictionary для создания клея для дополнений сценариев, щелкнув «Выбрать установленные дополнения сценариев» в меню «Словарь», а затем выбрав «Дополнения сценариев» из списка.

0 голосов
/ 31 октября 2009

По быстрому предположению, ссылки на Appscript, такие как ссылки AppleScript, используют индексирование 1, а не индексирование нуля, как списки Python. Поэтому вам, вероятно, нужно написать:

it.current_track.artworks[1].data_.set(...)

(Кстати, дополнительная команда get в вашем исходном скрипте не нужна, но в этом случае безвредна.)

Что касается ASTranslate, вам нужно включить флажок «Отправлять события в приложение», если вы хотите, чтобы он действительно отправлял команды приложениям и добавлениям сценариев и получал их результаты. Как правило, лучше отключить эту опцию, чтобы избежать несчастных случаев при трансляции потенциально деструктивных команд, таких как set или delete, поэтому включать ее, только если она действительно вам нужна, и быть осторожным с код, который вы запускаете, когда вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...