aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Providers')
-rw-r--r--MediaBrowser.Controller/Providers/BaseItemXmlParser.cs2
-rw-r--r--MediaBrowser.Controller/Providers/BaseMetadataProvider.cs268
-rw-r--r--MediaBrowser.Controller/Providers/BaseProviderInfo.cs51
-rw-r--r--MediaBrowser.Controller/Providers/IForcedProvider.cs10
-rw-r--r--MediaBrowser.Controller/Providers/IImageSaver.cs29
-rw-r--r--MediaBrowser.Controller/Providers/IMetadataProvider.cs5
-rw-r--r--MediaBrowser.Controller/Providers/IProviderManager.cs4
-rw-r--r--MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs21
-rw-r--r--MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs22
9 files changed, 84 insertions, 328 deletions
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index 59b7cd8db..ada0aa6e2 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -719,7 +719,7 @@ namespace MediaBrowser.Controller.Providers
}
break;
}
- case "TvRageId":
+ case "TVRageId":
{
var id = reader.ReadElementContentAsString();
if (!string.IsNullOrWhiteSpace(id))
diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
deleted file mode 100644
index f8580244a..000000000
--- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
+++ /dev/null
@@ -1,268 +0,0 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Logging;
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Controller.Providers
-{
- /// <summary>
- /// Class BaseMetadataProvider
- /// </summary>
- public abstract class BaseMetadataProvider
- {
- /// <summary>
- /// Gets the logger.
- /// </summary>
- /// <value>The logger.</value>
- protected ILogger Logger { get; set; }
-
- protected ILogManager LogManager { get; set; }
-
- /// <summary>
- /// Gets the configuration manager.
- /// </summary>
- /// <value>The configuration manager.</value>
- protected IServerConfigurationManager ConfigurationManager { get; private set; }
-
- /// <summary>
- /// The _id
- /// </summary>
- public readonly Guid Id;
-
- /// <summary>
- /// The true task result
- /// </summary>
- protected static readonly Task<bool> TrueTaskResult = Task.FromResult(true);
-
- protected static readonly Task<bool> FalseTaskResult = Task.FromResult(false);
-
- /// <summary>
- /// Supportses the specified item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- public abstract bool Supports(BaseItem item);
-
- /// <summary>
- /// Gets a value indicating whether [requires internet].
- /// </summary>
- /// <value><c>true</c> if [requires internet]; otherwise, <c>false</c>.</value>
- public virtual bool RequiresInternet
- {
- get
- {
- return false;
- }
- }
-
- /// <summary>
- /// Gets the provider version.
- /// </summary>
- /// <value>The provider version.</value>
- protected virtual string ProviderVersion
- {
- get
- {
- return null;
- }
- }
-
- public virtual ItemUpdateType ItemUpdateType
- {
- get { return RequiresInternet ? ItemUpdateType.MetadataDownload : ItemUpdateType.MetadataImport; }
- }
-
- /// <summary>
- /// Gets a value indicating whether [refresh on version change].
- /// </summary>
- /// <value><c>true</c> if [refresh on version change]; otherwise, <c>false</c>.</value>
- protected virtual bool RefreshOnVersionChange
- {
- get
- {
- return false;
- }
- }
-
- /// <summary>
- /// Determines if this provider is relatively slow and, therefore, should be skipped
- /// in certain instances. Default is whether or not it requires internet. Can be overridden
- /// for explicit designation.
- /// </summary>
- /// <value><c>true</c> if this instance is slow; otherwise, <c>false</c>.</value>
- public virtual bool IsSlow
- {
- get { return RequiresInternet; }
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="BaseMetadataProvider" /> class.
- /// </summary>
- protected BaseMetadataProvider(ILogManager logManager, IServerConfigurationManager configurationManager)
- {
- Logger = logManager.GetLogger(GetType().Name);
- LogManager = logManager;
- ConfigurationManager = configurationManager;
- Id = GetType().FullName.GetMD5();
-
- Initialize();
- }
-
- /// <summary>
- /// Initializes this instance.
- /// </summary>
- protected virtual void Initialize()
- {
- }
-
- /// <summary>
- /// Sets the persisted last refresh date on the item for this provider.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="value">The value.</param>
- /// <param name="providerVersion">The provider version.</param>
- /// <param name="providerInfo">The provider information.</param>
- /// <param name="status">The status.</param>
- /// <exception cref="System.ArgumentNullException">item</exception>
- public virtual void SetLastRefreshed(BaseItem item, DateTime value, string providerVersion,
- BaseProviderInfo providerInfo, ProviderRefreshStatus status = ProviderRefreshStatus.Success)
- {
- if (item == null)
- {
- throw new ArgumentNullException("item");
- }
-
- providerInfo.LastRefreshed = value;
- providerInfo.LastRefreshStatus = status;
- providerInfo.ProviderVersion = providerVersion;
- }
-
- /// <summary>
- /// Sets the last refreshed.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="value">The value.</param>
- /// <param name="providerInfo">The provider information.</param>
- /// <param name="status">The status.</param>
- public void SetLastRefreshed(BaseItem item, DateTime value,
- BaseProviderInfo providerInfo, ProviderRefreshStatus status = ProviderRefreshStatus.Success)
- {
- SetLastRefreshed(item, value, ProviderVersion, providerInfo, status);
- }
-
- /// <summary>
- /// Returns whether or not this provider should be re-fetched. Default functionality can
- /// compare a provided date with a last refresh time. This can be overridden for more complex
- /// determinations.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public bool NeedsRefresh(BaseItem item, BaseProviderInfo data)
- {
- if (item == null)
- {
- throw new ArgumentNullException();
- }
-
- return NeedsRefreshInternal(item, data);
- }
-
- /// <summary>
- /// Gets a value indicating whether [enforce dont fetch metadata].
- /// </summary>
- /// <value><c>true</c> if [enforce dont fetch metadata]; otherwise, <c>false</c>.</value>
- public virtual bool EnforceDontFetchMetadata
- {
- get
- {
- return true;
- }
- }
-
- /// <summary>
- /// Needses the refresh internal.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="providerInfo">The provider info.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- protected virtual bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo)
- {
- if (item == null)
- {
- throw new ArgumentNullException("item");
- }
-
- if (providerInfo == null)
- {
- throw new ArgumentNullException("providerInfo");
- }
-
- if (providerInfo.LastRefreshed == default(DateTime))
- {
- return true;
- }
-
- if (NeedsRefreshBasedOnCompareDate(item, providerInfo))
- {
- return true;
- }
-
- if (RefreshOnVersionChange && !String.Equals(ProviderVersion, providerInfo.ProviderVersion))
- {
- return true;
- }
-
- if (providerInfo.LastRefreshStatus != ProviderRefreshStatus.Success)
- {
- return true;
- }
-
- return false;
- }
-
- /// <summary>
- /// Needses the refresh based on compare date.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="providerInfo">The provider info.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- protected virtual bool NeedsRefreshBasedOnCompareDate(BaseItem item, BaseProviderInfo providerInfo)
- {
- return CompareDate(item) > providerInfo.LastRefreshed;
- }
-
- /// <summary>
- /// Override this to return the date that should be compared to the last refresh date
- /// to determine if this provider should be re-fetched.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns>DateTime.</returns>
- protected virtual DateTime CompareDate(BaseItem item)
- {
- return DateTime.MinValue.AddMinutes(1); // want this to be greater than mindate so new items will refresh
- }
-
- /// <summary>
- /// Fetches metadata and returns true or false indicating if any work that requires persistence was done
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="force">if set to <c>true</c> [force].</param>
- /// <param name="providerInfo">The provider information.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{System.Boolean}.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public abstract Task<bool> FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken);
-
- /// <summary>
- /// Gets the priority.
- /// </summary>
- /// <value>The priority.</value>
- public abstract MetadataProviderPriority Priority { get; }
- }
-}
diff --git a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs b/MediaBrowser.Controller/Providers/BaseProviderInfo.cs
deleted file mode 100644
index 3a33924f0..000000000
--- a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-
-namespace MediaBrowser.Controller.Providers
-{
- /// <summary>
- /// Class BaseProviderInfo
- /// </summary>
- public class BaseProviderInfo
- {
- public Guid ProviderId { get; set; }
- /// <summary>
- /// Gets or sets the last refreshed.
- /// </summary>
- /// <value>The last refreshed.</value>
- public DateTime LastRefreshed { get; set; }
- /// <summary>
- /// Gets or sets the file system stamp.
- /// </summary>
- /// <value>The file system stamp.</value>
- public Guid FileStamp { get; set; }
- /// <summary>
- /// Gets or sets the last refresh status.
- /// </summary>
- /// <value>The last refresh status.</value>
- public ProviderRefreshStatus LastRefreshStatus { get; set; }
- /// <summary>
- /// Gets or sets the provider version.
- /// </summary>
- /// <value>The provider version.</value>
- public string ProviderVersion { get; set; }
- }
-
- /// <summary>
- /// Enum ProviderRefreshStatus
- /// </summary>
- public enum ProviderRefreshStatus
- {
- /// <summary>
- /// The success
- /// </summary>
- Success = 0,
- /// <summary>
- /// The completed with errors
- /// </summary>
- CompletedWithErrors = 1,
- /// <summary>
- /// The failure
- /// </summary>
- Failure = 2
- }
-}
diff --git a/MediaBrowser.Controller/Providers/IForcedProvider.cs b/MediaBrowser.Controller/Providers/IForcedProvider.cs
new file mode 100644
index 000000000..9e35b00ad
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/IForcedProvider.cs
@@ -0,0 +1,10 @@
+
+namespace MediaBrowser.Controller.Providers
+{
+ /// <summary>
+ /// This is a marker interface that will cause a provider to run even if IsLocked=true
+ /// </summary>
+ public interface IForcedProvider
+ {
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/IImageSaver.cs b/MediaBrowser.Controller/Providers/IImageSaver.cs
new file mode 100644
index 000000000..5516c08f6
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/IImageSaver.cs
@@ -0,0 +1,29 @@
+using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Model.Entities;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public interface IImageSaver
+ {
+ /// <summary>
+ /// Gets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ string Name { get; }
+ }
+
+ public interface IImageFileSaver : IImageSaver
+ {
+ /// <summary>
+ /// Gets the save paths.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="index">The index.</param>
+ /// <returns>IEnumerable{System.String}.</returns>
+ IEnumerable<string> GetSavePaths(IHasImages item, ImageType type, ImageFormat format, int index);
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/IMetadataProvider.cs b/MediaBrowser.Controller/Providers/IMetadataProvider.cs
index 70bc06059..d33b2c9eb 100644
--- a/MediaBrowser.Controller/Providers/IMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/IMetadataProvider.cs
@@ -1,5 +1,4 @@
-using System;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
namespace MediaBrowser.Controller.Providers
{
@@ -26,10 +25,8 @@ namespace MediaBrowser.Controller.Providers
}
public class MetadataResult<T>
- where T : IHasMetadata
{
public bool HasMetadata { get; set; }
public T Item { get; set; }
}
-
}
diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs
index 4aeb86a6a..eb4d3d9a6 100644
--- a/MediaBrowser.Controller/Providers/IProviderManager.cs
+++ b/MediaBrowser.Controller/Providers/IProviderManager.cs
@@ -55,8 +55,10 @@ namespace MediaBrowser.Controller.Providers
/// <param name="metadataServices">The metadata services.</param>
/// <param name="metadataProviders">The metadata providers.</param>
/// <param name="savers">The savers.</param>
+ /// <param name="imageSavers">The image savers.</param>
void AddParts(IEnumerable<IImageProvider> imageProviders, IEnumerable<IMetadataService> metadataServices, IEnumerable<IMetadataProvider> metadataProviders,
- IEnumerable<IMetadataSaver> savers);
+ IEnumerable<IMetadataSaver> savers,
+ IEnumerable<IImageSaver> imageSavers);
/// <summary>
/// Gets the available remote images.
diff --git a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs
index cbbd62557..065017cce 100644
--- a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs
@@ -1,6 +1,7 @@
-using System.Threading;
+using MediaBrowser.Controller.Entities;
+using System.Collections.Generic;
+using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
namespace MediaBrowser.Controller.Providers
{
@@ -8,10 +9,24 @@ namespace MediaBrowser.Controller.Providers
{
}
- public interface IRemoteMetadataProvider<TItemType, in TLookupInfoType> : IMetadataProvider<TItemType>, IRemoteMetadataProvider
+ public interface IRemoteMetadataProvider<TItemType, TLookupInfoType> : IMetadataProvider<TItemType>, IRemoteMetadataProvider
where TItemType : IHasMetadata, IHasLookupInfo<TLookupInfoType>
where TLookupInfoType : ItemLookupInfo, new()
{
Task<MetadataResult<TItemType>> GetMetadata(TLookupInfoType info, CancellationToken cancellationToken);
}
+
+ public interface IRemoteSearchProvider<TLookupInfoType>
+ where TLookupInfoType : ItemLookupInfo
+ {
+ Task<IEnumerable<SearchResult<TLookupInfoType>>> GetSearchResults(TLookupInfoType searchInfo, CancellationToken cancellationToken);
+ }
+
+ public class SearchResult<T>
+ where T : ItemLookupInfo
+ {
+ public T Item { get; set; }
+
+ public string ImageUrl { get; set; }
+ }
}
diff --git a/MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs b/MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs
new file mode 100644
index 000000000..6523dc417
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs
@@ -0,0 +1,22 @@
+
+namespace MediaBrowser.Controller.Providers
+{
+ /// <summary>
+ /// Enum ProviderRefreshStatus
+ /// </summary>
+ public enum ProviderRefreshStatus
+ {
+ /// <summary>
+ /// The success
+ /// </summary>
+ Success = 0,
+ /// <summary>
+ /// The completed with errors
+ /// </summary>
+ CompletedWithErrors = 1,
+ /// <summary>
+ /// The failure
+ /// </summary>
+ Failure = 2
+ }
+}