From 8d0d88243311590a6a1b0502507f8b6a6c264e7a Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 7 Jul 2024 20:47:40 +0300 Subject: [PATCH] indexers: more nullable query.season checks --- src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs | 4 ++-- src/Jackett.Common/Indexers/Definitions/AvistaZ.cs | 2 +- src/Jackett.Common/Indexers/Definitions/HDBitsApi.cs | 4 ++-- src/Jackett.Common/Indexers/Definitions/LostFilm.cs | 2 +- src/Jackett.Common/Indexers/Definitions/TVStore.cs | 11 ++++++++--- src/Jackett.Common/Indexers/Definitions/Toloka.cs | 3 ++- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs b/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs index 7b68296ad..bff3d31d2 100644 --- a/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs +++ b/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs @@ -455,12 +455,12 @@ namespace Jackett.Common.Indexers.Definitions if (FilterSeasonEpisode) { - if (query.Season != 0 && season != null && season != query.Season) // skip if season doesn't match + if (query.Season.HasValue && query.Season > 0 && season != null && season != query.Season) // skip if season doesn't match { continue; } - if (query.Episode != null && episode != null && episode != int.Parse(query.Episode)) // skip if episode doesn't match + if (query.Episode.IsNotNullOrWhiteSpace() && episode != null && episode != int.Parse(query.Episode)) // skip if episode doesn't match { continue; } diff --git a/src/Jackett.Common/Indexers/Definitions/AvistaZ.cs b/src/Jackett.Common/Indexers/Definitions/AvistaZ.cs index 31fee8912..4dd083634 100644 --- a/src/Jackett.Common/Indexers/Definitions/AvistaZ.cs +++ b/src/Jackett.Common/Indexers/Definitions/AvistaZ.cs @@ -64,7 +64,7 @@ namespace Jackett.Common.Indexers.Definitions // Avistaz has episodes without season. eg Running Man E323 protected override string GetEpisodeSearchTerm(TorznabQuery query) => - query.Season == 0 && query.Episode.IsNotNullOrWhiteSpace() + (query.Season == null || query.Season == 0) && query.Episode.IsNotNullOrWhiteSpace() ? $"E{query.Episode}" : $"{query.GetEpisodeSearchString()}"; } diff --git a/src/Jackett.Common/Indexers/Definitions/HDBitsApi.cs b/src/Jackett.Common/Indexers/Definitions/HDBitsApi.cs index 002106eb4..3c8eb4f2b 100644 --- a/src/Jackett.Common/Indexers/Definitions/HDBitsApi.cs +++ b/src/Jackett.Common/Indexers/Definitions/HDBitsApi.cs @@ -123,12 +123,12 @@ namespace Jackett.Common.Indexers.Definitions } else { - if (query.Season != 0) + if (query.Season.HasValue) { requestData["tvdb"]["season"] = query.Season; } - if (!string.IsNullOrEmpty(query.Episode)) + if (query.Episode.IsNotNullOrWhiteSpace()) { requestData["tvdb"]["episode"] = query.Episode; } diff --git a/src/Jackett.Common/Indexers/Definitions/LostFilm.cs b/src/Jackett.Common/Indexers/Definitions/LostFilm.cs index 9280653c6..d95e53c0f 100644 --- a/src/Jackett.Common/Indexers/Definitions/LostFilm.cs +++ b/src/Jackett.Common/Indexers/Definitions/LostFilm.cs @@ -385,7 +385,7 @@ namespace Jackett.Common.Indexers.Definitions foreach (var serie in series) { var link = serie["link"].ToString(); - var season = query.Season == 0 ? "/seasons" : "/season_" + query.Season.ToString(); + var season = query.Season.HasValue && query.Season > 0 ? $"/season_{query.Season}" : "/seasons"; var url = SiteLink + link.TrimStart('/') + season; if (!string.IsNullOrEmpty(query.Episode)) // Fetch single episode releases diff --git a/src/Jackett.Common/Indexers/Definitions/TVStore.cs b/src/Jackett.Common/Indexers/Definitions/TVStore.cs index 04d07f495..197b10721 100644 --- a/src/Jackett.Common/Indexers/Definitions/TVStore.cs +++ b/src/Jackett.Common/Indexers/Definitions/TVStore.cs @@ -8,6 +8,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using AngleSharp.Html.Parser; +using Jackett.Common.Extensions; using Jackett.Common.Models; using Jackett.Common.Models.IndexerConfig.Bespoke; using Jackett.Common.Services.Interfaces; @@ -279,7 +280,8 @@ namespace Jackett.Common.Indexers.Definitions if (!string.IsNullOrWhiteSpace(query.SearchTerm)) { var searchString = query.SanitizedSearchTerm; - if (query.Season == 0 && string.IsNullOrWhiteSpace(query.Episode)) + + if (!query.Season.HasValue && query.Episode.IsNullOrWhiteSpace()) { //Jackett doesn't check for lowercase s00e00 so do it here. var searchMatch = _seriesInfoSearchRegex.Match(searchString); @@ -301,11 +303,14 @@ namespace Jackett.Common.Indexers.Definitions queryParams.Add("c", Convert.ToBase64String(plainTextBytes)); } - if (query.Season != 0) + if (query.Season.HasValue && query.Season > 0) { queryParams.Add("s", query.Season.ToString()); - if (!string.IsNullOrWhiteSpace(query.Episode)) + + if (query.Episode.IsNotNullOrWhiteSpace()) + { queryParams.Add("e", query.Episode); + } } var results = await RequestWithCookiesAndRetryAsync(SearchUrl + "?" + queryParams.GetQueryString()); diff --git a/src/Jackett.Common/Indexers/Definitions/Toloka.cs b/src/Jackett.Common/Indexers/Definitions/Toloka.cs index fc3099a59..7d489b1eb 100644 --- a/src/Jackett.Common/Indexers/Definitions/Toloka.cs +++ b/src/Jackett.Common/Indexers/Definitions/Toloka.cs @@ -271,7 +271,8 @@ namespace Jackett.Common.Indexers.Definitions else // use the normal search { searchString = searchString.Replace("-", " "); - if (query.Season != 0) + + if (query.Season.HasValue && query.Season > 0) { searchString += " Сезон " + query.Season; }