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