diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index d46d4ec8a..7f158f1f2 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; @@ -60,40 +61,27 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// <param name="cancellationToken">The cancellation token.</param> /// <param name="progress">The progress.</param> /// <returns>Task.</returns> - public Task Execute(CancellationToken cancellationToken, IProgress<double> progress) + public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress) { - var videos = _libraryManager.RootFolder.RecursiveChildren.OfType<Video>().Where(v => v.Chapters != null).ToList(); + var videos = _libraryManager.RootFolder.RecursiveChildren + .OfType<Video>() + .Where(v => v.Chapters != null && v.Chapters.Count != 0) + .ToList(); var numComplete = 0; - var tasks = videos.Select(v => Task.Run(async () => + foreach (var video in videos) { - try - { - await _kernel.FFMpegManager.PopulateChapterImages(v, cancellationToken, true, true); - } - catch (OperationCanceledException) - { - throw; - } - catch (Exception ex) - { - _logger.ErrorException("Error creating chapter images for {0}", ex, v.Name); - } - finally - { - lock (progress) - { - numComplete++; - double percent = numComplete; - percent /= videos.Count; + cancellationToken.ThrowIfCancellationRequested(); + + await _kernel.FFMpegManager.PopulateChapterImages(video, cancellationToken, true, true); - progress.Report(100 * percent); - } - } - })); + numComplete++; + double percent = numComplete; + percent /= videos.Count; - return Task.WhenAll(tasks); + progress.Report(100 * percent); + } } /// <summary> |
