Как автоматически добавить обложку в песню iTunes с помощью AppleScript?

Я создал рабочий процесс автоматизатора, который может добавлять песни в мою библиотеку iTunes и устанавливать их информацию по имени исполнителя, названию альбома и названию песни. Однако треки не имеют обложки, когда я их импортирую, поэтому я искал способы автоматического добавления обложки. Одним из способов было использование iTunes «Получить обложку альбома». Проблема в том, что это часто не давало очень хороших иллюстраций, если вообще их давало.

Я решил скачать обложки песен, обложек которых у меня не было, но они хранятся в моей папке Загрузки. input, который я передаю в свой сценарий, — это файл .jpg, который я хочу добавить к песне в качестве обложки. Проблема в том, что всякий раз, когда я запускаю этот скрипт, он говорит, что не может преобразовать файл псевдонима в тип файла. Сообщение об ошибке выглядит следующим образом:

Не удается создать псевдоним «Macintosh HD:Users:Nilay:Downloads:Avicii — True — Hey Brother.jpg» в тип файла.

Нет никаких причин, по которым он не сможет найти файл, потому что я нахожу файл с помощью Automator «Элементы поиска фильтра», поэтому я знаю, что он передает правильный файл.

Я попытался передать текст файла, а не сам файл, но это все равно привело к тому же сообщению. Первые несколько комментариев — это несколько способов, которыми я пытался обойти это сообщение об ошибке, но, увы, ни один из них не сработал.

Мне было интересно, знает ли кто-нибудь, как решить это сообщение об ошибке или другой способ, с помощью которого я мог бы добавить собственное изображение к песне, не заходя вручную в iTunes -> «Выбрать песню» -> «Информация» -> «Обложка» -> «Добавить обложку». Также было бы возможно, если бы кто-нибудь мог объяснить, как автоматизировать это действие с помощью AppleScript или Workflow. Спасибо!!!

on run {input, parameters}

    --set jpegFilename to input
    --set jpegFilename to "/path/to/some/artwork.jpg"
    --set jpegFile to (POSIX file jpegFilename)
    --set jpegFile to (jpegFilename as POSIX file)
    --tell application "System Events" to set jpegFile to (input as POSIX file)
    set jpegFile to input

    tell application "Image Events"
        set myImage to open (jpegFile as file)
        -- the below line needs HFS syntax pathname, eg: MyComputer:Users:liquidx:
        -- save myImage as PICT in (file ":path:to:some:temporary.pict")
        save myImage as PICT in (POSIX file jpegFile)
        close myImage
    end tell

    tell application "iTunes"
        set myTrack to current track
        set artworkCount to count of artwork of myTrack
        -- the below line needs HFS syntax pathname, eg: MyComputer:Users:liquidx:
        -- set myArt to read (file ":path:to:some:temporary.pict") from 513 as picture
        set myArt to read (POSIX file jpegFile) from 513 as picture
        if artworkCount > 0 then
            set data of artwork (artworkCount + 1) of current track to myArt
        else
            set data of artwork 1 of current track to myArt
        end if
    end tell

    tell application "Image Events"
        -- delete (file ":path:to:some:temporary.pict")
        delete (POSIX file jpegFile)
    end tell

end run

person Nilay    schedule 28.02.2016    source источник


Ответы (1)


input - это список спецификаторов псевдонимов, прежде всего вам нужен цикл повторения

repeat with jpegFile in input

или получить первый элемент списка

set jpegFile to item 1 of input

Тогда команда open в Image Events в любом случае ожидает спецификатор псевдонима, поэтому никакого принуждения не требуется.

set myImage to open jpegFile
person vadian    schedule 29.02.2016
comment
Я сделал, как вы сказали, и все еще получаю эту ошибку: Image Events получил ошибку: не удается получить файл POSIX (псевдоним Macintosh HD: Users: Nilay: Downloads: Avicii - True - Hey Brother.jpg). - person Nilay; 07.03.2016
comment
Если у вас уже есть alias, не используйте преобразование POSIX file. - person vadian; 07.03.2016