@ -64,7 +64,12 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
/// <returns>Task.</returns>
public async Task Execute ( CancellationToken cancellationToken , IProgress < double > progress )
{
await EnsureChapterImages ( cancellationToken ) . ConfigureAwait ( false ) ;
var items = _libraryManager . RootFolder . RecursiveChildren . ToList ( ) ;
foreach ( var video in items . OfType < Video > ( ) . Where ( v = > v . Chapters ! = null ) )
{
await _kernel . FFMpegManager . PopulateChapterImages ( video , cancellationToken , false , true ) . ConfigureAwait ( false ) ;
}
// First gather all image files
var files = GetFiles ( _kernel . FFMpegManager . AudioImagesDataPath )
@ -73,7 +78,6 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
. ToList ( ) ;
// Now gather all items
var items = _libraryManager . RootFolder . RecursiveChildren . ToList ( ) ;
items . Add ( _libraryManager . RootFolder ) ;
// Determine all possible image paths
@ -83,14 +87,14 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
var numComplete = 0 ;
var tasks = files . Select ( file = > Task . Run ( ( ) = >
foreach ( var file in files )
{
cancellationToken . ThrowIfCancellationRequested ( ) ;
if ( ! pathsInUse . ContainsKey ( file ) )
{
cancellationToken . ThrowIfCancellationRequested ( ) ;
try
{
File . Delete ( file ) ;
@ -102,34 +106,12 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
}
// Update progress
lock ( progress )
{
numComplete + + ;
double percent = numComplete ;
percent / = files . Count ;
progress . Report ( 100 * percent ) ;
}
} ) ) ;
await Task . WhenAll ( tasks ) . ConfigureAwait ( false ) ;
}
/// <summary>
/// Ensures the chapter images.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
private Task EnsureChapterImages ( CancellationToken cancellationToken )
{
var videos = _libraryManager . RootFolder . RecursiveChildren . OfType < Video > ( ) . Where ( v = > v . Chapters ! = null ) . ToList ( ) ;
numComplete + + ;
double percent = numComplete ;
percent / = files . Count ;
var tasks = videos . Select ( v = > Task . Run ( async ( ) = >
{
await _kernel . FFMpegManager . PopulateChapterImages ( v , cancellationToken , false , true ) ;
} ) ) ;
return Task . WhenAll ( tasks ) ;
progress . Report ( 100 * percent ) ;
}
}
/// <summary>