diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager/ItemImageProvider.cs')
| -rw-r--r-- | MediaBrowser.Providers/Manager/ItemImageProvider.cs | 105 |
1 files changed, 34 insertions, 71 deletions
diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 1d432463b..c80d43841 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -24,6 +24,7 @@ using MediaBrowser.Controller.IO; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Extensions; +using MediaBrowser.Controller.Channels; namespace MediaBrowser.Providers.Manager { @@ -42,7 +43,7 @@ namespace MediaBrowser.Providers.Manager _fileSystem = fileSystem; } - public bool ValidateImages(IHasMetadata item, IEnumerable<IImageProvider> providers, IDirectoryService directoryService) + public bool ValidateImages(BaseItem item, IEnumerable<IImageProvider> providers, IDirectoryService directoryService) { var hasChanges = false; @@ -61,7 +62,7 @@ namespace MediaBrowser.Providers.Manager return hasChanges; } - public async Task<RefreshResult> RefreshImages(IHasMetadata item, LibraryOptions libraryOptions, List<IImageProvider> providers, ImageRefreshOptions refreshOptions, MetadataOptions savedOptions, CancellationToken cancellationToken) + public async Task<RefreshResult> RefreshImages(BaseItem item, LibraryOptions libraryOptions, List<IImageProvider> providers, ImageRefreshOptions refreshOptions, MetadataOptions savedOptions, CancellationToken cancellationToken) { if (refreshOptions.IsReplacingImage(ImageType.Backdrop)) { @@ -74,11 +75,12 @@ namespace MediaBrowser.Providers.Manager var result = new RefreshResult { UpdateType = ItemUpdateType.None }; - var providerIds = new List<Guid>(); + var typeName = item.GetType().Name; + var typeOptions = libraryOptions.GetTypeOptions(typeName) ?? new TypeOptions { Type = typeName }; // In order to avoid duplicates, only download these if there are none already - var backdropLimit = savedOptions.GetLimit(ImageType.Backdrop); - var screenshotLimit = savedOptions.GetLimit(ImageType.Screenshot); + var backdropLimit = typeOptions.GetLimit(ImageType.Backdrop); + var screenshotLimit = typeOptions.GetLimit(ImageType.Screenshot); var downloadedImages = new List<ImageType>(); foreach (var provider in providers) @@ -87,8 +89,7 @@ namespace MediaBrowser.Providers.Manager if (remoteProvider != null) { - await RefreshFromProvider(item, libraryOptions, remoteProvider, refreshOptions, savedOptions, backdropLimit, screenshotLimit, downloadedImages, result, cancellationToken).ConfigureAwait(false); - providerIds.Add(provider.GetType().FullName.GetMD5()); + await RefreshFromProvider(item, libraryOptions, remoteProvider, refreshOptions, typeOptions, backdropLimit, screenshotLimit, downloadedImages, result, cancellationToken).ConfigureAwait(false); continue; } @@ -96,31 +97,21 @@ namespace MediaBrowser.Providers.Manager if (dynamicImageProvider != null) { - await RefreshFromProvider(item, dynamicImageProvider, refreshOptions, savedOptions, downloadedImages, result, cancellationToken).ConfigureAwait(false); - providerIds.Add(provider.GetType().FullName.GetMD5()); + await RefreshFromProvider(item, dynamicImageProvider, refreshOptions, typeOptions, libraryOptions, downloadedImages, result, cancellationToken).ConfigureAwait(false); } } - result.Providers = providerIds; - return result; } /// <summary> /// Refreshes from provider. /// </summary> - /// <param name="item">The item.</param> - /// <param name="provider">The provider.</param> - /// <param name="refreshOptions">The refresh options.</param> - /// <param name="savedOptions">The saved options.</param> - /// <param name="downloadedImages">The downloaded images.</param> - /// <param name="result">The result.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task.</returns> - private async Task RefreshFromProvider(IHasMetadata item, + private async Task RefreshFromProvider(BaseItem item, IDynamicImageProvider provider, ImageRefreshOptions refreshOptions, - MetadataOptions savedOptions, + TypeOptions savedOptions, + LibraryOptions libraryOptions, ICollection<ImageType> downloadedImages, RefreshResult result, CancellationToken cancellationToken) @@ -202,7 +193,7 @@ namespace MediaBrowser.Providers.Manager ImageType.Thumb }; - private bool HasImage(IHasMetadata item, ImageType type) + private bool HasImage(BaseItem item, ImageType type) { return item.HasImage(type); } @@ -216,7 +207,7 @@ namespace MediaBrowser.Providers.Manager /// <param name="backdropLimit">The backdrop limit.</param> /// <param name="screenshotLimit">The screenshot limit.</param> /// <returns><c>true</c> if the specified item contains images; otherwise, <c>false</c>.</returns> - private bool ContainsImages(IHasMetadata item, List<ImageType> images, MetadataOptions savedOptions, int backdropLimit, int screenshotLimit) + private bool ContainsImages(BaseItem item, List<ImageType> images, TypeOptions savedOptions, int backdropLimit, int screenshotLimit) { if (_singularImages.Any(i => images.Contains(i) && !HasImage(item, i) && savedOptions.GetLimit(i) > 0)) { @@ -249,10 +240,10 @@ namespace MediaBrowser.Providers.Manager /// <param name="result">The result.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - private async Task RefreshFromProvider(IHasMetadata item, LibraryOptions libraryOptions, + private async Task RefreshFromProvider(BaseItem item, LibraryOptions libraryOptions, IRemoteImageProvider provider, ImageRefreshOptions refreshOptions, - MetadataOptions savedOptions, + TypeOptions savedOptions, int backdropLimit, int screenshotLimit, ICollection<ImageType> downloadedImages, @@ -267,7 +258,7 @@ namespace MediaBrowser.Providers.Manager } if (!refreshOptions.ReplaceAllImages && - refreshOptions.ReplaceImages.Count == 0 && + refreshOptions.ReplaceImages.Length == 0 && ContainsImages(item, provider.GetSupportedImages(item).ToList(), savedOptions, backdropLimit, screenshotLimit)) { return; @@ -302,20 +293,14 @@ namespace MediaBrowser.Providers.Manager } } - if (!item.LockedFields.Contains(MetadataFields.Backdrops)) - { - minWidth = savedOptions.GetMinWidth(ImageType.Backdrop); - await DownloadBackdrops(item, libraryOptions, ImageType.Backdrop, backdropLimit, provider, result, list, minWidth, cancellationToken).ConfigureAwait(false); - } + minWidth = savedOptions.GetMinWidth(ImageType.Backdrop); + await DownloadBackdrops(item, libraryOptions, ImageType.Backdrop, backdropLimit, provider, result, list, minWidth, cancellationToken).ConfigureAwait(false); - if (!item.LockedFields.Contains(MetadataFields.Screenshots)) + var hasScreenshots = item as IHasScreenshots; + if (hasScreenshots != null) { - var hasScreenshots = item as IHasScreenshots; - if (hasScreenshots != null) - { - minWidth = savedOptions.GetMinWidth(ImageType.Screenshot); - await DownloadBackdrops(item, libraryOptions, ImageType.Screenshot, screenshotLimit, provider, result, list, minWidth, cancellationToken).ConfigureAwait(false); - } + minWidth = savedOptions.GetMinWidth(ImageType.Screenshot); + await DownloadBackdrops(item, libraryOptions, ImageType.Screenshot, screenshotLimit, provider, result, list, minWidth, cancellationToken).ConfigureAwait(false); } } catch (OperationCanceledException) @@ -329,34 +314,12 @@ namespace MediaBrowser.Providers.Manager } } - private bool IsEnabled(MetadataOptions options, ImageType type, IHasMetadata item) + private bool IsEnabled(TypeOptions options, ImageType type, BaseItem item) { - if (type == ImageType.Backdrop) - { - if (item.LockedFields.Contains(MetadataFields.Backdrops)) - { - return false; - } - } - else if (type == ImageType.Screenshot) - { - if (item.LockedFields.Contains(MetadataFields.Screenshots)) - { - return false; - } - } - else - { - if (item.LockedFields.Contains(MetadataFields.Images)) - { - return false; - } - } - return options.IsEnabled(type); } - private void ClearImages(IHasMetadata item, ImageType type) + private void ClearImages(BaseItem item, ImageType type) { var deleted = false; var deletedImages = new List<ItemImageInfo>(); @@ -376,7 +339,7 @@ namespace MediaBrowser.Providers.Manager } catch (FileNotFoundException) { - + } } @@ -388,7 +351,7 @@ namespace MediaBrowser.Providers.Manager } } - public bool MergeImages(IHasMetadata item, List<LocalImageInfo> images) + public bool MergeImages(BaseItem item, List<LocalImageInfo> images) { var changed = false; @@ -457,7 +420,7 @@ namespace MediaBrowser.Providers.Manager return changed; } - private bool UpdateMultiImages(IHasMetadata item, List<LocalImageInfo> images, ImageType type) + private bool UpdateMultiImages(BaseItem item, List<LocalImageInfo> images, ImageType type) { var changed = false; @@ -475,7 +438,7 @@ namespace MediaBrowser.Providers.Manager return changed; } - private async Task<bool> DownloadImage(IHasMetadata item, LibraryOptions libraryOptions, + private async Task<bool> DownloadImage(BaseItem item, LibraryOptions libraryOptions, IRemoteImageProvider provider, RefreshResult result, IEnumerable<RemoteImageInfo> images, @@ -521,14 +484,14 @@ namespace MediaBrowser.Providers.Manager return false; } - private bool EnableImageStub(IHasMetadata item, ImageType type, LibraryOptions libraryOptions) + private bool EnableImageStub(BaseItem item, ImageType type, LibraryOptions libraryOptions) { if (item is LiveTvProgram) { return true; } - if (item.LocationType == LocationType.Remote || item.LocationType == LocationType.Virtual) + if (!item.IsFileProtocol) { return true; } @@ -555,14 +518,14 @@ namespace MediaBrowser.Providers.Manager return true; } - private void SaveImageStub(IHasMetadata item, ImageType imageType, IEnumerable<string> urls) + private void SaveImageStub(BaseItem item, ImageType imageType, IEnumerable<string> urls) { var newIndex = item.AllowsMultipleImages(imageType) ? item.GetImages(imageType).Count() : 0; SaveImageStub(item, imageType, urls, newIndex); } - private void SaveImageStub(IHasMetadata item, ImageType imageType, IEnumerable<string> urls, int newIndex) + private void SaveImageStub(BaseItem item, ImageType imageType, IEnumerable<string> urls, int newIndex) { var path = string.Join("|", urls.Take(1).ToArray()); @@ -574,7 +537,7 @@ namespace MediaBrowser.Providers.Manager }, newIndex); } - private async Task DownloadBackdrops(IHasMetadata item, LibraryOptions libraryOptions, ImageType imageType, int limit, IRemoteImageProvider provider, RefreshResult result, IEnumerable<RemoteImageInfo> images, int minWidth, CancellationToken cancellationToken) + private async Task DownloadBackdrops(BaseItem item, LibraryOptions libraryOptions, ImageType imageType, int limit, IRemoteImageProvider provider, RefreshResult result, IEnumerable<RemoteImageInfo> images, int minWidth, CancellationToken cancellationToken) { foreach (var image in images.Where(i => i.Type == imageType)) { |
