aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick <20588554+nicknsy@users.noreply.github.com>2023-05-18 00:45:12 -0700
committerNick <20588554+nicknsy@users.noreply.github.com>2023-06-22 16:23:52 -0700
commitf82af0478122d668294affecd21f89fcec69a61d (patch)
tree712eb88b6e86cee87ae541347224c5b8977dfac6
parentd338253242f3b7996e735b94eacfa9d67ed0913a (diff)
Trickplay task pagination
-rw-r--r--MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs52
1 files changed, 31 insertions, 21 deletions
diff --git a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs
index 8ac7641aa..b090745bf 100644
--- a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs
+++ b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Trickplay;
@@ -11,6 +10,7 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Tasks;
using Microsoft.Extensions.Logging;
+using TagLib.Ape;
namespace MediaBrowser.Providers.Trickplay;
@@ -19,6 +19,8 @@ namespace MediaBrowser.Providers.Trickplay;
/// </summary>
public class TrickplayImagesTask : IScheduledTask
{
+ private const int QueryPageLimit = 100;
+
private readonly ILogger<TrickplayImagesTask> _logger;
private readonly ILibraryManager _libraryManager;
private readonly ILocalizationManager _localization;
@@ -71,38 +73,46 @@ public class TrickplayImagesTask : IScheduledTask
/// <inheritdoc />
public async Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
{
- var items = _libraryManager.GetItemList(new InternalItemsQuery
+ var query = new InternalItemsQuery
{
MediaTypes = new[] { MediaType.Video },
+ SourceTypes = new[] { SourceType.Library },
IsVirtualItem = false,
IsFolder = false,
- Recursive = true
- }).OfType<Video>().ToList();
+ Recursive = true,
+ Limit = QueryPageLimit
+ };
+
+ var numberOfVideos = _libraryManager.GetCount(query);
+ var startIndex = 0;
var numComplete = 0;
- foreach (var item in items)
+ while (startIndex < numberOfVideos)
{
- try
+ query.StartIndex = startIndex;
+ var videos = _libraryManager.GetItemList(query).OfType<Video>().ToList();
+
+ foreach (var video in videos)
{
cancellationToken.ThrowIfCancellationRequested();
- await _trickplayManager.RefreshTrickplayDataAsync(item, false, cancellationToken).ConfigureAwait(false);
- }
- catch (OperationCanceledException)
- {
- break;
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Error creating trickplay files for {ItemName}", item.Name);
- }
- numComplete++;
- double percent = numComplete;
- percent /= items.Count;
- percent *= 100;
+ try
+ {
+ await _trickplayManager.RefreshTrickplayDataAsync(video, false, cancellationToken).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Error creating trickplay files for {ItemName}", video.Name);
+ }
- progress.Report(percent);
+ numComplete++;
+ progress.Report(100d * numComplete / numberOfVideos);
+ }
+
+ startIndex += QueryPageLimit;
}
+
+ progress.Report(100);
}
}