using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Events; namespace MediaBrowser.Controller.Providers { /// /// Interface IProviderManager /// public interface IProviderManager { /// /// Queues the refresh. /// void QueueRefresh(Guid itemId, MetadataRefreshOptions options, RefreshPriority priority); /// /// Refreshes the full item. /// /// The item. /// The options. /// The cancellation token. /// Task. Task RefreshFullItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken); /// /// Refreshes the metadata. /// /// The item. /// The options. /// The cancellation token. /// Task. Task RefreshSingleItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken); /// /// Saves the image. /// /// The item. /// The URL. /// The type. /// Index of the image. /// The cancellation token. /// Task. Task SaveImage(IHasMetadata item, string url, ImageType type, int? imageIndex, CancellationToken cancellationToken); /// /// Saves the image. /// /// The item. /// The source. /// Type of the MIME. /// The type. /// Index of the image. /// The cancellation token. /// Task. Task SaveImage(IHasMetadata item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken); /// /// Saves the image. /// /// Task. Task SaveImage(IHasMetadata item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken); /// /// Adds the metadata providers. /// void AddParts(IEnumerable imageProviders, IEnumerable metadataServices, IEnumerable metadataProviders, IEnumerable savers, IEnumerable externalIds); /// /// Gets the available remote images. /// /// The item. /// The query. /// The cancellation token. /// Task{IEnumerable{RemoteImageInfo}}. Task> GetAvailableRemoteImages(IHasMetadata item, RemoteImageQuery query, CancellationToken cancellationToken); /// /// Gets the image providers. /// /// The item. /// IEnumerable{ImageProviderInfo}. IEnumerable GetRemoteImageProviderInfo(IHasMetadata item); /// /// Gets all metadata plugins. /// /// IEnumerable{MetadataPlugin}. IEnumerable GetAllMetadataPlugins(); /// /// Gets the external urls. /// /// The item. /// IEnumerable{ExternalUrl}. IEnumerable GetExternalUrls(BaseItem item); /// /// Gets the external identifier infos. /// /// The item. /// IEnumerable{ExternalIdInfo}. IEnumerable GetExternalIdInfos(IHasProviderIds item); /// /// Saves the metadata. /// /// The item. /// Type of the update. /// Task. Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType); /// /// Saves the metadata. /// /// The item. /// Type of the update. /// The savers. /// Task. Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable savers); /// /// Gets the metadata options. /// /// The item. /// MetadataOptions. MetadataOptions GetMetadataOptions(IHasMetadata item); /// /// Gets the remote search results. /// /// The type of the t item type. /// The type of the t lookup type. /// The search information. /// The cancellation token. /// Task{IEnumerable{SearchResult{``1}}}. Task> GetRemoteSearchResults( RemoteSearchQuery searchInfo, CancellationToken cancellationToken) where TItemType : BaseItem, new() where TLookupType : ItemLookupInfo; /// /// Gets the search image. /// /// Name of the provider. /// The URL. /// The cancellation token. /// Task{HttpResponseInfo}. Task GetSearchImage(string providerName, string url, CancellationToken cancellationToken); Dictionary GetRefreshQueue(); void OnRefreshStart(BaseItem item); void OnRefreshProgress(BaseItem item, double progress); void OnRefreshComplete(BaseItem item); double? GetRefreshProgress(Guid id); event EventHandler> RefreshStarted; event EventHandler> RefreshCompleted; event EventHandler>> RefreshProgress; } public enum RefreshPriority { High = 0, Normal = 1, Low = 2 } }