Ejemplo n.º 1
0
        /// <summary>
        ///     Let last fm know when a user favourites or unfavourites a track
        /// </summary>
        private async void UserDataSaved(object sender, UserDataSaveEventArgs e)
        {
            //We only care about audio
            if (!(e.Item is Audio))
            {
                return;
            }

            //We also only care about User rating changes
            if (!e.SaveReason.Equals(UserDataSaveReason.UpdateUserRating))
            {
                return;
            }

            var lastfmUser = UserHelpers.GetUser(e.UserId);

            if (lastfmUser == null)
            {
                Plugin.Logger.Debug("Could not find user");
                return;
            }

            if (string.IsNullOrWhiteSpace(lastfmUser.SessionKey))
            {
                Plugin.Logger.Info("No session key present, aborting");
                return;
            }

            var item = (Audio)e.Item;

            //Dont do if syncing
            if (Plugin.Syncing)
            {
                return;
            }

            await _lastfmApi.TrackLove(item, lastfmUser, e.UserData.IsFavorite);
        }
Ejemplo n.º 2
0
        public async Task <bool> SendTrackLoveAsync(PlayableTrack track, bool love)
        {
            bool isSuccess = false;

            // We can't send track love for an unknown track
            if (track.ArtistName == Defaults.UnknownArtistText | string.IsNullOrEmpty(track.TrackTitle))
            {
                return(false);
            }

            if (this.SignInState == SignInState.SignedIn)
            {
                if (love)
                {
                    try
                    {
                        isSuccess = await LastfmApi.TrackLove(this.sessionKey, track.ArtistName, track.TrackTitle);
                    }
                    catch (Exception ex)
                    {
                        LogClient.Error("Could not send track.love to Last.fm. Exception: {0}", ex.Message);
                    }
                }
                else
                {
                    try
                    {
                        isSuccess = await LastfmApi.TrackUnlove(this.sessionKey, track.ArtistName, track.TrackTitle);
                    }
                    catch (Exception ex)
                    {
                        LogClient.Error("Could not send track.unlove to Last.fm. Exception: {0}", ex.Message);
                    }
                }
            }

            return(isSuccess);
        }
Ejemplo n.º 3
0
        public async Task SendTrackLoveAsync(TrackViewModel track, bool love)
        {
            // We can't send track love for an unknown track
            if (string.IsNullOrEmpty(track.TrackTitle))
            {
                return;
            }

            if (this.SignInState == SignInState.SignedIn)
            {
                foreach (string artist in DataUtils.SplitAndTrimColumnMultiValue(track.Track.Artists))
                {
                    if (love)
                    {
                        try
                        {
                            await LastfmApi.TrackLove(this.sessionKey, artist, track.TrackTitle);
                        }
                        catch (Exception ex)
                        {
                            LogClient.Error("Could not send track.love to Last.fm. Exception: {0}", ex.Message);
                        }
                    }
                    else
                    {
                        try
                        {
                            await LastfmApi.TrackUnlove(this.sessionKey, artist, track.TrackTitle);
                        }
                        catch (Exception ex)
                        {
                            LogClient.Error("Could not send track.unlove to Last.fm. Exception: {0}", ex.Message);
                        }
                    }
                }
            }
        }