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(),
            });
        }
Exemplo n.º 2
0
        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()));
        }
Exemplo n.º 3
0
        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();
        }