From ab70effd5e130ebc189c1457294fda6811590147 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 14 Aug 2013 10:05:55 -0400 Subject: [PATCH] fixes #379 - artist images don't show on web interface --- .../Music/ArtistsPostScanTask.cs | 52 +++++++++++++++---- MediaBrowser.Providers/Music/LastfmHelper.cs | 1 - 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs b/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs index 239f70df7e..1612147fbc 100644 --- a/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs +++ b/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs @@ -56,22 +56,37 @@ namespace MediaBrowser.Providers.Music if (musicArtist != null) { - artist.Images = new Dictionary(musicArtist.Images); + MergeImages(musicArtist.Images, artist.Images); - artist.BackdropImagePaths = musicArtist.BackdropImagePaths.ToList(); - artist.ScreenshotImagePaths = musicArtist.ScreenshotImagePaths.ToList(); - artist.SetProviderId(MetadataProviders.Musicbrainz, musicArtist.GetProviderId(MetadataProviders.Musicbrainz)); - artist.Genres = musicArtist.Genres.ToList(); + // Merge backdrops + var backdrops = musicArtist.BackdropImagePaths.ToList(); + backdrops.InsertRange(0, artist.BackdropImagePaths); + artist.BackdropImagePaths = backdrops.Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + + if (!artist.LockedFields.Contains(MetadataFields.Genres)) + { + // Merge genres + var genres = musicArtist.Genres.ToList(); + genres.InsertRange(0, artist.Genres); + artist.Genres = genres.Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + + artist.Genres = musicArtist.Genres.ToList(); + } } else { - // Avoid implicitly captured closure - var artist1 = artist; + if (!artist.LockedFields.Contains(MetadataFields.Genres)) + { + // Avoid implicitly captured closure + var artist1 = artist; - artist.Genres = allSongs.Where(i => i.HasArtist(artist1.Name)) - .SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + artist.Genres = allSongs.Where(i => i.HasArtist(artist1.Name)) + .SelectMany(i => i.Genres) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + } } numComplete++; @@ -89,6 +104,21 @@ namespace MediaBrowser.Providers.Music await _libraryManager.ValidateArtists(cancellationToken, innerProgress).ConfigureAwait(false); } + private void MergeImages(Dictionary source, Dictionary target) + { + foreach (var key in source.Keys + .ToList() + .Where(k => !target.ContainsKey(k))) + { + string path; + + if (source.TryGetValue(key, out path)) + { + target[key] = path; + } + } + } + /// /// Gets all artists. /// diff --git a/MediaBrowser.Providers/Music/LastfmHelper.cs b/MediaBrowser.Providers/Music/LastfmHelper.cs index e3fe490010..4e7688839d 100644 --- a/MediaBrowser.Providers/Music/LastfmHelper.cs +++ b/MediaBrowser.Providers/Music/LastfmHelper.cs @@ -40,7 +40,6 @@ namespace MediaBrowser.Providers.Music target.Tags = source.Tags.ToList(); target.Overview = source.Overview; target.ProductionLocations = source.ProductionLocations.ToList(); - target.Genres = source.Genres.ToList(); } public static void ProcessAlbumData(BaseItem item, LastfmAlbum data)