我正在尝试区分属于文件夹的iTunes播放列表和不属于文件夹的iTunes播放列表。
在AppleScript中,似乎有两种方法可以做到这一点:
我可以获取所有文件夹播放列表,并从用户播放列表中单独处理它们:
set userPlaylists to user playlists
set folderPlaylists to folder playlists
-- …do processing
我可以使用class of pl is folder playlist
检查播放列表的类别(其中pl
是我的播放列表)。
这两种方法似乎都不适用于JXA。
第一种方法不起作用,因为访问.folderPlaylists()
会导致Error: Message not understood
(其中app = Application('iTunes')
)。可以通过这种方式访问其他所有类型的播放列表(app.playlists()
,app.libraryPlaylists()
,app.radioTunerPlaylists()
,app.subscriptionPlaylists()
,app.userPlaylists()
,app.audioCDPlaylists()
都可以使用。这是一个错误吗?
所以我尝试复制第二种方法。据我所知,ObjectSpecifier.classOf
应该将对象类型作为字符串给我。但是,它只返回给对象的对象说明符所请求的类型。
因此,在AppleScript class of (first item of (playlists whose name is "«Name of a folder playlist»"))
给我folder playlist
时,ObjectSpecifier.classOf(app.playlists.whose({name: '«Name of a folder playlist»'})()[0])
只返回"playlist"
(可能是因为我使用app.playlists
来获取对象)。< / p>
是否有能够返回播放列表实际类型的函数(例如"folder playlist"
或"user playlist"
)?
答案 0 :(得分:2)
从播放列表中获取文件夹:
folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
要从播放列表对象中区分userPlaylist和folderPlaylist:
myobj.class() == 'folderPlaylist'
myList = itunesApp.playlists() for (var i in myList) { if (myList[i].class() == 'folderPlaylist') { } else if (myList[i].class() == 'userPlaylist') { } }