Вопрос по Applescript - добавление треков в плейлисты

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

У меня есть 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 - это список уникальных имен альбомов, а Playlist - это список для воспроизведения, созданный ранее в скрипте.

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


person brettkelly    schedule 10.02.2009    source источник


Ответы (4)


Дублировать - это нужная вам команда. Попробуй это:

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 выполняет собственный поиск в базе данных и сразу добавляет результаты в список воспроизведения, поэтому это происходит очень быстро.

person Matt Stevens    schedule 10.02.2009

Пытаться:

copy the_track to end of playlist thePlaylist

вместо.

person iayork    schedule 14.02.2009

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

add (get location of the_track) to playlist thePlaylist

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

add (get location of the_track) to thePlaylist
person Miles    schedule 10.02.2009
comment
Когда я это делаю, я получаю эту ошибку: iTunes получил ошибку: псевдоним \ Macintosh HD: Пользователи: inkedmn: Музыка: iTunes: Музыка iTunes: Vision Of Disorder: Для Bleeders: 01 Choke.mp3 \ не понимает добавления сообщение. Есть другие идеи? Спасибо! - person brettkelly; 10.02.2009

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

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

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

add (a reference to the_track) to playlist thePlaylist
person epatel    schedule 10.02.2009
comment
Я просмотрел многие сценарии на сайте Дуга в поисках вдохновения и / или подсказки относительно того, как решить эту проблему, но безрезультатно. Спасибо хоть :) - person brettkelly; 10.02.2009
comment
Да, у меня тоже открыт этот сценарий. К сожалению, «duplicate» дает мне ту же ошибку: \ - person brettkelly; 10.02.2009