/// <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); }
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); }
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); } } } } }