Extract media attachment one by one if the filename appears to be a path (#11812)

pull/11857/head
gnattu 4 months ago committed by GitHub
parent bcf884ccfa
commit 45e8872cc0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -89,15 +89,28 @@ namespace MediaBrowser.MediaEncoding.Attachments
string outputPath, string outputPath,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
using (await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false)) var shouldExtractOneByOne = mediaSource.MediaAttachments.Any(a => a.FileName.Contains('/', StringComparison.OrdinalIgnoreCase) || a.FileName.Contains('\\', StringComparison.OrdinalIgnoreCase));
if (shouldExtractOneByOne)
{ {
if (!Directory.Exists(outputPath)) var attachmentIndexes = mediaSource.MediaAttachments.Select(a => a.Index);
foreach (var i in attachmentIndexes)
{ {
await ExtractAllAttachmentsInternal( var newName = Path.Join(outputPath, i.ToString(CultureInfo.InvariantCulture));
_mediaEncoder.GetInputArgument(inputFile, mediaSource), await ExtractAttachment(inputFile, mediaSource, i, newName, cancellationToken).ConfigureAwait(false);
outputPath, }
false, }
cancellationToken).ConfigureAwait(false); else
{
using (await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false))
{
if (!Directory.Exists(outputPath))
{
await ExtractAllAttachmentsInternal(
_mediaEncoder.GetInputArgument(inputFile, mediaSource),
outputPath,
false,
cancellationToken).ConfigureAwait(false);
}
} }
} }
} }

Loading…
Cancel
Save