Backport pull request #11812 from jellyfin/release-10.9.z

Extract media attachment one by one if the filename appears to be a path

Original-merge: 45e8872cc0

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
master
gnattu 4 weeks ago committed by Joshua M. Boniface
parent 1a94976752
commit c4b7c91f3a

@ -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