diff --git a/src/NzbDrone.Core/Parser/ParsingService.cs b/src/NzbDrone.Core/Parser/ParsingService.cs index 2d12a04c7..2d8b1e57f 100644 --- a/src/NzbDrone.Core/Parser/ParsingService.cs +++ b/src/NzbDrone.Core/Parser/ParsingService.cs @@ -207,7 +207,14 @@ namespace NzbDrone.Core.Parser { if (parsedEpisodeInfo.FullSeason) { - return _episodeService.GetEpisodesBySeason(series.Id, mappedSeasonNumber); + if (series.UseSceneNumbering && sceneSource) + { + return _episodeService.GetEpisodesBySceneSeason(series.Id, mappedSeasonNumber); + } + else + { + return _episodeService.GetEpisodesBySeason(series.Id, mappedSeasonNumber); + } } if (parsedEpisodeInfo.IsDaily) diff --git a/src/NzbDrone.Core/Tv/EpisodeRepository.cs b/src/NzbDrone.Core/Tv/EpisodeRepository.cs index efab93031..c268807c9 100644 --- a/src/NzbDrone.Core/Tv/EpisodeRepository.cs +++ b/src/NzbDrone.Core/Tv/EpisodeRepository.cs @@ -19,6 +19,7 @@ namespace NzbDrone.Core.Tv List Find(int seriesId, string date); List GetEpisodes(int seriesId); List GetEpisodes(int seriesId, int seasonNumber); + List GetEpisodesBySceneSeason(int seriesId, int sceneSeasonNumber); List GetEpisodeByFileId(int fileId); List EpisodesWithFiles(int seriesId); PagingSpec EpisodesWithoutFiles(PagingSpec pagingSpec, bool includeSpecials); @@ -78,6 +79,13 @@ namespace NzbDrone.Core.Tv .ToList(); } + public List GetEpisodesBySceneSeason(int seriesId, int seasonNumber) + { + return Query.Where(s => s.SeriesId == seriesId) + .AndWhere(s => s.SceneSeasonNumber == seasonNumber) + .ToList(); + } + public List GetEpisodeByFileId(int fileId) { return Query.Where(e => e.EpisodeFileId == fileId).ToList(); diff --git a/src/NzbDrone.Core/Tv/EpisodeService.cs b/src/NzbDrone.Core/Tv/EpisodeService.cs index 71565ef9d..e9bf45507 100644 --- a/src/NzbDrone.Core/Tv/EpisodeService.cs +++ b/src/NzbDrone.Core/Tv/EpisodeService.cs @@ -23,6 +23,7 @@ namespace NzbDrone.Core.Tv Episode FindEpisode(int seriesId, string date, int? part); List GetEpisodeBySeries(int seriesId); List GetEpisodesBySeason(int seriesId, int seasonNumber); + List GetEpisodesBySceneSeason(int seriesId, int sceneSeasonNumber); List EpisodesWithFiles(int seriesId); PagingSpec EpisodesWithoutFiles(PagingSpec pagingSpec); List GetEpisodesByFileId(int episodeFileId); @@ -98,6 +99,11 @@ namespace NzbDrone.Core.Tv return _episodeRepository.GetEpisodes(seriesId, seasonNumber); } + public List GetEpisodesBySceneSeason(int seriesId, int sceneSeasonNumber) + { + return _episodeRepository.GetEpisodesBySceneSeason(seriesId, sceneSeasonNumber); + } + public Episode FindEpisodeByTitle(int seriesId, int seasonNumber, string releaseTitle) { // TODO: can replace this search mechanism with something smarter/faster/better