mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-18 06:53:07 +03:00
3.0.5666.2
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user