From 02fedead11f738c09e503c3bdc74e2dd98e21cc8 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 3 Jun 2013 22:02:49 -0400 Subject: re-factored some file system access --- .../ScheduledTasks/ChapterImagesTask.cs | 8 ++++++++ .../ScheduledTasks/ImageCleanupTask.cs | 21 ++++++++++++++------- .../ScheduledTasks/VideoImagesTask.cs | 16 ++++++++++++---- 3 files changed, 34 insertions(+), 11 deletions(-) (limited to 'MediaBrowser.Server.Implementations/ScheduledTasks') diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 95dc4e7aec..2d9d5abfe3 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -168,6 +168,14 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks if (!success) { previouslyFailedImages.Add(key); + + var parentPath = Path.GetDirectoryName(failHistoryPath); + + if (!Directory.Exists(parentPath)) + { + Directory.CreateDirectory(parentPath); + } + _jsonSerializer.SerializeToFile(previouslyFailedImages, failHistoryPath); } diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs index 0c30165524..0e78824c1e 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs @@ -165,7 +165,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var specialFeattures = _itemRepo.GetItems(movie.SpecialFeatureIds).ToList(); images = specialFeattures.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); } - + return images; } @@ -176,13 +176,20 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// IEnumerable{System.String}. private IEnumerable GetFiles(string path) { - return Directory.EnumerateFiles(path, "*", SearchOption.AllDirectories) - .Where(i => - { - var ext = Path.GetExtension(i); + try + { + return Directory.EnumerateFiles(path, "*", SearchOption.AllDirectories) + .Where(i => + { + var ext = Path.GetExtension(i); - return !string.IsNullOrEmpty(ext) && BaseItem.SupportedImageExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase); - }); + return !string.IsNullOrEmpty(ext) && BaseItem.SupportedImageExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase); + }); + } + catch (DirectoryNotFoundException) + { + return new string[] { }; + } } /// diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs index f0afe63587..2233f6fdf2 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs @@ -8,14 +8,15 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers.MediaInfo; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using MoreLinq; using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Logging; -using MoreLinq; namespace MediaBrowser.Server.Implementations.ScheduledTasks { @@ -263,7 +264,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var path = ImageCache.GetResourcePath(filename, ".jpg"); - if (!ImageCache.ContainsFilePath(path)) + if (!File.Exists(path)) { var semaphore = GetLock(path); @@ -271,10 +272,17 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false); // Check again - if (!ImageCache.ContainsFilePath(path)) + if (!File.Exists(path)) { try { + var parentPath = Path.GetDirectoryName(path); + + if (!Directory.Exists(parentPath)) + { + Directory.CreateDirectory(parentPath); + } + await ExtractImageInternal(item, path, cancellationToken).ConfigureAwait(false); } finally -- cgit v1.2.3