From 4e38c3537398b01776f6e1c5e1c08bce73eec82e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 19 Feb 2014 00:21:03 -0500 Subject: fixed remote control flyout --- .../Entities/Audio/MusicArtist.cs | 2 +- MediaBrowser.Controller/Entities/BaseItem.cs | 10 + MediaBrowser.Controller/Entities/Folder.cs | 2 +- MediaBrowser.Controller/Entities/IHasImages.cs | 6 + MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 2 +- .../MediaBrowser.Controller.csproj | 5 +- .../Providers/BaseItemXmlParser.cs | 2 +- .../Providers/BaseMetadataProvider.cs | 268 --------------------- .../Providers/BaseProviderInfo.cs | 51 ---- .../Providers/IForcedProvider.cs | 10 + MediaBrowser.Controller/Providers/IImageSaver.cs | 29 +++ .../Providers/IMetadataProvider.cs | 5 +- .../Providers/IProviderManager.cs | 4 +- .../Providers/IRemoteMetadataProvider.cs | 21 +- .../Providers/ProviderRefreshStatus.cs | 22 ++ 15 files changed, 106 insertions(+), 333 deletions(-) delete mode 100644 MediaBrowser.Controller/Providers/BaseMetadataProvider.cs delete mode 100644 MediaBrowser.Controller/Providers/BaseProviderInfo.cs create mode 100644 MediaBrowser.Controller/Providers/IForcedProvider.cs create mode 100644 MediaBrowser.Controller/Providers/IImageSaver.cs create mode 100644 MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 2583450a3b..27e1643075 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -179,7 +179,7 @@ namespace MediaBrowser.Controller.Entities.Audio // Refresh all non-songs foreach (var item in others) { - if (tasks.Count > 3) + if (tasks.Count >= 3) { await Task.WhenAll(tasks).ConfigureAwait(false); tasks.Clear(); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 62ea0cf5d1..224907a72a 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -216,8 +216,18 @@ namespace MediaBrowser.Controller.Entities /// Returns true if this item should not attempt to fetch metadata /// /// true if [dont fetch meta]; otherwise, false. + [Obsolete("Please use IsLocked instead of DontFetchMeta")] public bool DontFetchMeta { get; set; } + [IgnoreDataMember] + public bool IsLocked + { + get + { + return DontFetchMeta; + } + } + /// /// Gets or sets the locked fields. /// diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index c928a130e0..c08a2ddf2f 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -521,7 +521,7 @@ namespace MediaBrowser.Controller.Entities foreach (var child in children) { - if (tasks.Count >= 4) + if (tasks.Count >= 3) { await Task.WhenAll(tasks).ConfigureAwait(false); tasks.Clear(); diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index e07db88c4e..8e66605dd9 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -148,6 +148,12 @@ namespace MediaBrowser.Controller.Entities /// /// true if this instance is in mixed folder; otherwise, false. bool IsInMixedFolder { get; } + + /// + /// Gets a value indicating whether this instance is locked. + /// + /// true if this instance is locked; otherwise, false. + bool IsLocked { get; } } public static class HasImagesExtensions diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 3fd2af0917..6cd078677d 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -99,7 +99,7 @@ namespace MediaBrowser.Controller.Entities.Movies // Refresh songs foreach (var item in items) { - if (tasks.Count >= 4) + if (tasks.Count >= 3) { await Task.WhenAll(tasks).ConfigureAwait(false); tasks.Clear(); diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b62492bfed..32f2d151d4 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -147,9 +147,11 @@ + + @@ -216,7 +218,7 @@ - + @@ -224,7 +226,6 @@ - diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 59b7cd8db9..ada0aa6e29 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 f8580244a1..0000000000 --- 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 -{ - /// - /// Class BaseMetadataProvider - /// - public abstract class BaseMetadataProvider - { - /// - /// Gets the logger. - /// - /// The logger. - protected ILogger Logger { get; set; } - - protected ILogManager LogManager { get; set; } - - /// - /// Gets the configuration manager. - /// - /// The configuration manager. - protected IServerConfigurationManager ConfigurationManager { get; private set; } - - /// - /// The _id - /// - public readonly Guid Id; - - /// - /// The true task result - /// - protected static readonly Task TrueTaskResult = Task.FromResult(true); - - protected static readonly Task FalseTaskResult = Task.FromResult(false); - - /// - /// Supportses the specified item. - /// - /// The item. - /// true if XXXX, false otherwise - public abstract bool Supports(BaseItem item); - - /// - /// Gets a value indicating whether [requires internet]. - /// - /// true if [requires internet]; otherwise, false. - public virtual bool RequiresInternet - { - get - { - return false; - } - } - - /// - /// Gets the provider version. - /// - /// The provider version. - protected virtual string ProviderVersion - { - get - { - return null; - } - } - - public virtual ItemUpdateType ItemUpdateType - { - get { return RequiresInternet ? ItemUpdateType.MetadataDownload : ItemUpdateType.MetadataImport; } - } - - /// - /// Gets a value indicating whether [refresh on version change]. - /// - /// true if [refresh on version change]; otherwise, false. - protected virtual bool RefreshOnVersionChange - { - get - { - return false; - } - } - - /// - /// 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. - /// - /// true if this instance is slow; otherwise, false. - public virtual bool IsSlow - { - get { return RequiresInternet; } - } - - /// - /// Initializes a new instance of the class. - /// - protected BaseMetadataProvider(ILogManager logManager, IServerConfigurationManager configurationManager) - { - Logger = logManager.GetLogger(GetType().Name); - LogManager = logManager; - ConfigurationManager = configurationManager; - Id = GetType().FullName.GetMD5(); - - Initialize(); - } - - /// - /// Initializes this instance. - /// - protected virtual void Initialize() - { - } - - /// - /// Sets the persisted last refresh date on the item for this provider. - /// - /// The item. - /// The value. - /// The provider version. - /// The provider information. - /// The status. - /// item - 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; - } - - /// - /// Sets the last refreshed. - /// - /// The item. - /// The value. - /// The provider information. - /// The status. - public void SetLastRefreshed(BaseItem item, DateTime value, - BaseProviderInfo providerInfo, ProviderRefreshStatus status = ProviderRefreshStatus.Success) - { - SetLastRefreshed(item, value, ProviderVersion, providerInfo, status); - } - - /// - /// 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. - /// - /// The item. - /// true if XXXX, false otherwise - /// - public bool NeedsRefresh(BaseItem item, BaseProviderInfo data) - { - if (item == null) - { - throw new ArgumentNullException(); - } - - return NeedsRefreshInternal(item, data); - } - - /// - /// Gets a value indicating whether [enforce dont fetch metadata]. - /// - /// true if [enforce dont fetch metadata]; otherwise, false. - public virtual bool EnforceDontFetchMetadata - { - get - { - return true; - } - } - - /// - /// Needses the refresh internal. - /// - /// The item. - /// The provider info. - /// true if XXXX, false otherwise - /// - 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; - } - - /// - /// Needses the refresh based on compare date. - /// - /// The item. - /// The provider info. - /// true if XXXX, false otherwise - protected virtual bool NeedsRefreshBasedOnCompareDate(BaseItem item, BaseProviderInfo providerInfo) - { - return CompareDate(item) > providerInfo.LastRefreshed; - } - - /// - /// Override this to return the date that should be compared to the last refresh date - /// to determine if this provider should be re-fetched. - /// - /// The item. - /// DateTime. - protected virtual DateTime CompareDate(BaseItem item) - { - return DateTime.MinValue.AddMinutes(1); // want this to be greater than mindate so new items will refresh - } - - /// - /// Fetches metadata and returns true or false indicating if any work that requires persistence was done - /// - /// The item. - /// if set to true [force]. - /// The provider information. - /// The cancellation token. - /// Task{System.Boolean}. - /// - public abstract Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken); - - /// - /// Gets the priority. - /// - /// The priority. - public abstract MetadataProviderPriority Priority { get; } - } -} diff --git a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs b/MediaBrowser.Controller/Providers/BaseProviderInfo.cs deleted file mode 100644 index 3a33924f0d..0000000000 --- a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; - -namespace MediaBrowser.Controller.Providers -{ - /// - /// Class BaseProviderInfo - /// - public class BaseProviderInfo - { - public Guid ProviderId { get; set; } - /// - /// Gets or sets the last refreshed. - /// - /// The last refreshed. - public DateTime LastRefreshed { get; set; } - /// - /// Gets or sets the file system stamp. - /// - /// The file system stamp. - public Guid FileStamp { get; set; } - /// - /// Gets or sets the last refresh status. - /// - /// The last refresh status. - public ProviderRefreshStatus LastRefreshStatus { get; set; } - /// - /// Gets or sets the provider version. - /// - /// The provider version. - public string ProviderVersion { get; set; } - } - - /// - /// Enum ProviderRefreshStatus - /// - public enum ProviderRefreshStatus - { - /// - /// The success - /// - Success = 0, - /// - /// The completed with errors - /// - CompletedWithErrors = 1, - /// - /// The failure - /// - Failure = 2 - } -} diff --git a/MediaBrowser.Controller/Providers/IForcedProvider.cs b/MediaBrowser.Controller/Providers/IForcedProvider.cs new file mode 100644 index 0000000000..9e35b00ad6 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IForcedProvider.cs @@ -0,0 +1,10 @@ + +namespace MediaBrowser.Controller.Providers +{ + /// + /// This is a marker interface that will cause a provider to run even if IsLocked=true + /// + public interface IForcedProvider + { + } +} diff --git a/MediaBrowser.Controller/Providers/IImageSaver.cs b/MediaBrowser.Controller/Providers/IImageSaver.cs new file mode 100644 index 0000000000..5516c08f6a --- /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 + { + /// + /// Gets the name. + /// + /// The name. + string Name { get; } + } + + public interface IImageFileSaver : IImageSaver + { + /// + /// Gets the save paths. + /// + /// The item. + /// The type. + /// The format. + /// The index. + /// IEnumerable{System.String}. + IEnumerable GetSavePaths(IHasImages item, ImageType type, ImageFormat format, int index); + } +} diff --git a/MediaBrowser.Controller/Providers/IMetadataProvider.cs b/MediaBrowser.Controller/Providers/IMetadataProvider.cs index 70bc060594..d33b2c9eb0 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 - 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 4aeb86a6a0..eb4d3d9a65 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -55,8 +55,10 @@ namespace MediaBrowser.Controller.Providers /// The metadata services. /// The metadata providers. /// The savers. + /// The image savers. void AddParts(IEnumerable imageProviders, IEnumerable metadataServices, IEnumerable metadataProviders, - IEnumerable savers); + IEnumerable savers, + IEnumerable imageSavers); /// /// Gets the available remote images. diff --git a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs index cbbd62557e..065017cce4 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 : IMetadataProvider, IRemoteMetadataProvider + public interface IRemoteMetadataProvider : IMetadataProvider, IRemoteMetadataProvider where TItemType : IHasMetadata, IHasLookupInfo where TLookupInfoType : ItemLookupInfo, new() { Task> GetMetadata(TLookupInfoType info, CancellationToken cancellationToken); } + + public interface IRemoteSearchProvider + where TLookupInfoType : ItemLookupInfo + { + Task>> GetSearchResults(TLookupInfoType searchInfo, CancellationToken cancellationToken); + } + + public class SearchResult + 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 0000000000..6523dc4173 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ProviderRefreshStatus.cs @@ -0,0 +1,22 @@ + +namespace MediaBrowser.Controller.Providers +{ + /// + /// Enum ProviderRefreshStatus + /// + public enum ProviderRefreshStatus + { + /// + /// The success + /// + Success = 0, + /// + /// The completed with errors + /// + CompletedWithErrors = 1, + /// + /// The failure + /// + Failure = 2 + } +} -- cgit v1.2.3