using System; using System.Threading.Tasks; using MediaBrowser.Controller.Events; using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Providers { public abstract class BaseMetadataProvider : IDisposable { /// /// If the provider needs any startup routines, add them here /// public virtual void Init() { } /// /// Disposes anything created during Init /// public virtual void Dispose() { } public abstract bool Supports(BaseEntity item); public virtual bool RequiresInternet { get { return false; } } public abstract Task Fetch(BaseEntity item, ItemResolveEventArgs args); public abstract MetadataProviderPriority Priority { get; } } /// /// Determines when a provider should execute, relative to others /// public enum MetadataProviderPriority { // Run this provider at the beginning First = 1, // Run this provider after all first priority providers Second = 2, // Run this provider after all second priority providers Third = 3, // Run this provider last Last = 4 } }