aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-10 23:31:00 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-10 23:31:00 -0400
commit18325159c5b46d2aa31d2dafd837ede7214b28ef (patch)
tree4966247933da5aeffad1672d87c67c1ebbb036f1 /MediaBrowser.Server.Implementations/Library
parentfab983b6dcf7b282e8c96e3509209fcc568fb922 (diff)
added a new MusicGenre entity
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs11
-rw-r--r--MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs32
2 files changed, 41 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))