From f00ca5b05d74739e6b2bcaf76fe1ca726e38981e Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 21 Oct 2023 13:01:32 +0300 Subject: [PATCH] filelist: skip ID searches for daily episodes --- src/Jackett.Common/Indexers/FileList.cs | 47 +++++++++++++++++-------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/Jackett.Common/Indexers/FileList.cs b/src/Jackett.Common/Indexers/FileList.cs index 5c3a55969..4885c0ba4 100644 --- a/src/Jackett.Common/Indexers/FileList.cs +++ b/src/Jackett.Common/Indexers/FileList.cs @@ -131,6 +131,12 @@ namespace Jackett.Common.Indexers var releases = new List(); var indexerResponse = await CallProviderAsync(query); + + if (indexerResponse == null) + { + return releases; + } + var response = indexerResponse.ContentString; if ((int)indexerResponse.Status == 429) @@ -204,7 +210,7 @@ namespace Jackett.Common.Indexers private async Task CallProviderAsync(TorznabQuery query) { var searchUrl = ApiUrl; - var searchString = query.SanitizedSearchTerm.Trim(); + var searchQuery = query.SanitizedSearchTerm.Trim(); var queryCollection = new NameValueCollection { @@ -216,29 +222,42 @@ namespace Jackett.Common.Indexers queryCollection.Set("freeleech", "1"); } - if (query.IsImdbQuery || searchString.IsNotNullOrWhiteSpace()) + if (query.IsImdbQuery || searchQuery.IsNotNullOrWhiteSpace()) { queryCollection.Set("action", "search-torrents"); + if (DateTime.TryParseExact($"{query.Season} {query.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate)) + { + if (query.IsImdbQuery) + { + // Skip ID searches for daily episodes + return await Task.FromResult(null); + } + + searchQuery = $"{searchQuery} {showDate:yyyy.MM.dd}".Trim(); + } + else + { + if (query.Season > 0) + { + queryCollection.Set("season", query.Season.ToString()); + } + + if (query.Episode.IsNotNullOrWhiteSpace()) + { + queryCollection.Set("episode", query.Episode); + } + } + if (query.IsImdbQuery) { queryCollection.Set("type", "imdb"); queryCollection.Set("query", query.ImdbID); } - else if (searchString.IsNotNullOrWhiteSpace()) + else if (searchQuery.IsNotNullOrWhiteSpace()) { queryCollection.Set("type", "name"); - queryCollection.Set("query", searchString); - } - - if (query.Season > 0) - { - queryCollection.Set("season", query.Season.ToString()); - } - - if (query.Episode.IsNotNullOrWhiteSpace()) - { - queryCollection.Set("episode", query.Episode); + queryCollection.Set("query", searchQuery); } } else