aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-14 10:05:55 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-14 10:05:55 -0400
commitab70effd5e130ebc189c1457294fda6811590147 (patch)
treebaabe7fe8c17367595eadfa086658d88b2562726
parentf064d6c9c7eac21481198d6adee2fe0b4d303bd7 (diff)
fixes #379 - artist images don't show on web interface
-rw-r--r--MediaBrowser.Providers/Music/ArtistsPostScanTask.cs52
-rw-r--r--MediaBrowser.Providers/Music/LastfmHelper.cs1
2 files changed, 41 insertions, 12 deletions
diff --git a/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs b/MediaBrowser.Providers/Music/ArtistsPostScanTask.cs
index 239f70df7..1612147fb 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<ImageType, string>(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<ImageType, string> source, Dictionary<ImageType, string> target)
+ {
+ foreach (var key in source.Keys
+ .ToList()
+ .Where(k => !target.ContainsKey(k)))
+ {
+ string path;
+
+ if (source.TryGetValue(key, out path))
+ {
+ target[key] = path;
+ }
+ }
+ }
+
/// <summary>
/// Gets all artists.
/// </summary>
diff --git a/MediaBrowser.Providers/Music/LastfmHelper.cs b/MediaBrowser.Providers/Music/LastfmHelper.cs
index e3fe49001..4e7688839 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)