Paginate movies query

Signed-off-by: Petrus.Z <silencly07@gmail.com>
This commit is contained in:
Petrus.Z 2021-11-18 12:49:56 +08:00
parent 6d74c83ddb
commit b635b5a7e3
No known key found for this signature in database
GPG Key ID: 71B321E14F898C3D

View File

@ -62,6 +62,11 @@ namespace Emby.Server.Implementations.Library.Validators
continue; continue;
} }
var startIndex = 0;
var pagesize = 1000;
while (true)
{
var movies = _libraryManager.GetItemList(new InternalItemsQuery var movies = _libraryManager.GetItemList(new InternalItemsQuery
{ {
MediaTypes = new string[] { MediaType.Video }, MediaTypes = new string[] { MediaType.Video },
@ -69,20 +74,24 @@ namespace Emby.Server.Implementations.Library.Validators
IsVirtualItem = false, IsVirtualItem = false,
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) }, OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
Parent = library, Parent = library,
StartIndex = startIndex,
Limit = pagesize,
Recursive = true Recursive = true
}); });
startIndex += pagesize;
if (!movies.Any()) {
break;
}
foreach (var m in movies) foreach (var m in movies)
{ {
if (m is Movie movie && !string.IsNullOrEmpty(movie.CollectionName)) if (m is Movie movie && !string.IsNullOrEmpty(movie.CollectionName))
{ {
if (collectionNameMoviesMap.TryGetValue(movie.CollectionName, out var movieList)) if (collectionNameMoviesMap.TryGetValue(movie.CollectionName, out var movieList))
{
if (!movieList.Contains(movie.Id))
{ {
movieList.Add(movie.Id); movieList.Add(movie.Id);
} }
}
else else
{ {
collectionNameMoviesMap[movie.CollectionName] = new HashSet<Guid> { movie.Id }; collectionNameMoviesMap[movie.CollectionName] = new HashSet<Guid> { movie.Id };
@ -90,6 +99,7 @@ namespace Emby.Server.Implementations.Library.Validators
} }
} }
} }
}
var numComplete = 0; var numComplete = 0;
var count = collectionNameMoviesMap.Count; var count = collectionNameMoviesMap.Count;