diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs index f03d797954..2e9ea6cebe 100644 --- a/MediaBrowser.Api/LibraryService.cs +++ b/MediaBrowser.Api/LibraryService.cs @@ -595,6 +595,8 @@ namespace MediaBrowser.Api : (Folder)_libraryManager.RootFolder) : _dtoService.GetItemByDtoId(request.Id, request.UserId); + var originalItem = item; + while (item.ThemeSongIds.Count == 0 && request.InheritFromParent && item.Parent != null) { item = item.Parent; @@ -605,7 +607,21 @@ namespace MediaBrowser.Api .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtos = item.ThemeSongIds.Select(_libraryManager.GetItemById) + var themeSongIds = item.ThemeSongIds; + + if (themeSongIds.Count == 0 && request.InheritFromParent) + { + var album = originalItem as MusicAlbum; + + if (album != null) + { + themeSongIds = album.SoundtrackIds + .SelectMany(i => _libraryManager.GetItemById(i).ThemeSongIds) + .ToList(); + } + } + + var dtos = themeSongIds.Select(_libraryManager.GetItemById) .OrderBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, fields, user, item)); @@ -641,6 +657,8 @@ namespace MediaBrowser.Api : (Folder)_libraryManager.RootFolder) : _dtoService.GetItemByDtoId(request.Id, request.UserId); + var originalItem = item; + while (item.ThemeVideoIds.Count == 0 && request.InheritFromParent && item.Parent != null) { item = item.Parent; @@ -651,7 +669,21 @@ namespace MediaBrowser.Api .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtos = item.ThemeVideoIds.Select(_libraryManager.GetItemById) + var themeVideoIds = item.ThemeVideoIds; + + if (themeVideoIds.Count == 0 && request.InheritFromParent) + { + var album = originalItem as MusicAlbum; + + if (album != null) + { + themeVideoIds = album.SoundtrackIds + .SelectMany(i => _libraryManager.GetItemById(i).ThemeVideoIds) + .ToList(); + } + } + + var dtos = themeVideoIds.Select(_libraryManager.GetItemById) .OrderBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, fields, user, item));