public override async Task <Playlist> GetPlaylistAsync(string playlistId) { // Shitty URL decode implementation because honestly, // playlist ID handling is a mess playlistId = playlistId.Replace("%3D", "="); var playlistResponse = await client.ListPlaylistsAsync(); var playlists = playlistResponse.Data.Items; var playlistInfo = (from playlist in playlists where playlist.ShareToken == playlistId select playlist).FirstOrDefault(); if (playlistInfo == null) { throw new Exception("Playlist not found, or is not a user playlist. Only playlists the user owns can be downloaded at present."); } var items = await client.ListTracksFromPlaylist(playlistInfo); return(new Playlist { Id = playlistInfo.Id, Title = playlistInfo.Name, Tracks = (from track in items where track != null select track.ToAthameTrack()).ToList(), }); }
public async Task ListPlaylistItems() { var account = CommonTests.GetAccount(); var mc = new MobileClient(); Assert.IsTrue(await mc.LoginAsync(account.Item1, account.Item2)); ResultList <Playlist> playlist; Assert.IsNotNull(playlist = await mc.ListPlaylistsAsync()); Assert.IsNotNull(await mc.ListTracksFromPlaylist(playlist.Data.Items.First())); }
public async Task AdRemoveSongsFromPlaylist() { var account = CommonTests.GetAccount(); var mc = new MobileClient(); Assert.IsTrue(await mc.LoginAsync(account.Item1, account.Item2)); Playlist item; Assert.IsNotNull(item = await mc.CreatePlaylist(Guid.NewGuid().ToString(), "")); RadioFeed tracks; Assert.IsNotNull(tracks = await mc.GetStationFeed(ExplicitType.Explicit, new StationFeedStation { LibraryContentOnly = false, NumberOfEntries = 25, RecentlyPlayed = new Track[0], Seed = new StationSeed { SeedType = 6 } } )); var track = tracks.Data.Stations.First().Tracks.First(); Assert.IsNotNull(await mc.AddSongToPlaylist(item, track)); var result = await mc.ListTracksFromPlaylist(item); Assert.IsTrue(result.Any(x => x.StoreId == track.StoreId)); Assert.IsNotNull(await mc.RemoveSongsFromPlaylist(mc.GetTrackPlaylistEntry(item, track))); Assert.IsNotNull(await mc.DetelePlaylist(item)); }
public override async Task LoadAsync(MobileClient client) { var tracks = await client.ListTracksFromPlaylist(Playlist); Tracks = tracks.ToArray(); }