automatically download banner,poster, fanart. without a job :D

This commit is contained in:
kay.one
2013-03-03 21:53:02 -08:00
parent 62c1be1634
commit 1ccbb3c9d8
42 changed files with 245 additions and 483 deletions
-81
View File
@@ -1,81 +0,0 @@
using System;
using System.IO;
using System.Linq;
using NLog;
using NzbDrone.Common;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Model.Notification;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Jobs
{
public class BannerDownloadJob : IJob
{
private readonly ISeriesService _seriesService;
private readonly BannerProvider _bannerProvider;
private readonly ISeriesRepository _seriesRepository;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private const string BANNER_URL_PREFIX = "http://www.thetvdb.com/banners/";
public BannerDownloadJob(ISeriesService seriesService, BannerProvider bannerProvider, ISeriesRepository seriesRepository)
{
_seriesService = seriesService;
_bannerProvider = bannerProvider;
_seriesRepository = seriesRepository;
}
public BannerDownloadJob()
{
}
public string Name
{
get { return "Banner Download"; }
}
public TimeSpan DefaultInterval
{
get { return TimeSpan.FromDays(30); }
}
public virtual void Start(ProgressNotification notification, dynamic options)
{
Logger.Debug("Starting banner download job");
if (options != null)
{
Series series = _seriesRepository.Get((int)options.SeriesId);
if (series != null && !String.IsNullOrEmpty(series.BannerUrl))
{
DownloadBanner(notification, series);
}
return;
}
var seriesInDb = _seriesRepository.All();
foreach (var series in seriesInDb.Where(s => !String.IsNullOrEmpty(s.BannerUrl)))
{
DownloadBanner(notification, series);
}
Logger.Debug("Finished banner download job");
}
public virtual void DownloadBanner(ProgressNotification notification, Series series)
{
notification.CurrentMessage = string.Format("Downloading banner for '{0}'", series.Title);
if (_bannerProvider.Download(series))
notification.CurrentMessage = string.Format("Successfully download banner for '{0}'", series.Title);
else
notification.CurrentMessage = string.Format("Failed to download banner for '{0}'", series.Title);
}
}
}
+1 -1
View File
@@ -64,7 +64,7 @@ namespace NzbDrone.Core.Jobs
return;
}
if (episode.Series.SeriesType == SeriesType.Daily)
if (episode.Series.SeriesTypes == SeriesTypes.Daily)
{
if (!episode.AirDate.HasValue)
{
+2 -7
View File
@@ -22,7 +22,6 @@ namespace NzbDrone.Core.Jobs
private readonly IMediaFileService _mediaFileService;
private readonly UpdateInfoJob _updateInfoJob;
private readonly DiskScanJob _diskScanJob;
private readonly BannerDownloadJob _bannerDownloadJob;
private readonly ISeasonRepository _seasonRepository;
private readonly XemUpdateJob _xemUpdateJob;
private readonly ISeriesRepository _seriesRepository;
@@ -34,15 +33,14 @@ namespace NzbDrone.Core.Jobs
public ImportNewSeriesJob(ISeriesService seriesService, IEpisodeService episodeService,
IMediaFileService mediaFileService, UpdateInfoJob updateInfoJob,
DiskScanJob diskScanJob, BannerDownloadJob bannerDownloadJob,
ISeasonRepository seasonRepository, XemUpdateJob xemUpdateJob, ISeriesRepository seriesRepository,ISeasonService seasonService)
DiskScanJob diskScanJob,
ISeasonRepository seasonRepository, XemUpdateJob xemUpdateJob, ISeriesRepository seriesRepository, ISeasonService seasonService)
{
_seriesService = seriesService;
_episodeService = episodeService;
_mediaFileService = mediaFileService;
_updateInfoJob = updateInfoJob;
_diskScanJob = diskScanJob;
_bannerDownloadJob = bannerDownloadJob;
_seasonRepository = seasonRepository;
_xemUpdateJob = xemUpdateJob;
_seriesRepository = seriesRepository;
@@ -86,9 +84,6 @@ namespace NzbDrone.Core.Jobs
var updatedSeries = _seriesRepository.Get(((ModelBase)currentSeries).Id);
AutoIgnoreSeasons(((ModelBase)updatedSeries).Id);
//Download the banner for the new series
_bannerDownloadJob.Start(notification, new { SeriesId = ((ModelBase)updatedSeries).Id });
//Get Scene Numbering if applicable
_xemUpdateJob.Start(notification, new { SeriesId = ((ModelBase)updatedSeries).Id });
+18
View File
@@ -0,0 +1,18 @@
using System.Linq;
namespace NzbDrone.Core.MediaCover
{
public enum MediaCoverTypes
{
Poster = 0,
Banner = 1,
Fanart = 2
}
public class MediaCover
{
public MediaCoverTypes CoverType { get; set; }
public string Url { get; set; }
}
}
@@ -0,0 +1,68 @@
using System;
using System.IO;
using System.Linq;
using NLog;
using NzbDrone.Common;
using NzbDrone.Common.Eventing;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Tv.Events;
namespace NzbDrone.Core.MediaCover
{
public class MediaCoverService : IHandle<SeriesUpdatedEvent>
{
private readonly HttpProvider _httpProvider;
private readonly DiskProvider _diskProvider;
private readonly Logger _logger;
private readonly string _coverRootFolder;
private const string COVER_URL_PREFIX = "http://www.thetvdb.com/banners/";
public MediaCoverService(HttpProvider httpProvider, DiskProvider diskProvider, EnvironmentProvider environmentProvider, Logger logger)
{
_httpProvider = httpProvider;
_diskProvider = diskProvider;
_logger = logger;
_coverRootFolder = environmentProvider.GetMediaCoverPath();
}
public void Handle(SeriesUpdatedEvent message)
{
EnsureCovers(message.Series);
}
private void EnsureCovers(Series series)
{
foreach (var cover in series.Covers)
{
var fileName = GetCoverPath(series.Id, cover.CoverType);
if (!_diskProvider.FileExists(fileName))
{
DownloadCover(series, cover);
}
}
}
private void DownloadCover(Series series, MediaCover cover)
{
try
{
var fileName = GetCoverPath(series.Id, cover.CoverType);
_logger.Info("Downloading {0} for {1}", cover.CoverType, series.Title);
_httpProvider.DownloadFile(COVER_URL_PREFIX + cover.Url, fileName);
}
catch (Exception e)
{
_logger.ErrorException("Couldn't download media cover for " + series.TvDbId, e);
}
}
private string GetCoverPath(int seriesId, MediaCoverTypes coverTypes)
{
return Path.Combine(_coverRootFolder, seriesId.ToString("0000"), coverTypes.ToString().ToLower() + ".jpg");
}
}
}
+1 -1
View File
@@ -132,7 +132,7 @@ namespace NzbDrone.Core.MediaFiles
result += series.Title + separatorStyle.Pattern;
}
if (series.SeriesType == SeriesType.Standard)
if (series.SeriesTypes == SeriesTypes.Standard)
{
result += numberStyle.Pattern.Replace("%0e",
String.Format("{0:00}", sortedEpisodes.First().EpisodeNumber));
@@ -3,12 +3,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.Tv;
using NzbDrone.Common;
namespace NzbDrone.Core.Providers
namespace NzbDrone.Core.MetadataSource
{
public class TvDbProvider
public class TvDbProxy
{
public const string TVDB_APIKEY = "5D2D188E86E07F4F";
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
@@ -18,7 +19,7 @@ namespace NzbDrone.Core.Providers
private readonly Tvdb.Tvdb _handlerV2;
public TvDbProvider()
public TvDbProxy()
{
_handlerV2 = new Tvdb.Tvdb(TVDB_APIKEY);
}
@@ -58,13 +59,29 @@ namespace NzbDrone.Core.Providers
series.Language = tvDbSeries.Language ?? string.Empty;
series.CleanTitle = Parser.NormalizeTitle(tvDbSeries.SeriesName);
series.LastInfoSync = DateTime.Now;
if (tvDbSeries.Runtime.HasValue)
{
series.Runtime = Convert.ToInt32(tvDbSeries.Runtime);
}
series.BannerUrl = tvDbSeries.banner;
series.Covers = new List<MediaCover.MediaCover>();
if (!string.IsNullOrWhiteSpace(tvDbSeries.banner))
{
series.Covers.Add(new MediaCover.MediaCover { CoverType = MediaCoverTypes.Banner, Url = tvDbSeries.banner });
}
if (!string.IsNullOrWhiteSpace(tvDbSeries.fanart))
{
series.Covers.Add(new MediaCover.MediaCover { CoverType = MediaCoverTypes.Fanart, Url = tvDbSeries.fanart });
}
if (!string.IsNullOrWhiteSpace(tvDbSeries.poster))
{
series.Covers.Add(new MediaCover.MediaCover { CoverType = MediaCoverTypes.Poster, Url = tvDbSeries.poster });
}
series.Network = tvDbSeries.Network;
if (tvDbSeries.FirstAired.HasValue && tvDbSeries.FirstAired.Value.Year > 1900)
@@ -1,29 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Providers;
using NzbDrone.Core.ReferenceData;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Model.TvRage;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Providers
namespace NzbDrone.Core.MetadataSource
{
public class TvRageMappingProvider
{
private readonly SceneMappingService _sceneMappingService;
private readonly TvRageProvider _tvRageProvider;
private readonly TvRageProxy _tvRageProxy;
private readonly IEpisodeService _episodeService;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public TvRageMappingProvider(SceneMappingService sceneMappingService,
TvRageProvider tvRageProvider, IEpisodeService episodeService)
TvRageProxy tvRageProxy, IEpisodeService episodeService)
{
_sceneMappingService = sceneMappingService;
_tvRageProvider = tvRageProvider;
_tvRageProxy = tvRageProxy;
_episodeService = episodeService;
}
@@ -36,7 +34,7 @@ namespace NzbDrone.Core.Providers
var firstEpisode = _episodeService.GetEpisode(series.Id, 1, 1);
var cleanName = _sceneMappingService.GetCleanName(series.Id);
var results = _tvRageProvider.SearchSeries(series.Title);
var results = _tvRageProxy.SearchSeries(series.Title);
var result = ProcessResults(results, series, cleanName, firstEpisode);
if (result != null)
@@ -44,7 +42,7 @@ namespace NzbDrone.Core.Providers
logger.Trace("TV Rage: {0} matches TVDB: {1}", result.Name, series.Title);
series.TvRageId = result.ShowId;
series.TvRageTitle = result.Name;
series.UtcOffset = _tvRageProvider.GetSeries(result.ShowId).UtcOffset;
series.UtcOffset = _tvRageProxy.GetSeries(result.ShowId).UtcOffset;
}
return series;
@@ -1,27 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using NLog;
using NzbDrone.Common;
using NzbDrone.Core.Helpers;
using NzbDrone.Core.Model.TvRage;
namespace NzbDrone.Core.Providers
namespace NzbDrone.Core.MetadataSource
{
public class TvRageProvider
public class TvRageProxy
{
private readonly HttpProvider _httpProvider;
private const string TVRAGE_APIKEY = "NW4v0PSmQIoVmpbASLdD";
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public TvRageProvider(HttpProvider httpProvider)
public TvRageProxy(HttpProvider httpProvider)
{
_httpProvider = httpProvider;
}
public TvRageProvider()
public TvRageProxy()
{
}
+1 -1
View File
@@ -91,7 +91,7 @@ namespace NzbDrone.Core.Model
return seasonResult;
}
if (Series.SeriesType == SeriesType.Daily)
if (Series.SeriesTypes == SeriesTypes.Daily)
{
var dailyResult = String.Format("{0} - {1:yyyy-MM-dd} - {2} [{3}]", seriesTitle,
AirDate, Episodes.First().Title, Quality.Quality);
+6 -5
View File
@@ -232,6 +232,7 @@
<Compile Include="Jobs\RefreshEpsiodeMetadata.cs" />
<Compile Include="Jobs\PastWeekBacklogSearchJob.cs" />
<Compile Include="Lifecycle\IInitializable.cs" />
<Compile Include="MediaCover\MediaCover.cs" />
<Compile Include="MediaFiles\MediaFileRepository.cs" />
<Compile Include="Model\DownloadClientType.cs" />
<Compile Include="Instrumentation\LogService.cs" />
@@ -264,6 +265,7 @@
<Compile Include="Tv\Events\EpisodeInfoUpdatedEvent.cs" />
<Compile Include="Tv\Events\EpisodeInfoAddedEvent.cs" />
<Compile Include="Tv\Events\SeriesAddedEvent.cs" />
<Compile Include="Tv\Events\SeriesUpdatedEvent.cs" />
<Compile Include="Tv\SeasonRepository.cs" />
<Compile Include="Tv\SeriesRepository.cs" />
<Compile Include="Tv\QualityModel.cs" />
@@ -294,7 +296,7 @@
<Compile Include="Model\Xem\XemSceneTvdbMapping.cs" />
<Compile Include="Model\Xem\XemValues.cs" />
<Compile Include="AutofacSignalrDependencyResolver.cs" />
<Compile Include="Providers\BannerProvider.cs" />
<Compile Include="MediaCover\MediaCoverService.cs" />
<Compile Include="DecisionEngine\LanguageSpecification.cs" />
<Compile Include="Providers\DownloadClients\NzbgetProvider.cs" />
<Compile Include="Providers\MediaInfoProvider.cs" />
@@ -321,7 +323,6 @@
<Compile Include="Jobs\RenameSeriesJob.cs" />
<Compile Include="Lifecycle\AppUpdateJob.cs" />
<Compile Include="Jobs\BacklogSearchJob.cs" />
<Compile Include="Jobs\BannerDownloadJob.cs" />
<Compile Include="Jobs\ConvertEpisodeJob.cs" />
<Compile Include="Jobs\SeriesSearchJob.cs" />
<Compile Include="Jobs\SeasonSearchJob.cs" />
@@ -337,8 +338,8 @@
<Compile Include="Jobs\IJob.cs" />
<Compile Include="Jobs\RssSyncJob.cs" />
<Compile Include="Jobs\UpdateInfoJob.cs" />
<Compile Include="Providers\TvRageMappingProvider.cs" />
<Compile Include="Providers\TvRageProvider.cs" />
<Compile Include="MetadataSource\TvRageMappingProvider.cs" />
<Compile Include="MetadataSource\TvRageProxy.cs" />
<Compile Include="Providers\XemCommunicationProvider.cs" />
<Compile Include="Providers\XemProvider.cs" />
<Compile Include="Qualities\Quality.cs" />
@@ -504,7 +505,7 @@
<Compile Include="Providers\SmtpProvider.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Providers\TvDbProvider.cs">
<Compile Include="MetadataSource\TvDbProxy.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Providers\TwitterProvider.cs">
-102
View File
@@ -1,102 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using NLog;
using NzbDrone.Common;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Model.Notification;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Providers
{
public class BannerProvider
{
private readonly HttpProvider _httpProvider;
private readonly EnvironmentProvider _environmentProvider;
private readonly DiskProvider _diskProvider;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
private const string BANNER_URL_PREFIX = "http://www.thetvdb.com/banners/";
public BannerProvider(HttpProvider httpProvider, EnvironmentProvider environmentProvider,
DiskProvider diskProvider)
{
_httpProvider = httpProvider;
_environmentProvider = environmentProvider;
_diskProvider = diskProvider;
}
public BannerProvider()
{
}
public virtual bool Download(Series series)
{
var bannerPath = _environmentProvider.GetBannerPath();
logger.Trace("Ensuring Banner Folder exists: ", bannerPath);
_diskProvider.CreateDirectory(bannerPath);
var bannerFilename = Path.Combine(bannerPath, series.Id.ToString()) + ".jpg";
logger.Trace("Downloading banner for '{0}'", series.Title);
try
{
_httpProvider.DownloadFile(BANNER_URL_PREFIX + series.BannerUrl, bannerFilename);
logger.Trace("Successfully download banner for '{0}'", series.Title);
}
catch (Exception)
{
logger.Debug("Failed to download banner for '{0}'", series.Title);
return false;
}
return true;
}
public virtual bool Delete(int seriesId)
{
var bannerPath = _environmentProvider.GetBannerPath();
var bannerFilename = Path.Combine(bannerPath, seriesId.ToString()) + ".jpg";
try
{
logger.Trace("Checking if banner exists: {0}", bannerFilename);
if (_diskProvider.FileExists(bannerFilename))
{
logger.Trace("Deleting existing banner: {0}", bannerFilename);
_diskProvider.DeleteFile(bannerFilename);
}
}
catch(Exception ex)
{
logger.WarnException("Failed to delete banner: " + bannerFilename, ex);
return false;
}
return true;
}
public virtual void Download(string remotePath, string filename)
{
var url = BANNER_URL_PREFIX + remotePath;
try
{
_httpProvider.DownloadFile(url, filename);
logger.Trace("Successfully download banner from '{0}' to '{1}'", url, filename);
}
catch (Exception ex)
{
var message = String.Format("Failed to download Banner from '{0}' to '{1}'", url, filename);
logger.DebugException(message, ex);
throw;
}
}
}
}
+1 -1
View File
@@ -117,7 +117,7 @@ namespace NzbDrone.Core.Providers
var size = _diskProvider.GetSize(filePath);
var runTime = _mediaInfoProvider.GetRunTime(filePath);
if (series.SeriesType == SeriesType.Daily || parseResult.SeasonNumber > 0)
if (series.SeriesTypes == SeriesTypes.Daily || parseResult.SeasonNumber > 0)
{
if (size < Constants.IgnoreFileSize && runTime < 180)
{
@@ -43,7 +43,7 @@ namespace NzbDrone.Core.Providers.DownloadClients
var matchingTitleWithQuality = matchigTitle.Where(q => q.ParseResult.Quality >= newParseResult.Quality);
if (newParseResult.Series.SeriesType == SeriesType.Daily)
if (newParseResult.Series.SeriesTypes == SeriesTypes.Daily)
{
return matchingTitleWithQuality.Any(q => q.ParseResult.AirDate.Value.Date == newParseResult.AirDate.Value.Date);
}
@@ -42,7 +42,7 @@ namespace NzbDrone.Core.Providers.DownloadClients
var matchingTitleWithQuality = matchigTitle.Where(q => q.ParseResult.Quality >= newParseResult.Quality);
if (newParseResult.Series.SeriesType == SeriesType.Daily)
if (newParseResult.Series.SeriesTypes == SeriesTypes.Daily)
{
return matchingTitleWithQuality.Any(q => q.ParseResult.AirDate.Value.Date == newParseResult.AirDate.Value.Date);
}
+2 -2
View File
@@ -46,7 +46,7 @@ namespace NzbDrone.Core.Providers
return new List<int>();
}
if (series.SeriesType == SeriesType.Daily)
if (series.SeriesTypes == SeriesTypes.Daily)
{
logger.Trace("Daily series detected, skipping season search: {0}", series.Title);
return new List<int>();
@@ -75,7 +75,7 @@ namespace NzbDrone.Core.Providers
return new List<int>();
}
if (series.SeriesType == SeriesType.Daily)
if (series.SeriesTypes == SeriesTypes.Daily)
{
logger.Trace("Daily series detected, skipping season search: {0}", series.Title);
return new List<int>();
@@ -24,7 +24,7 @@ namespace NzbDrone.Core.ReferenceData
if (series != null)
{
_seriesService.SetSeriesType(series.Id, SeriesType.Daily);
_seriesService.SetSeriesType(series.Id, SeriesTypes.Daily);
}
}
}
+1 -1
View File
@@ -86,7 +86,7 @@ namespace NzbDrone.Core.Tv
{
string seriesTitle = Series == null ? "[NULL]" : Series.Title;
if (Series != null && Series.SeriesType == SeriesType.Daily && AirDate.HasValue)
if (Series != null && Series.SeriesTypes == SeriesTypes.Daily && AirDate.HasValue)
return string.Format("{0} - {1:yyyy-MM-dd}", seriesTitle, AirDate.Value);
return string.Format("{0} - S{1:00}E{2:00}", seriesTitle, SeasonNumber, EpisodeNumber);
+6 -5
View File
@@ -5,6 +5,7 @@ using NLog;
using NzbDrone.Common.Eventing;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Download;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Tv.Events;
@@ -39,14 +40,14 @@ namespace NzbDrone.Core.Tv
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
private readonly TvDbProvider _tvDbProvider;
private readonly TvDbProxy _tvDbProxy;
private readonly ISeasonRepository _seasonRepository;
private readonly IEpisodeRepository _episodeRepository;
private readonly IEventAggregator _eventAggregator;
public EpisodeService(TvDbProvider tvDbProviderProvider, ISeasonRepository seasonRepository, IEpisodeRepository episodeRepository, IEventAggregator eventAggregator)
public EpisodeService(TvDbProxy tvDbProxyProxy, ISeasonRepository seasonRepository, IEpisodeRepository episodeRepository, IEventAggregator eventAggregator)
{
_tvDbProvider = tvDbProviderProvider;
_tvDbProxy = tvDbProxyProxy;
_seasonRepository = seasonRepository;
_episodeRepository = episodeRepository;
_eventAggregator = eventAggregator;
@@ -89,7 +90,7 @@ namespace NzbDrone.Core.Tv
if (parseResult.AirDate.HasValue)
{
if (parseResult.Series.SeriesType == SeriesType.Standard)
if (parseResult.Series.SeriesTypes == SeriesTypes.Standard)
{
//Todo: Collect this as a Series we want to treat as a daily series, or possible parsing error
logger.Warn("Found daily-style episode for non-daily series: {0}. {1}", parseResult.Series.Title, parseResult.OriginalString);
@@ -182,7 +183,7 @@ namespace NzbDrone.Core.Tv
var successCount = 0;
var failCount = 0;
var tvdbEpisodes = _tvDbProvider.GetEpisodes(series.TvDbId);
var tvdbEpisodes = _tvDbProxy.GetEpisodes(series.TvDbId);
var seriesEpisodes = GetEpisodeBySeries(series.Id);
var updateList = new List<Episode>();
@@ -0,0 +1,15 @@
using System.Linq;
using NzbDrone.Common.Eventing;
namespace NzbDrone.Core.Tv.Events
{
public class SeriesUpdatedEvent : IEvent
{
public Series Series { get; private set; }
public SeriesUpdatedEvent(Series series)
{
Series = series;
}
}
}
+5 -5
View File
@@ -9,10 +9,10 @@ using Sqo.Attributes;
namespace NzbDrone.Core.Tv
{
public enum SeriesType
public enum SeriesTypes
{
Standard =0,
Daily =1,
Standard = 0,
Daily = 1,
Anime = 2,
}
@@ -35,8 +35,8 @@ namespace NzbDrone.Core.Tv
public DateTime? LastInfoSync { get; set; }
public DateTime? LastDiskSync { get; set; }
public int Runtime { get; set; }
public string BannerUrl { get; set; }
public SeriesType SeriesType { get; set; }
public List<MediaCover.MediaCover> Covers { get; set; }
public SeriesTypes SeriesTypes { get; set; }
public BacklogSettingType BacklogSetting { get; set; }
public string Network { get; set; }
public DateTime? CustomStartDate { get; set; }
+3 -3
View File
@@ -11,7 +11,7 @@ namespace NzbDrone.Core.Tv
List<Series> Search(string title);
Series GetByTitle(string cleanTitle);
Series FindByTvdbId(int tvdbId);
void SetSeriesType(int seriesId, SeriesType seriesType);
void SetSeriesType(int seriesId, SeriesTypes seriesTypes);
}
@@ -42,9 +42,9 @@ namespace NzbDrone.Core.Tv
return Queryable.SingleOrDefault(s => s.TvDbId == tvdbId);
}
public void SetSeriesType(int seriesId, SeriesType seriesType)
public void SetSeriesType(int seriesId, SeriesTypes seriesTypes)
{
ObjectDatabase.UpdateField(new Series(){Id = seriesId, SeriesType =seriesType }, "SeriesType");
ObjectDatabase.UpdateField(new Series(){Id = seriesId, SeriesTypes =seriesTypes }, "SeriesType");
}
}
}
+11 -8
View File
@@ -6,6 +6,7 @@ using NzbDrone.Common.EnsureThat;
using NzbDrone.Common.Eventing;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Qualities;
@@ -22,14 +23,14 @@ namespace NzbDrone.Core.Tv
void AddSeries(string title, string path, int tvDbSeriesId, int qualityProfileId, DateTime? airedAfter);
void UpdateFromSeriesEditor(IList<Series> editedSeries);
Series FindByTvdbId(int tvdbId);
void SetSeriesType(int seriesId, SeriesType seriesType);
void SetSeriesType(int seriesId, SeriesTypes seriesTypes);
}
public class SeriesService : ISeriesService
{
private readonly ISeriesRepository _seriesRepository;
private readonly IConfigService _configService;
private readonly TvDbProvider _tvDbProvider;
private readonly TvDbProxy _tvDbProxy;
private readonly TvRageMappingProvider _tvRageMappingProvider;
private readonly IEventAggregator _eventAggregator;
private readonly IQualityProfileService _qualityProfileService;
@@ -39,12 +40,12 @@ namespace NzbDrone.Core.Tv
private readonly SceneMappingService _sceneNameMappingService;
public SeriesService(ISeriesRepository seriesRepository, IConfigService configServiceService,
TvDbProvider tvDbProviderProvider, SceneMappingService sceneNameMappingService,
TvDbProxy tvDbProxyProxy, SceneMappingService sceneNameMappingService,
TvRageMappingProvider tvRageMappingProvider, IEventAggregator eventAggregator, IQualityProfileService qualityProfileService)
{
_seriesRepository = seriesRepository;
_configService = configServiceService;
_tvDbProvider = tvDbProviderProvider;
_tvDbProxy = tvDbProxyProxy;
_sceneNameMappingService = sceneNameMappingService;
_tvRageMappingProvider = tvRageMappingProvider;
_eventAggregator = eventAggregator;
@@ -61,7 +62,7 @@ namespace NzbDrone.Core.Tv
public Series UpdateSeriesInfo(int seriesId)
{
var series = _seriesRepository.Get(seriesId);
var tvDbSeries = _tvDbProvider.GetSeries(series.TvDbId);
var tvDbSeries = _tvDbProxy.GetSeries(series.TvDbId);
series.Title = tvDbSeries.Title;
series.AirTime = tvDbSeries.AirTime;
@@ -71,7 +72,7 @@ namespace NzbDrone.Core.Tv
series.CleanTitle = tvDbSeries.CleanTitle;
series.LastInfoSync = DateTime.Now;
series.Runtime = tvDbSeries.Runtime;
series.BannerUrl = tvDbSeries.BannerUrl;
series.Covers = tvDbSeries.Covers;
series.Network = tvDbSeries.Network;
series.FirstAired = tvDbSeries.FirstAired;
@@ -88,6 +89,8 @@ namespace NzbDrone.Core.Tv
_seriesRepository.Update(series);
_eventAggregator.Publish(new SeriesUpdatedEvent(series));
return series;
}
@@ -159,9 +162,9 @@ namespace NzbDrone.Core.Tv
return _seriesRepository.FindByTvdbId(tvdbId);
}
public void SetSeriesType(int seriesId, SeriesType seriesType)
public void SetSeriesType(int seriesId, SeriesTypes seriesTypes)
{
_seriesRepository.SetSeriesType(seriesId, seriesType);
_seriesRepository.SetSeriesType(seriesId, seriesTypes);
}