【问题标题】:Play songs by album/artist on iTunes with Scripting Bridge/Obj-C使用 Scripting Bridge/Obj-C 在 iTunes 上播放专辑/艺术家的歌曲
【发布时间】:2012-10-25 09:44:29
【问题描述】:

给定专辑或艺术家的名称,我想告诉 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'?

【问题讨论】:

    标签: objective-c itunes scripting-bridge


    【解决方案1】:

    您可以播放一首歌曲。

    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];
    

    【讨论】:

      【解决方案2】:

      因此,iTunes 似乎没有 AppleScript/Scripting Bridge 命令来播放某位艺术家/某张专辑中的歌曲。根据this 的问题,如果不创建新的播放列表(我不想这样做),就不可能告诉 iTunes 播放自定义曲目列表。总之,这个问题真的没有办法解决……

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        相关资源
        最近更新 更多