diff options
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ArtistsService.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 2 |
2 files changed, 20 insertions, 3 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index 3af6da4b1d..20b0f5fb1e 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Api.UserLibrary { } - [Route("/AlbumArtists", "GET", Summary = "Gets all album artists from a given item, folder, or the entire library")] + [Route("/Artists/AlbumArtists", "GET", Summary = "Gets all album artists from a given item, folder, or the entire library")] public class GetAlbumArtists : GetItemsByName { } @@ -128,7 +128,24 @@ namespace MediaBrowser.Api.UserLibrary { if (request is GetAlbumArtists) { - return items.OfType<MusicArtist>(); + return items + .OfType<IHasAlbumArtist>() + .Where(i => !(i is MusicAlbum)) + .SelectMany(i => i.AlbumArtists) + .Distinct(StringComparer.OrdinalIgnoreCase) + .Select(name => + { + try + { + return LibraryManager.GetArtist(name); + } + catch (Exception ex) + { + Logger.ErrorException("Error getting artist {0}", ex, name); + return null; + } + + }).Where(i => i != null); } return items diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 28337344a1..c926c16ff2 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -816,7 +816,7 @@ namespace MediaBrowser.Api.UserLibrary if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) { items = items.OfType<IHasAlbumArtist>() - .Where(i => string.Compare(request.AlbumArtistStartsWithOrGreater, i.AlbumArtist, StringComparison.CurrentCultureIgnoreCase) < 1) + .Where(i => string.Compare(request.AlbumArtistStartsWithOrGreater, i.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1) .Cast<BaseItem>(); } |
