diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager/ImageSaver.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/ImageSaver.cs | 93 |
1 files changed, 20 insertions, 73 deletions
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 2a4ef7597..bac90ae37 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -30,10 +30,6 @@ namespace MediaBrowser.Providers.Manager private readonly IServerConfigurationManager _config; /// <summary> - /// The remote image cache - /// </summary> - private readonly FileSystemRepository _remoteImageCache; - /// <summary> /// The _directory watchers /// </summary> private readonly ILibraryMonitor _libraryMonitor; @@ -41,17 +37,18 @@ namespace MediaBrowser.Providers.Manager private readonly ILogger _logger; /// <summary> - /// Initializes a new instance of the <see cref="ImageSaver"/> class. + /// Initializes a new instance of the <see cref="ImageSaver" /> class. /// </summary> /// <param name="config">The config.</param> /// <param name="libraryMonitor">The directory watchers.</param> + /// <param name="fileSystem">The file system.</param> + /// <param name="logger">The logger.</param> public ImageSaver(IServerConfigurationManager config, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, ILogger logger) { _config = config; _libraryMonitor = libraryMonitor; _fileSystem = fileSystem; _logger = logger; - _remoteImageCache = new FileSystemRepository(config.ApplicationPaths.DownloadedImagesDataPath); } /// <summary> @@ -96,25 +93,16 @@ namespace MediaBrowser.Providers.Manager { var series = season.Series; - if (series != null) + if (series != null && series.SupportsLocalMetadata) { - var seriesLocationType = series.LocationType; - if (seriesLocationType == LocationType.FileSystem || seriesLocationType == LocationType.Offline) - { - saveLocally = true; - } + saveLocally = true; } } } - if (type == ImageType.Backdrop && imageIndex == null) + if (!imageIndex.HasValue && item.AllowsMultipleImages(type)) { - imageIndex = item.BackdropImagePaths.Count; - } - else if (type == ImageType.Screenshot && imageIndex == null) - { - var hasScreenshots = (IHasScreenshots)item; - imageIndex = hasScreenshots.ScreenshotImagePaths.Count; + imageIndex = item.GetImages(type).Count(); } var index = imageIndex ?? 0; @@ -275,43 +263,7 @@ namespace MediaBrowser.Providers.Manager /// imageIndex</exception> private void SetImagePath(BaseItem item, ImageType type, int? imageIndex, string path) { - switch (type) - { - case ImageType.Screenshot: - - if (!imageIndex.HasValue) - { - throw new ArgumentNullException("imageIndex"); - } - - var hasScreenshots = (IHasScreenshots)item; - if (hasScreenshots.ScreenshotImagePaths.Count > imageIndex.Value) - { - hasScreenshots.ScreenshotImagePaths[imageIndex.Value] = path; - } - else if (!hasScreenshots.ScreenshotImagePaths.Contains(path, StringComparer.OrdinalIgnoreCase)) - { - hasScreenshots.ScreenshotImagePaths.Add(path); - } - break; - case ImageType.Backdrop: - if (!imageIndex.HasValue) - { - throw new ArgumentNullException("imageIndex"); - } - if (item.BackdropImagePaths.Count > imageIndex.Value) - { - item.BackdropImagePaths[imageIndex.Value] = path; - } - else if (!item.BackdropImagePaths.Contains(path, StringComparer.OrdinalIgnoreCase)) - { - item.BackdropImagePaths.Add(path); - } - break; - default: - item.SetImagePath(type, path); - break; - } + item.SetImagePath(type, imageIndex ?? 0, new FileInfo(path)); } /// <summary> @@ -347,19 +299,10 @@ namespace MediaBrowser.Providers.Manager filename = item is Episode ? Path.GetFileNameWithoutExtension(item.Path) : "folder"; break; case ImageType.Backdrop: - if (!imageIndex.HasValue) - { - throw new ArgumentNullException("imageIndex"); - } - filename = GetBackdropSaveFilename(item.BackdropImagePaths, "backdrop", "backdrop", imageIndex.Value); + filename = GetBackdropSaveFilename(item.GetImages(type), "backdrop", "backdrop", imageIndex); break; case ImageType.Screenshot: - if (!imageIndex.HasValue) - { - throw new ArgumentNullException("imageIndex"); - } - var hasScreenshots = (IHasScreenshots)item; - filename = GetBackdropSaveFilename(hasScreenshots.ScreenshotImagePaths, "screenshot", "screenshot", imageIndex.Value); + filename = GetBackdropSaveFilename(item.GetImages(type), "screenshot", "screenshot", imageIndex); break; default: filename = type.ToString().ToLower(); @@ -398,22 +341,26 @@ namespace MediaBrowser.Providers.Manager // None of the save local conditions passed, so store it in our internal folders if (string.IsNullOrEmpty(path)) { - path = _remoteImageCache.GetResourcePath(item.GetType().FullName + item.Id, filename + extension); + if (string.IsNullOrEmpty(filename)) + { + filename = "folder"; + } + path = Path.Combine(_config.ApplicationPaths.GetInternalMetadataPath(item.Id), filename + extension); } return path; } - private string GetBackdropSaveFilename(IEnumerable<string> images, string zeroIndexFilename, string numberedIndexPrefix, int index) + private string GetBackdropSaveFilename(IEnumerable<ItemImageInfo> images, string zeroIndexFilename, string numberedIndexPrefix, int? index) { - if (index == 0) + if (index.HasValue && index.Value == 0) { return zeroIndexFilename; } - var filenames = images.Select(Path.GetFileNameWithoutExtension).ToList(); + var filenames = images.Select(i => Path.GetFileNameWithoutExtension(i.Path)).ToList(); - var current = index; + var current = 1; while (filenames.Contains(numberedIndexPrefix + current.ToString(UsCulture), StringComparer.OrdinalIgnoreCase)) { current++; @@ -484,7 +431,7 @@ namespace MediaBrowser.Providers.Manager return new[] { GetSavePathForItemInMixedFolder(item, type, "fanart" + outputIndex.ToString(UsCulture), extension) }; } - var extraFanartFilename = GetBackdropSaveFilename(item.BackdropImagePaths, "fanart", "fanart", outputIndex); + var extraFanartFilename = GetBackdropSaveFilename(item.GetImages(ImageType.Backdrop), "fanart", "fanart", outputIndex); return new[] { |
