diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs index a13ac5285..3ac1a6991 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/Search/SingleEpisodeSearchMatchSpecification.cs @@ -32,6 +32,12 @@ public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase se return Decision.Reject("Wrong season"); } + if (!remoteEpisode.ParsedEpisodeInfo.EpisodeNumbers.Any()) + { + _logger.Debug("Full season result during single episode search, skipping."); + return Decision.Reject("Full season pack"); + } + if (!remoteEpisode.ParsedEpisodeInfo.EpisodeNumbers.Contains(singleEpisodeSpec.EpisodeNumber)) { _logger.Debug("Episode number does not match searched episode number, skipping."); diff --git a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs index ea2b70fef..51925e828 100644 --- a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs @@ -44,6 +44,16 @@ public virtual IList> GetSearchRequests(SingleEpisod pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters)); } + + foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct()) + { + parameters = parameters.Clone(); + + parameters.Category = "Season"; + parameters.Name = String.Format("Season {0}", seasonNumber); + + pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters)); + } } return pageableRequest;