mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-02 20:32:52 +01:00
added more direct querying to folder
This commit is contained in:
@@ -75,7 +75,7 @@ namespace MediaBrowser.Api
|
||||
var album1 = (MusicAlbum)item1;
|
||||
var album2 = (MusicAlbum)item2;
|
||||
|
||||
var artists1 = album1.RecursiveChildren
|
||||
var artists1 = album1.GetRecursiveChildren()
|
||||
.OfType<Audio>()
|
||||
.SelectMany(i =>
|
||||
{
|
||||
@@ -92,7 +92,7 @@ namespace MediaBrowser.Api
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
var artists2 = album2.RecursiveChildren
|
||||
var artists2 = album2.GetRecursiveChildren()
|
||||
.OfType<Audio>()
|
||||
.SelectMany(i =>
|
||||
{
|
||||
|
||||
@@ -122,16 +122,16 @@ namespace MediaBrowser.Api
|
||||
return libraryManager.GetPerson(DeSlugPersonName(name, libraryManager));
|
||||
}
|
||||
|
||||
protected IEnumerable<BaseItem> GetAllLibraryItems(Guid? userId, IUserManager userManager, ILibraryManager libraryManager)
|
||||
protected IList<BaseItem> GetAllLibraryItems(Guid? userId, IUserManager userManager, ILibraryManager libraryManager)
|
||||
{
|
||||
if (userId.HasValue)
|
||||
{
|
||||
var user = userManager.GetUserById(userId.Value);
|
||||
|
||||
return userManager.GetUserById(userId.Value).RootFolder.GetRecursiveChildren(user);
|
||||
return userManager.GetUserById(userId.Value).RootFolder.GetRecursiveChildren(user, null);
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren;
|
||||
return libraryManager.RootFolder.GetRecursiveChildren();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -147,7 +147,7 @@ namespace MediaBrowser.Api
|
||||
return name;
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren
|
||||
return libraryManager.RootFolder.GetRecursiveChildren()
|
||||
.OfType<Audio>()
|
||||
.SelectMany(i =>
|
||||
{
|
||||
@@ -181,7 +181,7 @@ namespace MediaBrowser.Api
|
||||
return name;
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren
|
||||
return libraryManager.RootFolder.GetRecursiveChildren()
|
||||
.SelectMany(i => i.Genres)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.FirstOrDefault(i =>
|
||||
@@ -200,8 +200,7 @@ namespace MediaBrowser.Api
|
||||
return name;
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren
|
||||
.OfType<Game>()
|
||||
return libraryManager.RootFolder.GetRecursiveChildren(i => i is Game)
|
||||
.SelectMany(i => i.Genres)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.FirstOrDefault(i =>
|
||||
@@ -223,7 +222,7 @@ namespace MediaBrowser.Api
|
||||
return name;
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren
|
||||
return libraryManager.RootFolder.GetRecursiveChildren()
|
||||
.SelectMany(i => i.Studios)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.FirstOrDefault(i =>
|
||||
@@ -245,7 +244,7 @@ namespace MediaBrowser.Api
|
||||
return name;
|
||||
}
|
||||
|
||||
return libraryManager.RootFolder.RecursiveChildren
|
||||
return libraryManager.RootFolder.GetRecursiveChildren()
|
||||
.SelectMany(i => i.People)
|
||||
.Select(i => i.Name)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
|
||||
@@ -103,18 +103,7 @@ namespace MediaBrowser.Api
|
||||
/// <returns>Task{IEnumerable{SearchHintResult}}.</returns>
|
||||
private async Task<SearchHintResult> GetSearchHintsAsync(GetSearchHints request)
|
||||
{
|
||||
IEnumerable<BaseItem> inputItems;
|
||||
|
||||
if (request.UserId.HasValue)
|
||||
{
|
||||
var user = _userManager.GetUserById(request.UserId.Value);
|
||||
|
||||
inputItems = user.RootFolder.GetRecursiveChildren(user);
|
||||
}
|
||||
else
|
||||
{
|
||||
inputItems = _libraryManager.RootFolder.RecursiveChildren;
|
||||
}
|
||||
var inputItems = GetAllLibraryItems(request.UserId, _userManager, _libraryManager);
|
||||
|
||||
var results = await _searchEngine.GetSearchHints(inputItems, request.SearchTerm).ConfigureAwait(false);
|
||||
|
||||
@@ -180,21 +169,21 @@ namespace MediaBrowser.Api
|
||||
{
|
||||
result.Series = season.Series.Name;
|
||||
|
||||
result.EpisodeCount = season.RecursiveChildren.OfType<Episode>().Count();
|
||||
result.EpisodeCount = season.GetRecursiveChildren(i => i is Episode).Count;
|
||||
}
|
||||
|
||||
var series = item as Series;
|
||||
|
||||
if (series != null)
|
||||
{
|
||||
result.EpisodeCount = series.RecursiveChildren.OfType<Episode>().Count();
|
||||
result.EpisodeCount = series.GetRecursiveChildren(i => i is Episode).Count;
|
||||
}
|
||||
|
||||
var album = item as MusicAlbum;
|
||||
|
||||
if (album != null)
|
||||
{
|
||||
var songs = album.RecursiveChildren.OfType<Audio>().ToList();
|
||||
var songs = album.GetRecursiveChildren().OfType<Audio>().ToList();
|
||||
|
||||
result.SongCount = songs.Count;
|
||||
|
||||
|
||||
@@ -104,8 +104,8 @@ namespace MediaBrowser.Api
|
||||
var fields = request.GetItemFields().ToList();
|
||||
|
||||
var inputItems = user == null
|
||||
? libraryManager.RootFolder.RecursiveChildren
|
||||
: user.RootFolder.GetRecursiveChildren(user);
|
||||
? libraryManager.RootFolder.GetRecursiveChildren(i => i.Id != item.Id)
|
||||
: user.RootFolder.GetRecursiveChildren(user, i => i.Id != item.Id);
|
||||
|
||||
var items = GetSimilaritems(item, inputItems, includeInSearch, getSimilarityScore)
|
||||
.ToList();
|
||||
@@ -139,11 +139,7 @@ namespace MediaBrowser.Api
|
||||
{
|
||||
inputItems = inputItems.Where(includeInSearch);
|
||||
|
||||
// Avoid implicitly captured closure
|
||||
var currentItem = item;
|
||||
|
||||
return inputItems.Where(i => i.Id != currentItem.Id)
|
||||
.Select(i => new Tuple<BaseItem, int>(i, getSimilarityScore(item, i)))
|
||||
return inputItems.Select(i => new Tuple<BaseItem, int>(i, getSimilarityScore(item, i)))
|
||||
.Where(i => i.Item2 > 2)
|
||||
.OrderByDescending(i => i.Item2)
|
||||
.Select(i => i.Item1);
|
||||
|
||||
@@ -157,10 +157,9 @@ namespace MediaBrowser.Api
|
||||
var user = _userManager.GetUserById(request.UserId);
|
||||
|
||||
var itemsList = user.RootFolder
|
||||
.GetRecursiveChildren(user)
|
||||
.OfType<Series>()
|
||||
.GetRecursiveChildren(user, i => i is Series)
|
||||
.AsParallel()
|
||||
.Select(i => GetNextUp(i, user))
|
||||
.Select(i => GetNextUp((Series)i, user))
|
||||
.ToList();
|
||||
|
||||
itemsList = itemsList
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetArtists request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// </summary>
|
||||
/// <param name="request">The request.</param>
|
||||
/// <returns>Task{ItemsResult}.</returns>
|
||||
protected async Task<ItemsResult> GetResult(GetItemsByName request)
|
||||
protected ItemsResult GetResult(GetItemsByName request)
|
||||
{
|
||||
User user = null;
|
||||
BaseItem item;
|
||||
@@ -80,7 +80,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
}
|
||||
else
|
||||
{
|
||||
items = request.Recursive ? folder.RecursiveChildren : folder.Children;
|
||||
items = request.Recursive ? folder.GetRecursiveChildren() : folder.Children;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -258,23 +258,6 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the items.
|
||||
/// </summary>
|
||||
/// <param name="userId">The user id.</param>
|
||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||
protected IEnumerable<BaseItem> GetItems(Guid? userId)
|
||||
{
|
||||
if (userId.HasValue)
|
||||
{
|
||||
var user = UserManager.GetUserById(userId.Value);
|
||||
|
||||
return UserManager.GetUserById(userId.Value).RootFolder.GetRecursiveChildren(user);
|
||||
}
|
||||
|
||||
return LibraryManager.RootFolder.RecursiveChildren;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetGameGenres request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetGenres request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetMusicGenres request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetPersons request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetStudios request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
@@ -451,9 +451,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
if (series != null)
|
||||
{
|
||||
var dtos = series
|
||||
.RecursiveChildren
|
||||
.OfType<Episode>()
|
||||
.Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
|
||||
.GetRecursiveChildren(i => i is Episode && i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
|
||||
.OrderBy(i =>
|
||||
{
|
||||
if (i.PremiereDate.HasValue)
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetYears request)
|
||||
{
|
||||
var result = GetResult(request).Result;
|
||||
var result = GetResult(request);
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user