|
|
|
@ -89,12 +89,12 @@ namespace MediaBrowser.MediaEncoding.Attachments
|
|
|
|
|
string outputPath,
|
|
|
|
|
CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
if (!Directory.Exists(outputPath))
|
|
|
|
|
{
|
|
|
|
|
var semaphore = _semaphoreLocks.GetOrAdd(outputPath, key => new SemaphoreSlim(1, 1));
|
|
|
|
|
var semaphore = _semaphoreLocks.GetOrAdd(outputPath, key => new SemaphoreSlim(1, 1));
|
|
|
|
|
|
|
|
|
|
await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
|
|
|
|
|
await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(outputPath))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
await ExtractAllAttachmentsInternal(
|
|
|
|
@ -116,12 +116,12 @@ namespace MediaBrowser.MediaEncoding.Attachments
|
|
|
|
|
string outputPath,
|
|
|
|
|
CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
if (!File.Exists(Path.Join(outputPath, id)))
|
|
|
|
|
{
|
|
|
|
|
var semaphore = _semaphoreLocks.GetOrAdd(outputPath, key => new SemaphoreSlim(1, 1));
|
|
|
|
|
var semaphore = _semaphoreLocks.GetOrAdd(outputPath, key => new SemaphoreSlim(1, 1));
|
|
|
|
|
|
|
|
|
|
await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
|
|
|
|
|
await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
if (!File.Exists(Path.Join(outputPath, id)))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
await ExtractAllAttachmentsInternal(
|
|
|
|
@ -158,10 +158,7 @@ namespace MediaBrowser.MediaEncoding.Attachments
|
|
|
|
|
throw new ArgumentNullException(nameof(outputPath));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(outputPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(outputPath);
|
|
|
|
|
}
|
|
|
|
|
Directory.CreateDirectory(outputPath);
|
|
|
|
|
|
|
|
|
|
var processArgs = string.Format(
|
|
|
|
|
CultureInfo.InvariantCulture,
|
|
|
|
|