diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-07-08 12:10:34 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-07-08 12:10:34 -0400 |
| commit | 0291df3193f6fd23806a6ec1e87bf1aa7ed49c25 (patch) | |
| tree | afc3c6c48119ea644f6111e2c3686e3aae3db637 /MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs | |
| parent | dfa17aec70652d8a21d43c889f08f8c0fd805d09 (diff) | |
3.0.5666.2
Diffstat (limited to 'MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs index f19668d5d..db9841f9d 100644 --- a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs +++ b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs @@ -71,6 +71,12 @@ namespace MediaBrowser.Server.Implementations.Intros var candidates = new List<ItemWithTrailer>(); + var itemPeople = _libraryManager.GetPeople(item); + var allPeople = _libraryManager.GetPeople(new InternalPeopleQuery + { + AppearsInItemId = item.Id + }); + if (config.EnableIntrosFromMoviesInLibrary) { var itemsWithTrailers = user.RootFolder @@ -94,6 +100,8 @@ namespace MediaBrowser.Server.Implementations.Intros Type = ItemWithTrailerType.ItemWithTrailer, User = user, WatchingItem = item, + WatchingItemPeople = itemPeople, + AllPeople = allPeople, Random = random, LibraryManager = _libraryManager })); @@ -135,6 +143,8 @@ namespace MediaBrowser.Server.Implementations.Intros Type = ItemWithTrailerType.ChannelTrailer, User = user, WatchingItem = item, + WatchingItemPeople = itemPeople, + AllPeople = allPeople, Random = random, LibraryManager = _libraryManager })); @@ -241,7 +251,7 @@ namespace MediaBrowser.Server.Implementations.Intros return true; } - internal static int GetSimiliarityScore(BaseItem item1, BaseItem item2, Random random, ILibraryManager libraryManager) + internal static int GetSimiliarityScore(BaseItem item1, List<PersonInfo> item1People, List<PersonInfo> allPeople, BaseItem item2, Random random, ILibraryManager libraryManager) { var points = 0; @@ -262,11 +272,13 @@ namespace MediaBrowser.Server.Implementations.Intros // Find common studios points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 5); - var item2PeopleNames = libraryManager.GetPeople(item2).Select(i => i.Name) - .Distinct(StringComparer.OrdinalIgnoreCase) + var item2PeopleNames = allPeople.Where(i => i.ItemId == item2.Id) + .Select(i => i.Name) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .DistinctNames() .ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); - points += libraryManager.GetPeople(item1).Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => + points += item1People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => { if (string.Equals(i.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase)) { @@ -341,6 +353,8 @@ namespace MediaBrowser.Server.Implementations.Intros internal ItemWithTrailerType Type; internal User User; internal BaseItem WatchingItem; + internal List<PersonInfo> WatchingItemPeople; + internal List<PersonInfo> AllPeople; internal Random Random; internal ILibraryManager LibraryManager; @@ -364,7 +378,7 @@ namespace MediaBrowser.Server.Implementations.Intros { if (!_score.HasValue) { - _score = GetSimiliarityScore(WatchingItem, Item, Random, LibraryManager); + _score = GetSimiliarityScore(WatchingItem, WatchingItemPeople, AllPeople, Item, Random, LibraryManager); } return _score.Value; } |
