コード例 #1
0
        public async Task ShouldReplacePlaylistItems()
        {
            // Arrange
            const string playlistId = "40C5k2GWBlficlUyQKmR0S";
            var          uris       = new[] { SpotifyUri.OfTrack("3n3Ppam7vgaVa1iaRUc9Lp"), SpotifyUri.OfEpisode("512ojhOuo1ktJprKbVcKyQ") };

            this.MockHttp
            .ExpectSpotifyRequest(HttpMethod.Put, $"playlists/{playlistId}/tracks")
            .WithExactQueryString(string.Empty)
            .WithJsonContent(j =>
                             j.EnumerateObject().Count() == 1 &&
                             j.TryGetProperty("uris", out var array) && array.EnumerateArray().ToArray().Select(x => x.GetString()).SequenceEqual(uris))
            .Respond(HttpStatusCode.OK, "application/json", "{}");

            // Act
            var result = await this.Client.Playlists(playlistId).Items.ReplaceAsync(uris);

            // Assert
            this.MockHttp.VerifyNoOutstandingExpectation();
            result.Should().NotBeNull();
        }
コード例 #2
0
        public async void UpdateTrack(Track track)
        {
            _currentTrack = track;

            //advertLabel.Text = track.IsAd() ? "ADVERT" : "";
            timeProgressBar.Maximum = track.Length;

            if (track.IsAd())
            {
                return; //Don't process further, maybe null values
            }
            titleLinkLabel.Text        = track.TrackResource.Name;
            titleLinkLabel.Tag         = track.TrackResource.Uri;
            trackRight.Text            = track.TrackResource.Name;
            trackRight.Tag             = track.TrackResource.Uri;
            titleLinkLabel.UseMnemonic = false;
            trackRight.UseMnemonic     = false;

            artistLinkLabel.Text        = track.ArtistResource.Name;
            artistLinkLabel.Tag         = track.ArtistResource.Uri;
            artistRight.Text            = track.ArtistResource.Name;
            artistRight.Tag             = track.ArtistResource.Uri;
            artistLinkLabel.UseMnemonic = false;
            artistRight.UseMnemonic     = false;


            albumLinkLabel.Text        = track.AlbumResource.Name;
            albumLinkLabel.Tag         = track.AlbumResource.Uri;
            albumRight.Text            = track.AlbumResource.Name;
            albumRight.Tag             = track.AlbumResource.Uri;
            albumLinkLabel.UseMnemonic = false;
            albumRight.UseMnemonic     = false;

            SpotifyUri uri = track.TrackResource.ParseUri();

            //trackInfoBox.Text = $@"Track Info - {uri.Id}";

            //bigAlbumPicture.Image = await track.GetAlbumArtAsync(AlbumArtSize.Size640);
            smallAlbumPicture.Image = await track.GetAlbumArtAsync(AlbumArtSize.Size160);
        }
コード例 #3
0
        public async Task ShouldAddItemToPlaybackQueueForSpecificDevice()
        {
            // Arrange
            const string deviceId = "device1";
            var          uri      = SpotifyUri.OfAlbum("6akEvsycLGftJxYudPjmqK");

            this.MockHttp
            .ExpectSpotifyRequest(HttpMethod.Post, $"me/player/queue")
            .WithExactQueryString(new Dictionary <string, string>
            {
                ["device_id"] = deviceId,
                ["uri"]       = uri
            })
            .WithNullContent()
            .Respond(HttpStatusCode.OK);

            // Act
            await this.Client.Me.Player.Playback(deviceId).Queue.AddAsync(uri);

            // Assert
            this.MockHttp.VerifyNoOutstandingExpectation();
        }
