2016-08-28 8 views
0

私はフォルダであるiTunesプレイリストとそうでないiTunesプレイリストを区別しようとしています。 AppleScriptでは実際のクラスのJXAオブジェクトを取得するには

これを行うには、2つの方法があるように思える:

  1. 私は、すべてのフォルダのプレイリストを取得し、ユーザーのプレイリストからそれらを個別に処理することができます。

    set userPlaylists to user playlists 
    set folderPlaylists to folder playlists 
    -- …do processing 
    
  2. 私はクラスを確認することができますclass of pl is folder playlistplは私のプレイリストです)を使用してプレイリストの

どちらの方法もJXAでは動作しないようです。

.folderPlaylists()にアクセスするとError: Message not understoodapp = Application('iTunes'))になるため、最初の方法は機能しません。このように他のすべてのタイプのプレイリストにアクセスできます(app.playlists()app.libraryPlaylists()app.radioTunerPlaylists()app.subscriptionPlaylists()app.userPlaylists()app.audioCDPlaylists())。これはバグですか?

私は2番目の方法を複製しようとしました。私が理解する限り、ObjectSpecifier.classOfは私に文字列としてオブジェクトタイプを与えるべきです。しかし、オブジェクト指定子によって要求された型だけを返します。だから、

のAppleScript class of (first item of (playlists whose name is "«Name of a folder playlist»"))ObjectSpecifier.classOf(app.playlists.whose({name: '«Name of a folder playlist»'})()[0])はちょうど(私がオブジェクトを取得するapp.playlistsを使用したためと思われる)"playlist"を返し、私folder playlistを与えながら。

実際のプレイリストの種類を返す関数(たとえば"folder playlist"または"user playlist")はありませんか?

folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})() 

プレイリストオブジェクトからuserPlaylistとfolderPlaylistを区別するために:プレイリストからフォルダを取得するには

答えて

2

  • 使用:myobj.class() == 'folderPlaylist'
myList = itunesApp.playlists() 
for (var i in myList) { 
    if (myList[i].class() == 'folderPlaylist') { 

    } else if (myList[i].class() == 'userPlaylist') { 

    } 
} 
+0

シンプルでありながらも分かりにくい...ありがとうございました! –

関連する問題