私はフォルダであるiTunesプレイリストとそうでないiTunesプレイリストを区別しようとしています。 AppleScriptでは実際のクラスのJXAオブジェクトを取得するには
これを行うには、2つの方法があるように思える:
私は、すべてのフォルダのプレイリストを取得し、ユーザーのプレイリストからそれらを個別に処理することができます。
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()
)。これはバグですか?
私は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を区別するために:プレイリストからフォルダを取得するには
シンプルでありながらも分かりにくい...ありがとうございました! –