2009-02-10 73 views
7

说真的,我很尴尬地问这个问题。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是在脚本的早期创建的播放列表。

我一直在抨击我的头,因为感觉像一个星期,我一直没能弄明白。预先感谢任何帮助,您可以提供:)

回答

8

重复是你想要的命令。试试这个:

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

在iTunes界面add用于新曲目添加到使用文件系统路径的iTunes资料库,而duplicate用来放置在一个播放列表到现有轨道的参考。

当使用add命令时,iTunes最终会发现该轨道已经是该库的一部分,并且按照您的要求进行操作,但不会在它读取文件的元数据之前进行调度,等待专辑检索等。这相当于一个非常缓慢的操作,所以如果你在一个循环内使用它来处理大量的曲目,iTunes会慢慢爬行。

Duplicate执行本机数据库查找并将结果一次性添加到播放列表中,因此速度非常快。

0

AppleScript的真的很怪......但检出脚本here dougscripts.com

看起来他使用复制而不是添加到播放列表中添加时。我在看One Song From Each脚本

嗯......怎么样?

add (a reference to the_track) to playlist thePlaylist 
+0

我已经在Doug的网站上查看了许多*脚本的灵感和/或关于如何解决这个问题的线索,但无济于事。谢谢虽然:) – inkedmn 2009-02-10 09:53:18

+0

是的,我其实已经打开了该脚本。不幸的是,'重复'给了我同样的错误:\ – inkedmn 2009-02-10 10:03:51

0

尝试改变该行:

add (get location of the_track) to playlist thePlaylist 

,或者,如果thePlaylist已经是一个播放列表引用(而不是只是一个播放列表的字符串名称):

add (get location of the_track) to thePlaylist 
0

尝试:

copy the_track to end of playlist thePlaylist 

代替。

相关问题