示例#1
0
        public async Task <bool> PopulateEventsAsync(Artist artist)
        {
            if (artist == null)
            {
                return(true);
            }

            if (artist.UpcomingEventsUpdated.AddDays(_configSettings.DaysBeforeUpdatingArtistWebInfo) > DateTime.Now)
            {
                return(true);
            }

            var success = await _interceptor.TryMethod <bool>(
                _eventsService.PopulateEventsAsync(artist),
                false,
                WebServiceType.Events,
                GetMethodDescription(nameof(PopulateEventsAsync), artist));

            if (success)
            {
                artist.UpcomingEventsUpdated = DateTime.Now;
            }

            return(success);
        }
示例#2
0
 public async Task <bool> IsLovedAsync(Track track)
 {
     return(await _interceptor.TryMethod(
                _service.IsLovedAsync(track),
                false,
                WebServiceType.LastFm,
                "IsLoved(Track: " + track.Title + " by " + track.Artist.Name + ")"));
 }
示例#3
0
 public async Task <ICollection <TrackPlay> > GetRecentTrackPlays(int limit)
 {
     return(await _interceptor.TryMethod(
                _service.GetRecentTrackPlays(limit),
                new List <TrackPlay>(),
                WebServiceType.LastFm,
                "Get Recent Tracks (Limit: " + limit + ")"));
 }
示例#4
0
        public async Task <string> GetLyrics(string artistName, string trackTitle)
        {
            var url = string.Format(LyricApiUrl, artistName.Replace("?", ""), trackTitle);

            var response = await _interceptor.TryMethod(_webHelperService.HttpGetAsync(url), null, WebServiceType.Lyrics, "Getting lyrics from " + url);

            JsonReaderException exception = null;

            if (response != null)
            {
                try
                {
                    dynamic parsedResponse = JObject.Parse(response);

                    if (parsedResponse.err == "none")
                    {
                        return(parsedResponse.lyric);
                    }
                    if (parsedResponse.err == "not found")
                    {
                        return(null);
                    }
                }
                catch (JsonReaderException ex)
                {
                    exception = ex;
                }
            }

            LogError(url, response, exception);
            return(null);
        }
 public async Task <bool> PopulateArtistInfo(Artist artist, int numberOfSimilarArtists)
 {
     return(await _interceptor.TryMethod(
                _service.PopulateArtistInfo(artist, numberOfSimilarArtists),
                false,
                WebServiceType.LastFm,
                "Populate Artist Images (Artist: " + artist.Name + ")"));
 }
示例#6
0
 public async Task <string> GetArtworkUrl(string artistName, string albumTitle)
 {
     return(await _interceptor.TryMethod(
                _service.GetArtworkUrl(artistName, albumTitle),
                string.Empty,
                WebServiceType.LastFm,
                "Get Artwork URL (Artist: " + artistName + ", Title: " + albumTitle + ")"));
 }
        public async Task <byte[]> GetImageBytesFromUrl(string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                return(null);
            }

            using (var webClient = new WebClient())
            {
                return(await _interceptor.TryMethod(webClient.DownloadDataTaskAsync(new Uri(url)), null, WebServiceType.Web, "Getting image " + url));
            }
        }
示例#8
0
        public async Task <bool> ScrobbleAsync(Track track, DateTime timePlayed)
        {
            if (!_userSettings.Scrobbling)
            {
                return(true);
            }

            var success = await _asyncMethodInterceptor.TryMethod(
                _scrobbler.ScrobbleAsync(track, timePlayed),
                false,
                WebServiceType.LastFm,
                "ScrobbleAsync (Track: " + track.Title + " by " + track.Artist.Name + ")");

            if (!success)
            {
                _scrobbleCacher.Cache(track, timePlayed);
            }
            else
            {
                await ScrobbleCachedTracks();
            }

            return(success);
        }