Удалить несколько работ в одной дорожке программно

Я пишу AppleScript для управления обложками моего альбома. Я пытаюсь написать код, который удалит все произведения искусства, содержащиеся в выбранных дорожках (дорожки iTunes могут содержать до 30 объектов произведений искусства). Это будет эквивалентно выбору треков в iTunes, открытию окна "Информация" и установке (пустого) графического окна.

Например, код, который ДОЛЖЕН работать:

tell application "iTunes" to set t to track 1 of playlist "Example Playlist"
tell t to delete every artwork

Обратите внимание, что синтаксис для удаления только первой иллюстрации: tell t to delete artwork 1

К сожалению, AppleScript не сотрудничает. Если в треке 2 произведения, удаляется только первое; если в треке 3 произведения, первые 2 будут удалены.

Похоже, что проблема заключается в изменении индексов обложки во время выполнения команды удаления (т. Е. Для дорожки с 2 обложками она успешно удаляет обложку 1, но при попытке удалить обложку 2 не может найти ее, потому что она была переименована к произведению 1, когда исходное произведение 1 было удалено). Пытаясь заставить every artwork спецификатор в список (так что его можно изменить) не работает, так как delete не похоже на работу с пользовательским списком.

Кто-нибудь знает, что я делаю не так? Я знаю, что мог бы использовать цикл повтора для перебора всех произведений в треке, так как удалял каждое из них по отдельности, но, похоже, это противоречит попытке простоты AppleScript. Я как-то неправильно использую every заявление?

1 ответ

Решение

Пытаться:

tell application "iTunes"
    set t to first item of (get selection)
    delete t's artworks
end tell

ИЛИ ЖЕ

tell application "iTunes"
    set t to first item of (get selection)
    set tArtwork to t's artworks
    repeat with i from (count tArtwork) to 1 by -1
        delete tArtwork's item i
    end repeat
end tell
Другие вопросы по тегам