aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/ItemImageProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/ItemImageProvider.cs')
-rw-r--r--MediaBrowser.Providers/Manager/ItemImageProvider.cs105
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))
{