Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }