fixes #520 - Support multiple artists per audio track

This commit is contained in:
Luke Pulverenti
2013-09-05 15:00:50 -04:00
parent cbf061d5f6
commit 44b12c0f9f
15 changed files with 109 additions and 52 deletions

View File

@@ -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();
}

View File

@@ -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;
})

View File

@@ -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();

View File

@@ -37,7 +37,7 @@ namespace MediaBrowser.Server.Implementations.Sorting
return string.Empty;
}
return audio.Artist ?? string.Empty;
return audio.Artists.FirstOrDefault() ?? string.Empty;
}
/// <summary>