@ -88,6 +88,18 @@ namespace MediaBrowser.MediaEncoding.Attachments
MediaSourceInfo mediaSource ,
MediaSourceInfo mediaSource ,
string outputPath ,
string outputPath ,
CancellationToken cancellationToken )
CancellationToken cancellationToken )
{
var shouldExtractOneByOne = mediaSource . MediaAttachments . Any ( a = > a . FileName . Contains ( '/' , StringComparison . OrdinalIgnoreCase ) | | a . FileName . Contains ( '\\' , StringComparison . OrdinalIgnoreCase ) ) ;
if ( shouldExtractOneByOne )
{
var attachmentIndexes = mediaSource . MediaAttachments . Select ( a = > a . Index ) ;
foreach ( var i in attachmentIndexes )
{
var newName = Path . Join ( outputPath , i . ToString ( CultureInfo . InvariantCulture ) ) ;
await ExtractAttachment ( inputFile , mediaSource , i , newName , cancellationToken ) . ConfigureAwait ( false ) ;
}
}
else
{
{
using ( await _semaphoreLocks . LockAsync ( outputPath , cancellationToken ) . ConfigureAwait ( false ) )
using ( await _semaphoreLocks . LockAsync ( outputPath , cancellationToken ) . ConfigureAwait ( false ) )
{
{
@ -101,6 +113,7 @@ namespace MediaBrowser.MediaEncoding.Attachments
}
}
}
}
}
}
}
public async Task ExtractAllAttachmentsExternal (
public async Task ExtractAllAttachmentsExternal (
string inputArgument ,
string inputArgument ,