diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-08 17:38:02 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-08 17:38:02 -0500 |
| commit | 7f5a4c2d4e3d8e1881dae0403367e35ad5699eaf (patch) | |
| tree | b8cd714ee0c027c49001f263be885511954f5787 /MediaBrowser.Providers | |
| parent | 3ffd95a6371c40246a8163c17da3626374685271 (diff) | |
added item type to refresh info
Diffstat (limited to 'MediaBrowser.Providers')
19 files changed, 123 insertions, 104 deletions
diff --git a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs index cecde64ca3..2526160066 100644 --- a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs +++ b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs @@ -54,13 +54,13 @@ namespace MediaBrowser.Providers.All } } - public List<LocalImageInfo> GetImages(IHasImages item) + public List<LocalImageInfo> GetImages(IHasImages item, DirectoryService directoryService) { var path = _config.ApplicationPaths.GetInternalMetadataPath(item.Id); try { - return new LocalImageProvider().GetImages(item, path); + return new LocalImageProvider().GetImages(item, path, directoryService); } catch (DirectoryNotFoundException) { diff --git a/MediaBrowser.Providers/All/LocalImageProvider.cs b/MediaBrowser.Providers/All/LocalImageProvider.cs index 7d70a35b6d..f54975a69d 100644 --- a/MediaBrowser.Providers/All/LocalImageProvider.cs +++ b/MediaBrowser.Providers/All/LocalImageProvider.cs @@ -57,7 +57,7 @@ namespace MediaBrowser.Providers.All return false; } - private IEnumerable<FileSystemInfo> GetFiles(IHasImages item, bool includeDirectories) + private IEnumerable<FileSystemInfo> GetFiles(IHasImages item, bool includeDirectories, DirectoryService directoryService) { if (item.LocationType != LocationType.FileSystem) { @@ -68,34 +68,34 @@ namespace MediaBrowser.Providers.All if (includeDirectories) { - return new DirectoryInfo(path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly) + return directoryService.GetFileSystemEntries(path) .Where(i => BaseItem.SupportedImageExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase) || (i.Attributes & FileAttributes.Directory) == FileAttributes.Directory); } - return new DirectoryInfo(path).EnumerateFiles("*", SearchOption.TopDirectoryOnly) + return directoryService.GetFiles(path) .Where(i => BaseItem.SupportedImageExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase)); } - public List<LocalImageInfo> GetImages(IHasImages item) + public List<LocalImageInfo> GetImages(IHasImages item, DirectoryService directoryService) { - var files = GetFiles(item, true).ToList(); + var files = GetFiles(item, true, directoryService).ToList(); var list = new List<LocalImageInfo>(); - PopulateImages(item, list, files, true); + PopulateImages(item, list, files, true, directoryService); return list; } - public List<LocalImageInfo> GetImages(IHasImages item, string path) + public List<LocalImageInfo> GetImages(IHasImages item, string path, DirectoryService directoryService) { - return GetImages(item, new[] { path }); + return GetImages(item, new[] { path }, directoryService); } - public List<LocalImageInfo> GetImages(IHasImages item, IEnumerable<string> paths) + public List<LocalImageInfo> GetImages(IHasImages item, IEnumerable<string> paths, DirectoryService directoryService) { - var files = paths.SelectMany(i => new DirectoryInfo(i).EnumerateFiles("*", SearchOption.TopDirectoryOnly)) + var files = paths.SelectMany(directoryService.GetFiles) .Where(i => { var ext = i.Extension; @@ -108,12 +108,12 @@ namespace MediaBrowser.Providers.All var list = new List<LocalImageInfo>(); - PopulateImages(item, list, files, false); + PopulateImages(item, list, files, false, directoryService); return list; } - private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, bool supportParentSeriesFiles) + private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, bool supportParentSeriesFiles, DirectoryService directoryService) { var imagePrefix = string.Empty; @@ -124,7 +124,7 @@ namespace MediaBrowser.Providers.All } PopulatePrimaryImages(item, images, files, imagePrefix); - PopulateBackdrops(item, images, files, imagePrefix); + PopulateBackdrops(item, images, files, imagePrefix, directoryService); PopulateScreenshots(images, files, imagePrefix); AddImage(files, images, imagePrefix + "logo", ImageType.Logo); @@ -149,7 +149,7 @@ namespace MediaBrowser.Providers.All if (season != null) { - PopulateSeasonImagesFromSeriesFolder(season, images); + PopulateSeasonImagesFromSeriesFolder(season, images, directoryService); } } } @@ -185,7 +185,7 @@ namespace MediaBrowser.Providers.All } } - private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix) + private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, DirectoryService directoryService) { PopulateBackdrops(images, files, imagePrefix, "backdrop", "backdrop", ImageType.Backdrop); @@ -208,13 +208,13 @@ namespace MediaBrowser.Providers.All if (extraFanartFolder != null) { - PopulateBackdropsFromExtraFanart(extraFanartFolder.FullName, images); + PopulateBackdropsFromExtraFanart(extraFanartFolder.FullName, images, directoryService); } } - private void PopulateBackdropsFromExtraFanart(string path, List<LocalImageInfo> images) + private void PopulateBackdropsFromExtraFanart(string path, List<LocalImageInfo> images, DirectoryService directoryService) { - var imageFiles = new DirectoryInfo(path).EnumerateFiles("*", SearchOption.TopDirectoryOnly) + var imageFiles = directoryService.GetFiles(path) .Where(i => { var extension = i.Extension; @@ -262,7 +262,7 @@ namespace MediaBrowser.Providers.All } private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - private void PopulateSeasonImagesFromSeriesFolder(Season season, List<LocalImageInfo> images) + private void PopulateSeasonImagesFromSeriesFolder(Season season, List<LocalImageInfo> images, DirectoryService directoryService) { var seasonNumber = season.IndexNumber; @@ -272,7 +272,7 @@ namespace MediaBrowser.Providers.All return; } - var seriesFiles = GetFiles(series, false).ToList(); + var seriesFiles = GetFiles(series, false, directoryService).ToList(); // Try using the season name var prefix = season.Name.ToLower().Replace(" ", string.Empty); diff --git a/MediaBrowser.Providers/Books/BookMetadataService.cs b/MediaBrowser.Providers/Books/BookMetadataService.cs index 0cf672e2d5..6e070fec96 100644 --- a/MediaBrowser.Providers/Books/BookMetadataService.cs +++ b/MediaBrowser.Providers/Books/BookMetadataService.cs @@ -7,8 +7,6 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Providers.Books { diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs index f4716f6ddb..9547eedd94 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs @@ -11,12 +11,10 @@ using MediaBrowser.Providers.Manager; using System; using System.Collections.Generic; using System.Linq; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Providers.BoxSets { - public class BoxSetMetadataService : MetadataService<BoxSet, ItemLookupInfo> + public class BoxSetMetadataService : MetadataService<BoxSet, BoxSetInfo> { private readonly ILibraryManager _libraryManager; private readonly ILocalizationManager _iLocalizationManager; diff --git a/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs b/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs index f1b9a8384e..a55c42e4ba 100644 --- a/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs +++ b/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs @@ -27,11 +27,11 @@ namespace MediaBrowser.Providers.Folders } } - public List<LocalImageInfo> GetImages(IHasImages item) + public List<LocalImageInfo> GetImages(IHasImages item, DirectoryService directoryService) { var collectionFolder = (CollectionFolder)item; - return new LocalImageProvider().GetImages(item, collectionFolder.PhysicalLocations); + return new LocalImageProvider().GetImages(item, collectionFolder.PhysicalLocations, directoryService); } } } diff --git a/MediaBrowser.Providers/Folders/ImagesByNameImageProvider.cs b/MediaBrowser.Providers/Folders/ImagesByNameImageProvider.cs index e87f0919fd..daefe25ace 100644 --- a/MediaBrowser.Providers/Folders/ImagesByNameImageProvider.cs +++ b/MediaBrowser.Providers/Folders/ImagesByNameImageProvider.cs @@ -38,7 +38,7 @@ namespace MediaBrowser.Providers.Folders } } - public List<LocalImageInfo> GetImages(IHasImages item) + public List<LocalImageInfo> GetImages(IHasImages item, DirectoryService directoryService) { var name = _fileSystem.GetValidFilename(item.Name); @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Folders try { - return new LocalImageProvider().GetImages(item, path); + return new LocalImageProvider().GetImages(item, path, directoryService); } catch (DirectoryNotFoundException) { diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index b50e028bff..521f2869b5 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -34,13 +34,13 @@ namespace MediaBrowser.Providers.Manager _fileSystem = fileSystem; } - public bool ValidateImages(IHasImages item, IEnumerable<IImageProvider> providers) + public bool ValidateImages(IHasImages item, IEnumerable<IImageProvider> providers, DirectoryService directoryService) { - var hasChanges = item.ValidateImages(); + var hasChanges = item.ValidateImages(directoryService); foreach (var provider in providers.OfType<ILocalImageFileProvider>()) { - var images = provider.GetImages(item); + var images = provider.GetImages(item, directoryService); if (MergeImages(item, images)) { diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index be42589b7c..b594c8cc88 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -44,6 +44,7 @@ namespace MediaBrowser.Providers.Manager { result.ItemId = item.Id; result.ItemName = item.Name; + result.ItemType = item.GetType().Name; var series = item as IHasSeries; @@ -64,6 +65,11 @@ namespace MediaBrowser.Providers.Manager public async Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { + if (refreshOptions.DirectoryService == null) + { + refreshOptions.DirectoryService = new DirectoryService(Logger); + } + var itemOfType = (TItemType)item; var config = GetMetadataOptions(itemOfType); @@ -81,7 +87,7 @@ namespace MediaBrowser.Providers.Manager try { // Always validate images and check for new locally stored ones. - if (itemImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>())) + if (itemImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>(), refreshOptions.DirectoryService)) { updateType = updateType | ItemUpdateType.ImageUpdate; } diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index 34536d97da..9ea43786eb 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class MovieMetadataService : MetadataService<Movie, ItemLookupInfo> + public class MovieMetadataService : MetadataService<Movie, MovieInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Movies/TrailerMetadataService.cs b/MediaBrowser.Providers/Movies/TrailerMetadataService.cs index d9ae6187cf..9c937db846 100644 --- a/MediaBrowser.Providers/Movies/TrailerMetadataService.cs +++ b/MediaBrowser.Providers/Movies/TrailerMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class TrailerMetadataService : MetadataService<Trailer, ItemLookupInfo> + public class TrailerMetadataService : MetadataService<Trailer, TrailerInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Music/AudioMetadataService.cs b/MediaBrowser.Providers/Music/AudioMetadataService.cs index cda22b0f5e..93be8d2e60 100644 --- a/MediaBrowser.Providers/Music/AudioMetadataService.cs +++ b/MediaBrowser.Providers/Music/AudioMetadataService.cs @@ -7,12 +7,10 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class AudioMetadataService : MetadataService<Audio, ItemLookupInfo> + public class AudioMetadataService : MetadataService<Audio, SongInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/People/PersonMetadataService.cs b/MediaBrowser.Providers/People/PersonMetadataService.cs index b3b3e88d05..faf606f3e4 100644 --- a/MediaBrowser.Providers/People/PersonMetadataService.cs +++ b/MediaBrowser.Providers/People/PersonMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.People { - public class PersonMetadataService : MetadataService<Person, ItemLookupInfo> + public class PersonMetadataService : MetadataService<Person, PersonLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs b/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs index df3b8b48f7..8a3af13d86 100644 --- a/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs +++ b/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs @@ -2,8 +2,10 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.IO; +using System.Linq; namespace MediaBrowser.Providers.TV { @@ -19,48 +21,84 @@ namespace MediaBrowser.Providers.TV return item is Episode && item.LocationType == LocationType.FileSystem; } - public List<LocalImageInfo> GetImages(IHasImages item) + public List<LocalImageInfo> GetImages(IHasImages item, DirectoryService directoryService) { - var file = GetFile(item); + var parentPath = Path.GetDirectoryName(item.Path); + + var parentPathFiles = directoryService.GetFileSystemEntries(parentPath); + + var nameWithoutExtension = Path.GetFileNameWithoutExtension(item.Path); + + var files = GetFilesFromParentFolder(nameWithoutExtension, parentPathFiles); + + if (files.Count > 0) + { + return files; + } - var list = new List<LocalImageInfo>(); + var metadataPath = Path.Combine(parentPath, "metadata"); - if (file != null) + if (parentPathFiles.Any(i => string.Equals(i.FullName, metadataPath, StringComparison.OrdinalIgnoreCase))) { - list.Add(new LocalImageInfo - { - FileInfo = file, - Type = ImageType.Primary - }); + return GetFilesFromParentFolder(nameWithoutExtension, directoryService.GetFiles(metadataPath)); } - return list; + return new List<LocalImageInfo>(); } - private FileInfo GetFile(IHasImages item) + private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, IEnumerable<FileSystemInfo> parentPathFiles) { - var parentPath = Path.GetDirectoryName(item.Path); + var thumbName = filenameWithoutExtension + "-thumb"; - var nameWithoutExtension = Path.GetFileNameWithoutExtension(item.Path); - var thumbName = nameWithoutExtension + "-thumb"; + return parentPathFiles + .Where(i => + { + if (BaseItem.SupportedImageExtensions.Contains(i.Extension)) + { + var currentNameWithoutExtension = Path.GetFileNameWithoutExtension(i.Name); - var path = Path.Combine(parentPath, thumbName + ".jpg"); - var fileInfo = new FileInfo(path); + if (string.Equals(filenameWithoutExtension, currentNameWithoutExtension, StringComparison.OrdinalIgnoreCase)) + { + return true; + } - if (fileInfo.Exists) - { - return fileInfo; - } + if (string.Equals(thumbName, currentNameWithoutExtension, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } - path = Path.Combine(parentPath, "metadata", nameWithoutExtension + ".jpg"); - fileInfo = new FileInfo(path); + return false; + }) + .Select(i => new LocalImageInfo + { + FileInfo = (FileInfo)i, + Type = ImageType.Primary + }) + .ToList(); + } - if (fileInfo.Exists) - { - return fileInfo; - } + private List<LocalImageInfo> GetFilesFromMetadataFolder(string filenameWithoutExtension, IEnumerable<FileInfo> metadataFiles) + { + return metadataFiles + .Where(i => + { + if (BaseItem.SupportedImageExtensions.Contains(i.Extension)) + { + if (string.Equals(filenameWithoutExtension, Path.GetFileNameWithoutExtension(i.Name), StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } - return null; + return false; + }) + .Select(i => new LocalImageInfo + { + FileInfo = i, + Type = ImageType.Primary + }) + .ToList(); } } } diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs index b0c80d5d67..e76ad90752 100644 --- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.TV { - public class SeasonMetadataService : MetadataService<Season, ItemLookupInfo> + public class SeasonMetadataService : MetadataService<Season, SeasonInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs index dc06857ce3..68d05012f0 100644 --- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs @@ -174,8 +174,7 @@ namespace MediaBrowser.Providers.TV { await series.RefreshMetadata(new MetadataRefreshOptions { - }, cancellationToken) - .ConfigureAwait(false); + }, cancellationToken).ConfigureAwait(false); await series.ValidateChildren(new Progress<double>(), cancellationToken, true) .ConfigureAwait(false); @@ -469,6 +468,7 @@ namespace MediaBrowser.Providers.TV }; await series.AddChild(season, cancellationToken).ConfigureAwait(false); + await season.RefreshMetadata(new MetadataRefreshOptions { }, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs index 754f973bc8..7d8f9e1864 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs @@ -194,9 +194,13 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { - if (!_config.Configuration.EnableTvDbUpdates && item.LocationType != LocationType.Virtual) + if (item.LocationType != LocationType.Virtual) { - return false; + // For non-virtual items, only enable if configured + if (!_config.Configuration.EnableTvDbUpdates) + { + return false; + } } if (!item.HasImage(ImageType.Primary)) diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index 1c9f565f3c..d0b4050172 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -68,7 +68,8 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { - if (!_config.Configuration.EnableTvDbUpdates && item.LocationType != LocationType.Virtual) + // Only enable for virtual items + if (item.LocationType != LocationType.Virtual) { return false; } diff --git a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs index a6276d0d75..5216d84c5f 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs @@ -342,9 +342,13 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { - if (!_config.Configuration.EnableTvDbUpdates && item.LocationType != LocationType.Virtual) + if (item.LocationType != LocationType.Virtual) { - return false; + // For non-virtual items, only enable if configured + if (!_config.Configuration.EnableTvDbUpdates) + { + return false; + } } var season = (Season)item; diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index ba8ac9fd6a..80c50e9589 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -1079,33 +1079,5 @@ namespace MediaBrowser.Providers.TV { get { return "TheTVDB"; } } - - public bool HasChanged(IHasMetadata item, DateTime date) - { - if (!_config.Configuration.EnableTvDbUpdates) - { - return false; - } - - var seriesId = item.GetProviderId(MetadataProviders.Tvdb); - - if (!string.IsNullOrEmpty(seriesId)) - { - var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesId); - - var seriesXmlFilename = item.GetPreferredMetadataLanguage() + ".xml"; - - var filePath = Path.Combine(seriesDataPath, seriesXmlFilename); - - var seriesFile = new FileInfo(filePath); - - if (!seriesFile.Exists || _fileSystem.GetLastWriteTimeUtc(seriesFile) > date) - { - return true; - } - } - - return false; - } } } |
