aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-07-08 12:10:34 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-07-08 12:10:34 -0400
commit0291df3193f6fd23806a6ec1e87bf1aa7ed49c25 (patch)
treeafc3c6c48119ea644f6111e2c3686e3aae3db637 /MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
parentdfa17aec70652d8a21d43c889f08f8c0fd805d09 (diff)
3.0.5666.2
Diffstat (limited to 'MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs24
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;
}