diff --git a/src/NzbDrone.Core/IndexerSearch/Definitions/SpecialEpisodeSearchCriteria.cs b/src/NzbDrone.Core/IndexerSearch/Definitions/SpecialEpisodeSearchCriteria.cs index 2b5c0bc0c..18a64eaa4 100644 --- a/src/NzbDrone.Core/IndexerSearch/Definitions/SpecialEpisodeSearchCriteria.cs +++ b/src/NzbDrone.Core/IndexerSearch/Definitions/SpecialEpisodeSearchCriteria.cs @@ -12,10 +12,10 @@ public override string ToString() if (episodeTitles.Count > 0) { - return string.Format("[{0}] Specials", Series.Title); + return $"[{Series.Title} ({Series.SeriesType})] Specials"; } - return string.Format("[{0} : {1}]", Series.Title, string.Join(",", EpisodeQueryTitles)); + return $"[{Series.Title} ({Series.SeriesType}): {string.Join(",", EpisodeQueryTitles)}]"; } } } diff --git a/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs index 43a9516ee..4dd06eb2a 100644 --- a/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs @@ -8,6 +8,7 @@ using NzbDrone.Core.DataAugmentation.Scene; using NzbDrone.Core.IndexerSearch.Definitions; using NzbDrone.Core.ThingiProvider; +using NzbDrone.Core.Tv; namespace NzbDrone.Core.Indexers.Newznab { @@ -228,10 +229,12 @@ public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearch return pageableRequests; } + var categories = GetSearchCategories(searchCriteria); + if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchID) || searchCriteria.SearchMode == SearchMode.Default) { AddTvIdPageableRequests(pageableRequests, - Settings.Categories, + categories, searchCriteria, $"&season={NewznabifySeasonNumber(searchCriteria.SeasonNumber)}&ep={searchCriteria.EpisodeNumber}"); } @@ -239,7 +242,7 @@ public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearch if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddTitlePageableRequests(pageableRequests, - Settings.Categories, + categories, searchCriteria, $"&season={NewznabifySeasonNumber(searchCriteria.SeasonNumber)}&ep={searchCriteria.EpisodeNumber}"); } @@ -249,7 +252,7 @@ public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearch if (searchCriteria.SearchMode == SearchMode.Default) { AddTitlePageableRequests(pageableRequests, - Settings.Categories, + categories, searchCriteria, $"&season={NewznabifySeasonNumber(searchCriteria.SeasonNumber)}&ep={searchCriteria.EpisodeNumber}"); } @@ -474,13 +477,15 @@ public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearc if (SupportsSearch) { + var categories = GetSearchCategories(searchCriteria); + foreach (var queryTitle in searchCriteria.EpisodeQueryTitles) { var query = queryTitle.Replace('+', ' '); query = System.Web.HttpUtility.UrlEncode(query); pageableRequests.Add(GetPagedRequests(MaxPages, - Settings.Categories.Concat(Settings.AnimeCategories), + categories, "search", $"&q={query}")); } @@ -634,5 +639,12 @@ private static string NewznabifySeasonNumber(int seasonNumber) { return seasonNumber == 0 ? "00" : seasonNumber.ToString(); } + + private IList GetSearchCategories(SearchCriteriaBase searchCriteria) + { + return searchCriteria.Series?.SeriesType is SeriesTypes.Anime + ? Settings.AnimeCategories.ToList() + : Settings.Categories.ToList(); + } } }