diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-10 23:31:00 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-10 23:31:00 -0400 |
| commit | 18325159c5b46d2aa31d2dafd837ede7214b28ef (patch) | |
| tree | 4966247933da5aeffad1672d87c67c1ebbb036f1 /MediaBrowser.Server.Implementations | |
| parent | fab983b6dcf7b282e8c96e3509209fcc568fb922 (diff) | |
added a new MusicGenre entity
Diffstat (limited to 'MediaBrowser.Server.Implementations')
3 files changed, 53 insertions, 2 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index ed4e1dcb3..fb05c8c43 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -635,6 +635,17 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> + /// Gets the genre. + /// </summary> + /// <param name="name">The name.</param> + /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param> + /// <returns>Task{MusicGenre}.</returns> + public Task<MusicGenre> GetMusicGenre(string name, bool allowSlowProviders = false) + { + return GetItemByName<MusicGenre>(ConfigurationManager.ApplicationPaths.MusicGenrePath, name, CancellationToken.None, allowSlowProviders); + } + + /// <summary> /// Gets a Genre /// </summary> /// <param name="name">The name.</param> diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs index 891965f12..4a521658f 100644 --- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs @@ -111,6 +111,7 @@ namespace MediaBrowser.Server.Implementations.Library var items = inputItems.Where(i => !(i is MusicArtist)).ToList(); + // Add search hints based on item name hints.AddRange(items.Select(item => { var index = GetIndex(item.Name, searchTerm, terms); @@ -144,8 +145,9 @@ namespace MediaBrowser.Server.Implementations.Library } } - // Find genres - var genres = items.SelectMany(i => i.Genres) + // Find genres, from non-audio items + var genres = items.Where(i => !(i is Audio) && !(i is MusicAlbum) && !(i is MusicAlbumDisc) && !(i is MusicArtist) && !(i is MusicVideo)) + .SelectMany(i => i.Genres) .Where(i => !string.IsNullOrEmpty(i)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); @@ -169,6 +171,32 @@ namespace MediaBrowser.Server.Implementations.Library } } + // Find music genres + var musicGenres = items.Where(i => (i is Audio) || (i is MusicAlbum) || (i is MusicAlbumDisc) || (i is MusicArtist) || (i is MusicVideo)) + .SelectMany(i => i.Genres) + .Where(i => !string.IsNullOrEmpty(i)) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + + foreach (var item in musicGenres) + { + var index = GetIndex(item, searchTerm, terms); + + if (index.Item2 != -1) + { + try + { + var genre = await _libraryManager.GetMusicGenre(item).ConfigureAwait(false); + + hints.Add(new Tuple<BaseItem, string, int>(genre, index.Item1, index.Item2)); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting {0}", ex, item); + } + } + } + // Find studios var studios = items.SelectMany(i => i.Studios) .Where(i => !string.IsNullOrEmpty(i)) diff --git a/MediaBrowser.Server.Implementations/ServerApplicationPaths.cs b/MediaBrowser.Server.Implementations/ServerApplicationPaths.cs index 655876c8c..c2512e016 100644 --- a/MediaBrowser.Server.Implementations/ServerApplicationPaths.cs +++ b/MediaBrowser.Server.Implementations/ServerApplicationPaths.cs @@ -107,6 +107,18 @@ namespace MediaBrowser.Server.Implementations } /// <summary> + /// Gets the path to the Genre directory + /// </summary> + /// <value>The genre path.</value> + public string MusicGenrePath + { + get + { + return Path.Combine(ItemsByNamePath, "MusicGenre"); + } + } + + /// <summary> /// Gets the path to the Studio directory /// </summary> /// <value>The studio path.</value> |
