diff options
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 61 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs | 2 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.Internal.nuspec | 4 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.nuspec | 2 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Server.Core.nuspec | 4 |
5 files changed, 51 insertions, 22 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 7916d7e86..e8b3a6ad6 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -76,7 +76,6 @@ namespace MediaBrowser.Providers.Manager refreshResult.LastErrorMessage = string.Empty; refreshResult.LastStatus = ProviderRefreshStatus.Success; - var imageProviders = GetImageProviders(item).ToList(); var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager); var localImagesFailed = false; @@ -84,7 +83,7 @@ namespace MediaBrowser.Providers.Manager try { // Always validate images and check for new locally stored ones. - if (itemImageProvider.ValidateImages(item, imageProviders)) + if (itemImageProvider.ValidateImages(item, GetLocalImageProviders(item))) { updateType = updateType | ItemUpdateType.ImageUpdate; } @@ -113,12 +112,13 @@ namespace MediaBrowser.Providers.Manager } // Next run remote image providers, but only if local image providers didn't throw an exception - if (!localImagesFailed) + if (!localImagesFailed && options.ImageRefreshMode != MetadataRefreshMode.None) { - if ((options.ImageRefreshMode == MetadataRefreshMode.EnsureMetadata && !lastResult.DateLastImagesRefresh.HasValue) || - options.ImageRefreshMode == MetadataRefreshMode.FullRefresh) + var providers = GetNonLocalImageProviders(item, lastResult.DateLastImagesRefresh.HasValue, options).ToList(); + + if (providers.Count > 0) { - var result = await itemImageProvider.RefreshImages(itemOfType, imageProviders, options, cancellationToken).ConfigureAwait(false); + var result = await itemImageProvider.RefreshImages(itemOfType, providers, options, cancellationToken).ConfigureAwait(false); updateType = updateType | result.UpdateType; refreshResult.AddStatus(result.Status, result.ErrorMessage); @@ -173,13 +173,49 @@ namespace MediaBrowser.Providers.Manager // If local providers are the only ones with changes, then just run those if (providersWithChanges.All(i => i is ILocalMetadataProvider)) { - providers = providers.Where(i => i is ILocalMetadataProvider).ToList(); + providers = providersWithChanges.Count == 0 ? + new List<IMetadataProvider<TItemType>>() : + providers.Where(i => i is ILocalMetadataProvider).ToList(); } } return providers; } + protected virtual IEnumerable<IImageProvider> GetNonLocalImageProviders(IHasMetadata item, bool hasRefreshedImages, ImageRefreshOptions options) + { + // Get providers to refresh + var providers = _imageProviders.Where(i => + { + try + { + return !(i is ILocalImageProvider) && i.Supports(item); + } + catch (Exception ex) + { + Logger.ErrorException("Error in ImageProvider.Supports", ex, i.Name); + + return false; + } + }).ToList(); + + // Run all if either of these flags are true + var runAllProviders = options.ImageRefreshMode == MetadataRefreshMode.FullRefresh || !hasRefreshedImages; + + if (!runAllProviders) + { + // Avoid implicitly captured closure + var currentItem = item; + + providers = providers.OfType<IHasChangeMonitor>() + .Where(i => i.HasChanged(currentItem, currentItem.DateLastSaved)) + .Cast<IImageProvider>() + .ToList(); + } + + return providers; + } + /// <summary> /// Determines whether this instance can refresh the specified provider. /// </summary> @@ -323,9 +359,9 @@ namespace MediaBrowser.Providers.Manager } } - private IEnumerable<IImageProvider> GetImageProviders(IHasImages item) + private IEnumerable<ILocalImageProvider> GetLocalImageProviders(IHasImages item) { - var providers = _imageProviders.Where(i => + return _imageProviders.OfType<ILocalImageProvider>().Where(i => { try { @@ -338,13 +374,6 @@ namespace MediaBrowser.Providers.Manager return false; } }); - - if (!ServerConfigurationManager.Configuration.EnableInternetProviders) - { - providers = providers.Where(i => !(i is IRemoteImageProvider)); - } - - return providers.OrderBy(i => i.Order); } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs index 117cb1da7..1dd6eb272 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs @@ -105,7 +105,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public bool HasChanged(IHasMetadata item, DateTime date) { - return !item.HasImage(ImageType.Primary) && (DateTime.UtcNow - date).TotalHours >= 12; + return !item.HasImage(ImageType.Primary) && (DateTime.UtcNow - date).TotalHours >= 6; } } } diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 6729d8c72..607b286ed 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common.Internal</id> - <version>3.0.309</version> + <version>3.0.310</version> <title>MediaBrowser.Common.Internal</title> <authors>Luke</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.309" /> + <dependency id="MediaBrowser.Common" version="3.0.310" /> <dependency id="NLog" version="2.1.0" /> <dependency id="SimpleInjector" version="2.4.1" /> <dependency id="sharpcompress" version="0.10.2" /> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 376cc722d..3222e429b 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.309</version> + <version>3.0.310</version> <title>MediaBrowser.Common</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 22dd1aa9a..abfd72ff3 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Server.Core</id> - <version>3.0.309</version> + <version>3.0.310</version> <title>Media Browser.Server.Core</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains core components required to build plugins for Media Browser Server.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.309" /> + <dependency id="MediaBrowser.Common" version="3.0.310" /> </dependencies> </metadata> <files> |