コード例 #4
0
        /// <inheritdoc />
        public async Task <IList <SimpleAlbum> > GetArtistAlbums(SpotifyUri artistUri, AlbumType albumTypes, string market, int maxResults, int offset)
        {
            var albumTypeString = string.Empty;

            if (albumTypes.HasFlag(AlbumType.Album))
            {
                albumTypeString += "album,";
            }
            if (albumTypes.HasFlag(AlbumType.AppearsOn))
            {
                albumTypeString += "appears_on,";
            }
            if (albumTypes.HasFlag(AlbumType.Compilation))
            {
                albumTypeString += "compilation,";
            }
            if (albumTypes.HasFlag(AlbumType.Single))
            {
                albumTypeString += "compilation,";
            }
            albumTypeString = albumTypeString.Remove(albumTypeString.Length - 1);

            var r = await ApiClient.GetAsync <Paging <SimpleAlbum> >(
                MakeUri(
                    $"artists/{artistUri.Id}/albums?{albumTypeString}",
                    ("album_type", albumTypeString),
                    ("limit", "50"),
                    ("offset", offset.ToString()),
                    ("market", market)),
                this.Token);

            if (r.Response is Paging <SimpleAlbum> res)
            {
                return(await res.LoadToList(this.Token));
            }
            return(new List <SimpleAlbum>());
        }
コード例 #5
0
        public IActionResult Index()
        {
            var playlistTracks = new List <PlaylistTrack>();

            if (_spotifyAuthService.GetToken() != null)
            {
                var api = new SpotifyWebApi.SpotifyWebApi(_spotifyAuthService.GetToken());
                var fullPlaylistTracks = api.Playlist.GetPlaylistTracks(SpotifyUri.Make("1233033915", "2CuhODa4xTTlemWopeXG71")).Result;

                foreach (var track in fullPlaylistTracks)
                {
                    var usernameModel = _usernames.GetValueOrDefault(track.AddedBy.Id);
                    playlistTracks.Add(new PlaylistTrack
                    {
                        Name         = track.Track.Name,
                        Artist       = track.Track.Artists.FirstOrDefault().Name,
                        AddedBy      = usernameModel?.Name,
                        AddedByImage = usernameModel?.ImageName
                    });
                }
            }

            List <PlayedTrackViewModel> playedTrackViewModels = new List <PlayedTrackViewModel>();
            var playedTrackEntities = _storageService.GetPlayedTracks().Result;

            if (playedTrackEntities != null)
            {
                for (var i = 0; i < playedTrackEntities.Count(); i++)
                {
                    playedTrackViewModels.Add(TrackEntityToPlayedTrackViewModel.Map(playedTrackEntities[i], i, playlistTracks));
                }
            }

            ViewBag.PlayedTracks = playedTrackViewModels;
            return(View());
        }
コード例 #6
0
 /// <inheritdoc />
 public Task <FullPlaylist> CreatePlaylist(
     SpotifyUri user, string name, bool @public, bool collaborative, string description)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
 /// <inheritdoc />
 public Task AddTracksToPlaylist(SpotifyUri playlistUri, IList <SpotifyUri> tracks, int?position = null)
 {
     throw new NotImplementedException();
 }
コード例 #8
0
        public async Task ShouldStartNewPlaybackForDeviceFromUrisWithAllParams()
        {
            // Arrange
            const string deviceId = "device1";
            var          positon  = TimeSpan.FromSeconds(10);
            var          uris     = new[] { SpotifyUri.OfAlbum("6akEvsycLGftJxYudPjmqK"), SpotifyUri.OfEpisode("512ojhOuo1ktJprKbVcKyQ") };
            var          offset   = uris[1];

            this.MockHttp
            .ExpectSpotifyRequest(HttpMethod.Put, $"me/player/play")
            .WithExactQueryString(new Dictionary <string, string> {
                ["device_id"] = deviceId
            })
            .WithJsonContent(j =>
                             j.EnumerateObject().Count() == 3 &&
                             j.TryGetProperty("uris", out var array) && array.EnumerateArray().ToArray().Select(x => x.GetString()).SequenceEqual(uris) &&
                             j.TryGetProperty("offset", out var offsetProperty) && offsetProperty.EnumerateObject().Count() == 1 &&
                             offsetProperty.TryGetProperty("uri", out var uriProperty) && uriProperty.GetString() == offset &&
                             j.TryGetProperty("position_ms", out var positionMs) && positionMs.GetInt32() == 10000)
            .Respond(HttpStatusCode.OK, "application/json", "{}");

            // Act
            await this.Client.Me.Player.Playback(deviceId).StartNewAsync(uris, offset, positon);

            // Assert
            this.MockHttp.VerifyNoOutstandingExpectation();
        }
