using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; using Jellyfin.Data.Entities; using Jellyfin.Data.Events; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; 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(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken); /// /// Refreshes the metadata. /// /// The item. /// The options. /// The cancellation token. /// Task. Task RefreshSingleItem(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken); /// /// Saves the image. /// /// The item. /// The URL. /// The type. /// Index of the image. /// The cancellation token. /// Task. Task SaveImage(BaseItem 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(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken); /// /// Saves the image. /// /// Task. Task SaveImage(BaseItem item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken); Task SaveImage(User user, Stream source, string mimeType, string path); /// /// 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(BaseItem item, RemoteImageQuery query, CancellationToken cancellationToken); /// /// Gets the image providers. /// /// The item. /// IEnumerable{ImageProviderInfo}. IEnumerable GetRemoteImageProviderInfo(BaseItem item); /// /// Gets all metadata plugins. /// /// IEnumerable{MetadataPlugin}. MetadataPluginSummary[] 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. void SaveMetadata(BaseItem item, ItemUpdateType updateType); /// /// Saves the metadata. /// void SaveMetadata(BaseItem item, ItemUpdateType updateType, IEnumerable savers); /// /// Gets the metadata options. /// /// The item. /// MetadataOptions. MetadataOptions GetMetadataOptions(BaseItem 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 } }