diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/MusicManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/MusicManager.cs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs index 1a9e98268..683e6c5cc 100644 --- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs @@ -27,10 +27,8 @@ namespace MediaBrowser.Server.Implementations.Library return list.Concat(GetInstantMixFromGenres(item.Genres, user)); } - public IEnumerable<Audio> GetInstantMixFromArtist(string name, User user) + public IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist artist, User user) { - var artist = _libraryManager.GetArtist(name); - var genres = user.RootFolder .GetRecursiveChildren(user, i => i is Audio) .Cast<Audio>() @@ -54,6 +52,18 @@ namespace MediaBrowser.Server.Implementations.Library return GetInstantMixFromGenres(genres, user); } + public IEnumerable<Audio> GetInstantMixFromFolder(Folder item, User user) + { + var genres = item + .GetRecursiveChildren(user, i => i is Audio) + .Cast<Audio>() + .SelectMany(i => i.Genres) + .Concat(item.Genres) + .DistinctNames(); + + return GetInstantMixFromGenres(genres, user); + } + public IEnumerable<Audio> GetInstantMixFromPlaylist(Playlist item, User user) { var genres = item @@ -107,7 +117,7 @@ namespace MediaBrowser.Server.Implementations.Library var artist = item as MusicArtist; if (artist != null) { - return GetInstantMixFromArtist(artist.Name, user); + return GetInstantMixFromArtist(artist, user); } var song = item as Audio; @@ -115,6 +125,12 @@ namespace MediaBrowser.Server.Implementations.Library { return GetInstantMixFromSong(song, user); } + + var folder = item as Folder; + if (folder != null) + { + return GetInstantMixFromFolder(folder, user); + } return new Audio[] { }; } |
