public async Task Scrobble(Audio item, LastfmUser user) { if (string.IsNullOrWhiteSpace(item.Name)) { Plugin.Logger.Error("Cannot scrobble track: {0}, no name", item.Id); return; } var artist = item.Artists?.FirstOrDefault(); if (string.IsNullOrWhiteSpace(artist)) { Plugin.Logger.Error("Cannot scrobble track: {0} ({1}), no artist found", item.Id, item.Name); return; } var request = new ScrobbleRequest { Track = item.Name, Album = item.Album, Artist = artist, Timestamp = Helpers.CurrentTimestamp(), SessionKey = user.SessionKey }; var response = await Post <ScrobbleRequest, ScrobbleResponse>(request).ConfigureAwait(false); if (response != null && !response.IsError()) { Plugin.Logger.Info("{0} played '{1}' - {2} - {3}", user.Username, request.Track, request.Album, request.Artist); return; } Plugin.Logger.Error("Failed to Scrobble track: {0}", item.Name); }
public async Task Scrobble(Audio item, LastfmUser user) { // API docs -> https://www.last.fm/api/show/track.scrobble var request = new ScrobbleRequest { Track = item.Name, Artist = item.Artists.First(), Timestamp = Helpers.CurrentTimestamp(), ApiKey = Strings.Keys.LastfmApiKey, Method = Strings.Methods.Scrobble, SessionKey = user.SessionKey, Secure = true }; if (!string.IsNullOrWhiteSpace(item.Album)) { request.Album = item.Album; } if (item.ProviderIds.ContainsKey("MusicBrainzTrack")) { request.MbId = item.ProviderIds["MusicBrainzTrack"]; } try { // Send the request var response = await Post <ScrobbleRequest, ScrobbleResponse>(request); if (response != null && !response.IsError()) { _logger.LogInformation("{0} played artist={1}, track={2}, album={3}", user.Username, request.Artist, request.Track, request.Album); return; } _logger.LogError("Failed to Scrobble track: {0}", item.Name); } catch (Exception ex) { _logger.LogError("Failed to Scrobble track: track: ex={0}, name={1}, track={2}, artist={3}, album={4}, mbid={5}", ex, item.Name, request.Track, request.Artist, request.Album, request.MbId); } }
public async Task Scrobble(Audio item, LastfmUser user) { var request = new ScrobbleRequest { Track = item.Name, Artist = item.Artists.FirstOrDefault(), Timestamp = Helpers.CurrentTimestamp(), ApiKey = Strings.Keys.LastfmApiKey, Method = Strings.Methods.Scrobble, SessionKey = user.SessionKey }; if (!string.IsNullOrWhiteSpace(item.Album)) { request.Album = item.Album; } if (item.ProviderIds.ContainsKey("MusicBrainzTrack")) { request.MbId = item.ProviderIds["MusicBrainzTrack"]; } try { //Send the request var response = await Post <ScrobbleRequest, ScrobbleResponse>(request); if (response != null && !response.IsError()) { Plugin.Logger.Info("{0} played '{1}' - {2} - {3}", user.Username, request.Track, request.Album, request.Artist); return; } Plugin.Logger.Error("Failed to Scrobble track: {0}", item.Name); } catch (Exception ex) { Plugin.Logger.ErrorException("Failed to Scrobble track: {0}", ex, item.Name); } }
public async Task Scrobble(Audio item, LastfmUser user) { var request = new ScrobbleRequest { Track = item.Name, Album = item.Album, Artist = item.Artists.First(), Timestamp = Helpers.CurrentTimestamp(), ApiKey = Strings.Keys.LastfmApiKey, Method = Strings.Methods.Scrobble, SessionKey = user.SessionKey }; var response = await Post <ScrobbleRequest, ScrobbleResponse>(request); if (response != null && !response.IsError()) { Plugin.Logger.Info("{0} played '{1}' - {2} - {3}", user.Username, request.Track, request.Album, request.Artist); return; } Plugin.Logger.Error("Failed to Scrobble track: {0}", item.Name); }
public async Task Scrobble(Audio item, LastfmUser user) { var request = new ScrobbleRequest { Track = item.Name, Album = item.Album, Artist = item.Artists.First(), Timestamp = Helpers.CurrentTimestamp(), ApiKey = Strings.Keys.LastfmApiKey, Method = Strings.Methods.Scrobble, SessionKey = user.SessionKey }; var response = await Post<ScrobbleRequest, ScrobbleResponse>(request); if (response != null && !response.IsError()) { Plugin.Logger.Info("{0} played '{1}' - {2} - {3}", user.Username, request.Track, request.Album, request.Artist); return; } Plugin.Logger.Error("Failed to Scrobble track: {0}", item.Name); }