using System.Collections.Generic; using System.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; namespace MediaBrowser.LocalMetadata.Images { public class InternalMetadataFolderImageProvider : ILocalImageFileProvider, IHasOrder { private readonly IServerConfigurationManager _config; private readonly IFileSystem _fileSystem; public InternalMetadataFolderImageProvider(IServerConfigurationManager config, IFileSystem fileSystem) { _config = config; _fileSystem = fileSystem; } public string Name => "Internal Images"; public bool Supports(BaseItem item) { if (item is Photo) { return false; } if (!item.IsSaveLocalMetadataEnabled()) { return true; } // Extracted images will be saved in here if (item is Audio) { return true; } if (item.SupportsLocalMetadata && !item.AlwaysScanInternalMetadataPath) { return false; } return true; } // Make sure this is last so that all other locations are scanned first public int Order => 1000; public List GetImages(BaseItem item, IDirectoryService directoryService) { var path = item.GetInternalMetadataPath(); try { return new LocalImageProvider(_fileSystem).GetImages(item, path, false, directoryService); } catch (IOException) { return new List(); } } } }