Вопрос по Applescript - добавление треков в плейлисты - PullRequest
7 голосов
/ 10 февраля 2009

Серьезно, мне стыдно даже спрашивать об этом.

У меня есть Applescript, который должен создать плейлист из целых альбомов. Все работает отлично, за исключением фактического добавления треков в список воспроизведения. Вот соответствующий код:

repeat with theAlbum in randAlbums
    set these_tracks to (tracks of library playlist 1 whose album is theAlbum)
    repeat with the_track in these_tracks
        add the_track to playlist thePlaylist  (* doesn't work *)
    end repeat
end repeat

Я получаю сообщение об ошибке: «iTunes получил ошибку: произошло несоответствие типа дескриптора».

randAlbums - это список уникальных названий альбомов, а thePlaylist - это список воспроизведения, созданный ранее в скрипте.

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

Ответы [ 4 ]

8 голосов
/ 10 февраля 2009

Дубликат - это команда, которую вы хотите. Попробуйте это:

repeat with theAlbum in randAlbums
    duplicate (tracks of library playlist 1 whose album is theAlbum) to thePlaylist
end repeat

В интерфейсе iTunes add используется для добавления новой дорожки в библиотеку iTunes с использованием пути к файловой системе, а duplicate используется для размещения ссылки на существующую дорожку в списке воспроизведения.

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

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

0 голосов
/ 14 февраля 2009

Попробуйте:

copy the_track to end of playlist thePlaylist

вместо.

0 голосов
/ 10 февраля 2009

Попробуйте изменить эту строку на:

add (get location of the_track) to playlist thePlaylist

или, если thePlaylist уже является ссылкой на список воспроизведения (вместо просто имени строки списка воспроизведения):

add (get location of the_track) to thePlaylist
0 голосов
/ 10 февраля 2009

Applescript действительно странный ... но посмотрите сценарии здесь dougscripts.com

Похоже, он использует дубликат , а не добавить при добавлении в список воспроизведения. Я смотрю на одну песню из каждого сценарий

Хммм ... как насчет?

add (a reference to the_track) to playlist thePlaylist
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...