123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using MediaBrowser.Controller.Entities;
- using MediaBrowser.Controller.Library;
- using MediaBrowser.Common.Extensions;
- using System.Threading.Tasks;
- using System;
- namespace MediaBrowser.Controller.Providers
- {
- public abstract class BaseMetadataProvider
- {
- protected Guid _id;
- public virtual Guid Id
- {
- get
- {
- if (_id == null) _id = this.GetType().FullName.GetMD5();
- return _id;
- }
- }
- public abstract bool Supports(BaseEntity item);
- public virtual bool RequiresInternet
- {
- get
- {
- return false;
- }
- }
- /// <summary>
- /// Returns the last refresh time of this provider for this item. Providers that care should
- /// call SetLastRefreshed to update this value.
- /// </summary>
- /// <param name="item"></param>
- /// <returns></returns>
- protected virtual DateTime LastRefreshed(BaseEntity item)
- {
- return (item.ProviderData[this.Id] ?? new BaseProviderInfo()).LastRefreshed;
- }
- /// <summary>
- /// Sets the persisted last refresh date on the item for this provider.
- /// </summary>
- /// <param name="item"></param>
- /// <param name="value"></param>
- protected virtual void SetLastRefreshed(BaseEntity item, DateTime value)
- {
- var data = item.ProviderData[this.Id] ?? new BaseProviderInfo();
- data.LastRefreshed = value;
- item.ProviderData[this.Id] = data;
- }
- /// <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>
- /// <returns></returns>
- public virtual bool NeedsRefresh(BaseEntity item)
- {
- return CompareDate(item) > LastRefreshed(item);
- }
- /// <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>
- protected virtual DateTime CompareDate(BaseEntity item)
- {
- return DateTime.MinValue;
- }
-
- public abstract Task FetchAsync(BaseEntity item, ItemResolveEventArgs args);
- public abstract MetadataProviderPriority Priority { get; }
- }
- /// <summary>
- /// Determines when a provider should execute, relative to others
- /// </summary>
- 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
- }
- }
|