diff --git a/NzbDrone.Core/Model/NzbSiteModel.cs b/NzbDrone.Core/Model/NzbSiteModel.cs index c7b70b6ce..f7be4741b 100644 --- a/NzbDrone.Core/Model/NzbSiteModel.cs +++ b/NzbDrone.Core/Model/NzbSiteModel.cs @@ -10,6 +10,7 @@ public class NzbSiteModel { private static readonly IList Sites = new List { + new NzbSiteModel {Name = "newzbin", Url = "newzbin.com", Pattern = @"\d{7,10}"}, new NzbSiteModel {Name = "nzbmatrix", Url = "nzbmatrix.com", Pattern = @"\d{6,10}"}, new NzbSiteModel {Name = "nzbsDotOrg", Url = "nzbs.org", Pattern = @"\d{5,10}"}, new NzbSiteModel {Name = "nzbsrus", Url = "nzbsrus.com", Pattern = @"\d{6,10}"}, diff --git a/NzbDrone.Core/Providers/RssItemProcessingProvider.cs b/NzbDrone.Core/Providers/RssItemProcessingProvider.cs index 6d0c3db0b..0de0edd56 100644 --- a/NzbDrone.Core/Providers/RssItemProcessingProvider.cs +++ b/NzbDrone.Core/Providers/RssItemProcessingProvider.cs @@ -60,11 +60,11 @@ public void DownloadIfWanted(NzbInfoModel nzb, Indexer indexer) } //Handles Full Season NZBs - var seasonParsedResult = Parser.ParseSeasonInfo(nzb.Title); + var seasonParseResult = Parser.ParseSeasonInfo(nzb.Title); - if (seasonParsedResult != null) + if (seasonParseResult != null) { - //ProcessFullSeasonItem + ProcessFullSeasonItem(nzb, indexer, seasonParseResult); return; } @@ -180,13 +180,14 @@ private void ProcessStandardItem(NzbInfoModel nzb, Indexer indexer, List(); - episodeParseResults.AddRange( - season.Episodes.Select( - e => - new EpisodeParseResult {EpisodeNumber = e.EpisodeNumber, SeasonNumber = e.SeasonNumber})); - + var episodeParseResults = GetEpisodeParseList(season.Episodes); AddToHistory(episodeParseResults, series, nzb, indexer); } } @@ -293,14 +290,9 @@ private void ProcessFullSeasonItem(NzbInfoModel nzb, Indexer indexer, SeasonPars if (indexer.IndexerName != "Newzbin") { - if (AddByUrl(nzb)) + if (_sabProvider.AddByUrl(nzb.Link.ToString(), nzb.TitleFix)) { - var episodeParseResults = new List(); - episodeParseResults.AddRange( - season.Episodes.Select( - e => - new EpisodeParseResult { EpisodeNumber = e.EpisodeNumber, SeasonNumber = e.SeasonNumber })); - + var episodeParseResults = GetEpisodeParseList(season.Episodes); AddToHistory(episodeParseResults, series, nzb, indexer); } @@ -308,18 +300,27 @@ private void ProcessFullSeasonItem(NzbInfoModel nzb, Indexer indexer, SeasonPars else { - //Send to SAB using Newzbin ID + if (_sabProvider.AddById(nzb.Id, nzb.TitleFix)) + { + var episodeParseResults = GetEpisodeParseList(season.Episodes); + AddToHistory(episodeParseResults, series, nzb, indexer); + } } } } - //Possibly grab the whole season if a certain % of the season is missing, rather than for 1 or 2 episodes - throw new NotImplementedException("NzbDrone is currently not able to handle downloadinga whole season when less than a whole season it missing"); + //Possibly grab the whole season if a certain % of the season is missing, rather than for 1 or 2 episodes } - private bool AddByUrl(NzbInfoModel nzb) + private List GetEpisodeParseList(List episodes) { - return _sabProvider.AddByUrl(nzb.Link.ToString(), nzb.TitleFix); + var episodeParseResults = new List(); + episodeParseResults.AddRange( + episodes.Select( + e => + new EpisodeParseResult { EpisodeNumber = e.EpisodeNumber, SeasonNumber = e.SeasonNumber })); + + return episodeParseResults; } private void AddToHistory(List episodeParseResults, Series series, NzbInfoModel nzb, Indexer indexer)