【发布时间】:2014-04-03 05:13:10
【问题描述】:
我正在尝试检索用户的播放列表。我参考了 cocoalibspotify 中的 Guess The Intro 样本,但是我只得到了 2 首曲目,其中来自已加星标的曲目。 有什么我错过的吗?另外,api/toplists 可以替代吗?我更习惯于使用 json 数据,所以如果有替代 cocoalibspotify 来检索用户的播放列表,我想尝试一下。
-(NSArray *)tracksFromPlaylistItems:(NSArray *)items {
NSMutableArray *tracks = [NSMutableArray arrayWithCapacity:items.count];
for (SPPlaylistItem *anItem in items) {
if (anItem.itemClass == [SPTrack class]) {
[tracks addObject:anItem.item];
}
}
return [NSArray arrayWithArray:tracks];
}
-(void)getMyTracks {
[SPAsyncLoading waitUntilLoaded:[SPSession sharedSession] timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedSession, NSArray *notLoadedSession) {
NSLog(@"SPOTIFY [%@ %@]: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), @"Session loaded.");
[SPAsyncLoading waitUntilLoaded:[SPSession sharedSession] timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedContainers, NSArray *notLoadedContainers) {
NSLog(@"[%@ %@]: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), @"Container loaded.");
NSMutableArray *playlists = [NSMutableArray array];
[playlists addObjectsFromArray:[SPSession sharedSession].userPlaylists.playlists];
[playlists addObject:[SPSession sharedSession].starredPlaylist];
[playlists addObject:[SPSession sharedSession].inboxPlaylist];
//[playlists addObjectsFromArray:[SPSession sharedSession].userPlaylists.flattenedPlaylists];
[SPAsyncLoading waitUntilLoaded:playlists timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedPlaylists, NSArray *notLoadedPlaylists) {
// All of our playlists have loaded their metadata — wait for all tracks to load their metadata.
NSLog(@"[%@ %@]: %@ of %@ playlists loaded.", NSStringFromClass([self class]), NSStringFromSelector(_cmd),
[NSNumber numberWithInteger:loadedPlaylists.count], [NSNumber numberWithInteger:loadedPlaylists.count + notLoadedPlaylists.count]);
NSArray *playlistItems = [loadedPlaylists valueForKeyPath:@"@unionOfArrays.items"];
NSArray *tracks = [self tracksFromPlaylistItems:playlistItems];
[SPAsyncLoading waitUntilLoaded:tracks timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedTracks, NSArray *notLoadedTracks) {
// All of our tracks have loaded their metadata. Hooray!
NSLog(@"[%@ %@]: %@ of %@ tracks loaded.", NSStringFromClass([self class]), NSStringFromSelector(_cmd),
[NSNumber numberWithInteger:loadedTracks.count], [NSNumber numberWithInteger:loadedTracks.count + notLoadedTracks.count]);
NSMutableArray *theTrackPool = [NSMutableArray arrayWithCapacity:loadedTracks.count];
for (SPTrack *track in loadedTracks) {
if (track.availability == SP_TRACK_AVAILABILITY_AVAILABLE && [track.name length] > 0) {
NSLog(@"TRACK %@ %@ %@",track.name,track.artists,track.album.name);
}
}
}];
}];
}];
}];
}
【问题讨论】:
标签: ios spotify cocoalibspotify-2.0