示例#1
0
        public async Task <AudioDbArtist> GetArtistAsync(long tadbArtistID, string language, bool cacheOnly)
        {
            AudioDbArtists audioDbArtists = null;
            string         cache          = CreateAndGetCacheName(tadbArtistID, "Artist");

            if (!string.IsNullOrEmpty(cache) && File.Exists(cache))
            {
                audioDbArtists = await _downloader.ReadCacheAsync <AudioDbArtists>(cache).ConfigureAwait(false);
            }
            else
            {
                if (cacheOnly)
                {
                    return(null);
                }
                string url = GetUrl(URL_ARTIST_BY_TADB, tadbArtistID);
                audioDbArtists = await _downloader.DownloadAsync <AudioDbArtists>(url, cache).ConfigureAwait(false);
            }
            if (audioDbArtists.Artists != null && audioDbArtists.Artists.Count > 0)
            {
                AudioDbArtist artist = audioDbArtists.Artists.Where(a => a.ArtistId > 0).FirstOrDefault();
                if (artist != null)
                {
                    artist.SetLanguage(language);
                }
                return(artist);
            }
            return(null);
        }
        public override async Task <bool> UpdateFromOnlineMusicTrackAlbumPersonAsync(AlbumInfo albumInfo, PersonInfo person, string language, bool cacheOnly)
        {
            try
            {
                AudioDbArtist artistDetail = null;
                language = language ?? PreferredLanguage;

                if (person.AudioDbId > 0)
                {
                    artistDetail = await _audioDbHandler.GetArtistAsync(person.AudioDbId, language, cacheOnly).ConfigureAwait(false);
                }
                if (artistDetail == null && !string.IsNullOrEmpty(person.MusicBrainzId))
                {
                    List <AudioDbArtist> foundArtists = await _audioDbHandler.GetArtistByMbidAsync(person.MusicBrainzId, language, cacheOnly).ConfigureAwait(false);

                    if (foundArtists != null && foundArtists.Count == 1)
                    {
                        artistDetail = await _audioDbHandler.GetArtistAsync(foundArtists[0].ArtistId, language, cacheOnly).ConfigureAwait(false);
                    }
                }
                if (artistDetail == null)
                {
                    return(false);
                }

                bool languageSet = artistDetail.SetLanguage(language);

                int?     year = artistDetail.BornYear == null ? artistDetail.FormedYear : artistDetail.BornYear;
                DateTime?born = null;
                if (year.HasValue && year.Value > 1900)
                {
                    born = new DateTime(year.Value, 1, 1);
                }
                DateTime?died = null;
                if (artistDetail.DiedYear.HasValue && artistDetail.DiedYear.Value > 1900)
                {
                    died = new DateTime(artistDetail.DiedYear.Value, 1, 1);
                }

                person.MusicBrainzId = artistDetail.MusicBrainzID;
                person.Name          = artistDetail.Artist;
                person.AlternateName = artistDetail.ArtistAlternate;
                person.Biography     = new SimpleTitle(artistDetail.Biography, !languageSet);
                person.DateOfBirth   = born;
                person.DateOfDeath   = died;
                person.Orign         = artistDetail.Country;
                person.IsGroup       = artistDetail.Members.HasValue ? artistDetail.Members.Value > 1 : false;
                person.Occupation    = PersonAspect.OCCUPATION_ARTIST;

                return(true);
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Debug("TheAudioDbWrapper: Exception while processing person {0}", ex, person.ToString());
                return(false);
            }
        }
        protected async Task <ApiWrapperImageCollection <string> > GetArtistFanArtAsync(PersonInfo person, string language)
        {
            if (person == null || person.AudioDbId < 1)
            {
                return(null);
            }
            AudioDbArtist artistDetail = await _audioDbHandler.GetArtistAsync(person.AudioDbId, language, false).ConfigureAwait(false);

            if (artistDetail == null)
            {
                return(null);
            }
            ApiWrapperImageCollection <string> images = new ApiWrapperImageCollection <string>();

            images.Id = person.AudioDbId.ToString();
            if (!string.IsNullOrEmpty(artistDetail.ArtistBanner))
            {
                images.Banners.Add(artistDetail.ArtistBanner);
            }
            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart))
            {
                images.Backdrops.Add(artistDetail.ArtistFanart);
            }
            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart2))
            {
                images.Backdrops.Add(artistDetail.ArtistFanart2);
            }
            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart3))
            {
                images.Backdrops.Add(artistDetail.ArtistFanart3);
            }
            if (!string.IsNullOrEmpty(artistDetail.ArtistLogo))
            {
                images.Logos.Add(artistDetail.ArtistLogo);
            }
            if (!string.IsNullOrEmpty(artistDetail.ArtistThumb))
            {
                images.Thumbnails.Add(artistDetail.ArtistThumb);
            }
            return(images);
        }
        public override bool GetFanArt <T>(T infoObject, string language, string fanartMediaType, out ApiWrapperImageCollection <string> images)
        {
            images = new ApiWrapperImageCollection <string>();

            try
            {
                if (fanartMediaType == FanArtMediaTypes.Album)
                {
                    TrackInfo track = infoObject as TrackInfo;
                    AlbumInfo album = infoObject as AlbumInfo;
                    if (album == null && track != null)
                    {
                        album = track.CloneBasicInstance <AlbumInfo>();
                    }
                    if (album != null && album.AudioDbId > 0)
                    {
                        AudioDbAlbum albumDetail = _audioDbHandler.GetAlbum(album.AudioDbId, language, false);
                        if (albumDetail != null)
                        {
                            images.Id = album.AudioDbId.ToString();
                            if (!string.IsNullOrEmpty(albumDetail.AlbumThumb))
                            {
                                images.Covers.Add(albumDetail.AlbumThumb);
                            }
                            if (!string.IsNullOrEmpty(albumDetail.AlbumCDart))
                            {
                                images.DiscArt.Add(albumDetail.AlbumCDart);
                            }
                            return(true);
                        }
                    }
                }
                else if (fanartMediaType == FanArtMediaTypes.Artist)
                {
                    PersonInfo person = infoObject as PersonInfo;
                    if (person != null && person.AudioDbId > 0)
                    {
                        AudioDbArtist artistDetail = _audioDbHandler.GetArtist(person.AudioDbId, language, false);
                        if (artistDetail != null)
                        {
                            images.Id = person.AudioDbId.ToString();
                            if (!string.IsNullOrEmpty(artistDetail.ArtistBanner))
                            {
                                images.Banners.Add(artistDetail.ArtistBanner);
                            }
                            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart))
                            {
                                images.Backdrops.Add(artistDetail.ArtistFanart);
                            }
                            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart2))
                            {
                                images.Backdrops.Add(artistDetail.ArtistFanart2);
                            }
                            if (!string.IsNullOrEmpty(artistDetail.ArtistFanart3))
                            {
                                images.Backdrops.Add(artistDetail.ArtistFanart3);
                            }
                            if (!string.IsNullOrEmpty(artistDetail.ArtistLogo))
                            {
                                images.Logos.Add(artistDetail.ArtistLogo);
                            }
                            if (!string.IsNullOrEmpty(artistDetail.ArtistThumb))
                            {
                                images.Thumbnails.Add(artistDetail.ArtistThumb);
                            }
                            return(true);
                        }
                    }
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Debug(GetType().Name + ": Exception downloading images", ex);
            }
            return(false);
        }