From 9bb1bf69a5fb1722d69503d8ed2dc263c959aaac Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 13 Nov 2013 14:35:00 -0500 Subject: [PATCH] fixes #624 - Allow soundtracks to inherit theme video/songs from linked movies, series & games --- MediaBrowser.Api/LibraryService.cs | 36 ++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) 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));