Beispiel #1
0
        /// <summary>
        /// Fetches the tracklist of the clicked release and displays it.
        /// </summary>
        /// <param name="sender">Clicked release as <see cref="LastAlbum"/>.</param>
        /// <param name="e">Ignored.</param>
        public async void ReleaseClicked(object sender, EventArgs e)
        {
            if (EnableControls)
            {
                EnableControls = false;

                try
                {
                    var release = sender as Release;
                    OnStatusUpdated(string.Format("Trying to fetch tracklist from release '{0}'", release.Name));

                    LastResponse <LastAlbum> response = null;
                    if (!string.IsNullOrEmpty(release.Mbid))
                    {
                        response = await _lastfmAlbumAPI.GetInfoByMbidAsync(release.Mbid);
                    }
                    else
                    {
                        response = await _lastfmAlbumAPI.GetInfoAsync(release.ArtistName, release.Name);
                    }

                    if (response.Success && response.Status == LastResponseStatus.Successful)
                    {
                        Scrobbles.Clear();
                        foreach (var t in response.Content.Tracks)
                        {
                            FetchedTrackViewModel vm = new FetchedTrackViewModel(new ScrobbleBase(t.Name, t.ArtistName, t.AlbumName, "", t.Duration), release.Image);
                            vm.ToScrobbleChanged += ToScrobbleChanged;
                            Scrobbles.Add(vm);
                        }

                        if (Scrobbles.Count != 0)
                        {
                            CurrentView = _trackResultView;
                            OnStatusUpdated(string.Format("Successfully fetched tracklist from release '{0}'", release.Name));
                        }
                        else
                        {
                            OnStatusUpdated(string.Format("Release '{0}' has no tracks", release.Name));
                        }
                    }
                    else
                    {
                        OnStatusUpdated(string.Format("Error while fetching tracklist from release '{0}': {1}", release.Name, response.Status));
                    }
                }
                catch (Exception ex)
                {
                    OnStatusUpdated(string.Format("Fatal error while fetching tracklist from release: {0}", ex.Message));
                }
                finally
                {
                    EnableControls = true;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Fetches the recent scrobbles of the user with the given <see cref="Username"/>.
        /// </summary>
        public async Task FetchScrobbles()
        {
            try
            {
                EnableControls = false;
                OnStatusUpdated(string.Format("Trying to fetch scrobbles of '{0}' ...", Username));
                Scrobbles.Clear();
                var response = await _userApi.GetRecentScrobbles(Username, null, 1, Amount);

                if (response.Success)
                {
                    foreach (var s in response)
                    {
                        if (!s.IsNowPlaying.HasValue || !s.IsNowPlaying.Value)
                        {
                            FetchedFriendTrackViewModel vm = new FetchedFriendTrackViewModel(s);
                            vm.ToScrobbleChanged += ToScrobbleChanged;
                            Scrobbles.Add(vm);
                        }
                    }

                    OnStatusUpdated(string.Format("Successfully fetched scrobbles of '{0}'", Username));
                }
                else
                {
                    OnStatusUpdated(string.Format("Failed to fetch scrobbles of '{0}': {1}", Username, response.Status));
                }
            }
            catch (Exception ex)
            {
                OnStatusUpdated(string.Format("Fatal error while fetching scrobbles of '{0}': {1}", Username, ex.Message));
            }
            finally
            {
                EnableControls = true;
            }
        }