コード例 #9
0
 public void ShouldThrowArgumentExceptionForInvalidUri()
 {
     Assert.Throws <ArgumentException>(() => SpotifyUri.Parse("asdafadfgsrsegqejfa"));
 }
コード例 #10
0
 public IPlaybackPlayWithOffsetBuilder Playlist(string ownerId, string playlistId)
 {
     return(new PlaybackPlayBuilder(this.playbackContext, new Body {
         ContextUri = SpotifyUri.ForPlaylist(ownerId, playlistId)
     }));
 }
コード例 #11
0
 public IPlaybackPlayWithOffsetBuilder Tracks(IEnumerable <string> ids)
 {
     return(new PlaybackPlayBuilder(this.playbackContext, new Body {
         TrackUris = ids.Select(item => SpotifyUri.ForTrack(item)).ToArray()
     }));
 }
コード例 #12
0
 public void MakeTest()
 {
     SpotifyUri.Make("spotify:playlist:3ewZM7pLkkmbqULVsRZwnM");
 }
コード例 #13
0
 /// <inheritdoc />
 public Task StartPlayback(Device device = null, SpotifyUri contextUri = null, List <SpotifyUri> uris = null)
 {
     throw new NotImplementedException();
 }
コード例 #14
0
 /// <summary>Activates the playlist.</summary>
 public void ActivatePlaylist()
 {
     this.playListViewModel.ActivatePlaylist(SpotifyUri.Make(this.Uri));
 }
コード例 #15
0
 public void GetPlaylistTest()
 {
     var test = this.Api.Playlist.GetPlaylist(SpotifyUri.Make("spotify:playlist:3ewZM7pLkkmbqULVsRZwnM")).Result;
 }
コード例 #16
0
 /// <summary>Activates the playlist.</summary>
 /// <param name="uri">The URI of the playlist to activate.</param>
 public void ActivatePlaylist(SpotifyUri uri)
 {
     this.AttachedDataModel = null;
     this.playListService.SetPlaylist(uri);
 }
コード例 #17
0
ファイル: PlaybackService.cs プロジェクト: hobbit19/Spotify
        /// <summary>Sets the  currently played playlist.</summary>
        /// <param name="uri">The uri of the playlist.</param>
        public async void SetPlaylist(SpotifyUri uri)
        {
            await this.EnsureActiveDeviceExists();

            await this.api.Player.StartPlayback(null, uri, null, null);
        }
コード例 #18
0
 /// <summary>
 /// Executes the play command.
 /// </summary>
 private void PlayCommandExecute()
 {
     this.playBackService.SetPlaylist(SpotifyUri.Make(this.Uri));
 }
コード例 #19
0
        public async Task GetAlbumTracksTest(string uri, int expectedTrackCount)
        {
            var tracks = await this.Api.Album.GetAlbumTracks(SpotifyUri.Make(uri));

            Assert.Equal(expectedTrackCount, tracks.Count);
        }
コード例 #20
0
 public IPlaybackPlayWithOffsetBuilder Album(string id)
 {
     return(new PlaybackPlayBuilder(this.playbackContext, new Body {
         ContextUri = SpotifyUri.ForAlbum(id)
     }));
 }
コード例 #21
0
 /// <summary>Executes the play command.</summary>
 private void PlayCommandExecute()
 {
     this.playbackService.SetSong(SpotifyUri.Make(this.PlaylistUri), SpotifyUri.Make(this.Uri));
 }
コード例 #22
0
 public IPlaybackPlayBuilder Artist(string id)
 {
     return(new PlaybackPlayBuilder(this.playbackContext, new Body {
         ContextUri = SpotifyUri.ForArtist(id)
     }));
 }