diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-05 15:00:50 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-05 15:00:50 -0400 |
| commit | 44b12c0f9fc81dd10d6f655f341d7df28c5f3e20 (patch) | |
| tree | 520179e21ec80e988e44407b06c2f22f040d9903 /MediaBrowser.Server.Implementations | |
| parent | cbf061d5f62a98a977d192bb0117f6c21be7e808 (diff) | |
fixes #520 - Support multiple artists per audio track
Diffstat (limited to 'MediaBrowser.Server.Implementations')
4 files changed, 16 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 66e3613f55..4ad2479e61 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -893,7 +893,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.Album = audio.Album; dto.AlbumArtist = audio.AlbumArtist; - dto.Artists = new[] { audio.Artist }; + dto.Artists = audio.Artists.ToArray(); var albumParent = audio.FindParent<MusicAlbum>(); @@ -919,8 +919,7 @@ namespace MediaBrowser.Server.Implementations.Dto dto.AlbumArtist = songs.Select(i => i.AlbumArtist).FirstOrDefault(i => !string.IsNullOrEmpty(i)); dto.Artists = - songs.Select(i => i.Artist ?? string.Empty) - .Where(i => !string.IsNullOrEmpty(i)) + songs.SelectMany(i => i.Artists) .Distinct(StringComparer.OrdinalIgnoreCase) .ToArray(); } diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 29a495247c..d9ab75397c 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -900,10 +900,7 @@ namespace MediaBrowser.Server.Implementations.Library { list.Add(c.AlbumArtist); } - if (!string.IsNullOrEmpty(c.Artist)) - { - list.Add(c.Artist); - } + list.AddRange(c.Artists); return list; }) diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs index 0fd39a25d3..d8b8a18e92 100644 --- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs @@ -120,8 +120,18 @@ namespace MediaBrowser.Server.Implementations.Library // Find artists var artists = items.OfType<Audio>() - .SelectMany(i => new[] { i.Artist, i.AlbumArtist }) - .Where(i => !string.IsNullOrEmpty(i)) + .SelectMany(i => + { + var list = new List<string>(); + + if (!string.IsNullOrEmpty(i.AlbumArtist)) + { + list.Add(i.AlbumArtist); + } + list.AddRange(i.Artists); + + return list; + }) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); diff --git a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs index b0a6989e93..e3de0df289 100644 --- a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Server.Implementations.Sorting return string.Empty; } - return audio.Artist ?? string.Empty; + return audio.Artists.FirstOrDefault() ?? string.Empty; } /// <summary> |
