using System; using NLog; using NzbDrone.Common; using NzbDrone.Core.Model; using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; using TvdbLib.Data; namespace NzbDrone.Core.Providers.Metadata { public abstract class MetadataBase { protected readonly Logger _logger; protected readonly ConfigProvider _configProvider; protected readonly DiskProvider _diskProvider; protected readonly BannerProvider _bannerProvider; protected readonly EpisodeProvider _episodeProvider; protected MetadataBase(ConfigProvider configProvider, DiskProvider diskProvider, BannerProvider bannerProvider, EpisodeProvider episodeProvider) { _configProvider = configProvider; _diskProvider = diskProvider; _bannerProvider = bannerProvider; _episodeProvider = episodeProvider; _logger = LogManager.GetLogger(GetType().ToString()); } /// <summary> /// Gets the name for the metabase provider /// </summary> public abstract string Name { get; } /// <summary> /// Creates metadata for a series /// </summary> /// <param name = "series">The series to create the metadata for</param> /// <param name = "tvDbSeries">Series information from TheTvDb</param> public abstract void CreateForSeries(Series series, TvdbSeries tvDbSeries); /// <summary> /// Creates metadata for the episode file /// </summary> /// <param name = "episodeFile">The episode file to create the metadata</param> /// <param name = "tvDbSeries">Series information from TheTvDb</param> public abstract void CreateForEpisodeFile(EpisodeFile episodeFile, TvdbSeries tvDbSeries); /// <summary> /// Removes metadata for a series /// </summary> /// <param name = "series">The series to create the metadata for</param> public abstract void RemoveForSeries(Series series); /// <summary> /// Removes metadata for the episode file /// </summary> /// <param name = "episodeFile">The episode file to create the metadata</param> public abstract void RemoveForEpisodeFile(EpisodeFile episodeFile); public virtual string GetEpisodeGuideUrl(int seriesId) { return String.Format("http://www.thetvdb.com/api/{0}/series/{1}/all/en.zip", TvDbProvider.TVDB_APIKEY, seriesId); } } }