使用Scripting Bridge / Obj-C在iTunes上播放专辑/艺术家的歌曲

时间:2012-10-25 09:44:29

标签: objective-c itunes scripting-bridge

鉴于专辑或艺术家的名字,我想告诉iTunes播放该艺术家或该专辑的所有歌曲。我怎样才能做到这一点?我知道如何通过过滤带有所有曲目的阵列来播放所有歌曲,但我如何告诉iTunes只播放我想要的歌曲?

修改

我知道我可以使用这段代码来获取我想要播放的所有曲目,但是我不知道如何告诉iTunes让他们玩这些曲目。有什么想法吗?

// Get the app
iTunesApplication* iTunes = [SBApplication applicationWithBundleIdentifier: @"com.apple.iTunes"];

// Get the library
iTunesSource* library;
for (iTunesSource* thisSource in [iTunes sources]) {
    if ([thisSource kind] == iTunesESrcLibrary) {
        library = thisSource;
        break;
    }
}

SBElementArray* tracks;
for (iTunesPlaylist* playlist in [library playlists]) {
    if ([playlist specialKind] == iTunesESpKMusic) {
        tracks = [playlist searchFor: name only: type == 0 ? iTunesESrAAlbums : iTunesESrAArtists];
     }
 }

 // There. Now what? how do I play all the tracks in 'tracks'?

2 个答案:

答案 0 :(得分:0)

因此,似乎iTunes没有AppleScript / Scripting Bridge命令来播放特定艺术家/某张专辑中的歌曲。根据{{​​3}}问题,如果不创建新的播放列表(我不想这样做),就无法告诉iTunes播放自定义曲目列表。简而言之,实际上没有办法解决这个问题......

答案 1 :(得分:0)

你可以播放一首歌。

iTunesTrack *track = [tracks objectAtIndex:0];
[track playOnce:YES];

如果您想播放多首歌曲,则应创建或使用播放列表:

    for (iTunesUserPlaylist *thisList in playlists) {
        if ([[thisList name] isEqualToString:playlistName]) {
            playlist = thisList;
            break;
        }
    }        

[track duplicateTo:playlist];
[playlist playOnce:YES];