From 31f7ce4a3bdd339b1db4f58519b746c7ff173caa Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 7 Jul 2024 22:15:00 +0300 Subject: [PATCH] myanonamouse: don't die when no results on paginated queries --- .../Indexers/Definitions/MyAnonamouse.cs | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Jackett.Common/Indexers/Definitions/MyAnonamouse.cs b/src/Jackett.Common/Indexers/Definitions/MyAnonamouse.cs index f3e876547..4cae9cd33 100644 --- a/src/Jackett.Common/Indexers/Definitions/MyAnonamouse.cs +++ b/src/Jackett.Common/Indexers/Definitions/MyAnonamouse.cs @@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Linq; using System.Threading.Tasks; +using Jackett.Common.Extensions; using Jackett.Common.Models; using Jackett.Common.Models.IndexerConfig.Bespoke; using Jackett.Common.Services.Interfaces; @@ -163,7 +164,9 @@ namespace Jackett.Common.Indexers.Definitions { var results = await PerformQuery(new TorznabQuery()); if (!results.Any()) + { throw new Exception("Your man_id did not work"); + } IsConfigured = true; SaveConfig(); @@ -197,13 +200,19 @@ namespace Jackett.Common.Indexers.Definitions }; if (configData.SearchInDescription.Value) + { qParams.Add("tor[srchIn][description]", "true"); + } if (configData.SearchInSeries.Value) + { qParams.Add("tor[srchIn][series]", "true"); + } if (configData.SearchInFilenames.Value) + { qParams.Add("tor[srchIn][filenames]", "true"); + } var catList = MapTorznabCapsToTrackers(query); if (catList.Any()) @@ -216,11 +225,15 @@ namespace Jackett.Common.Indexers.Definitions } } else + { qParams.Add("tor[cat][]", "0"); + } var urlSearch = SearchUrl; if (qParams.Count > 0) + { urlSearch += $"?{qParams.GetQueryString()}"; + } var response = await RequestWithCookiesAndRetryAsync( urlSearch, @@ -228,8 +241,11 @@ namespace Jackett.Common.Indexers.Definitions { {"Accept", "application/json"} }); + if (response.ContentString.StartsWith("Error")) + { throw new Exception(response.ContentString); + } var releases = new List(); @@ -239,8 +255,10 @@ namespace Jackett.Common.Indexers.Definitions var sitelink = new Uri(SiteLink); var error = jsonContent.Value("error"); - if (error != null && error == "Nothing returned, out of 0") + if (error.IsNotNullOrWhiteSpace() && error.StartsWithIgnoreCase("Nothing returned, out of")) + { return releases; + } foreach (var item in jsonContent.Value("data")) { @@ -271,35 +289,47 @@ namespace Jackett.Common.Indexers.Definitions var authorInfo = item.Value("author_info"); if (authorInfo != null) + { try { var authorInfoList = JsonConvert.DeserializeObject>(authorInfo); var author = authorInfoList?.Take(5).Select(v => v.Value).ToList(); if (author != null && author.Any()) + { release.Title += " by " + string.Join(", ", author); + } } catch (Exception) { // the JSON on author_info field can be malformed due to double quotes logger.Warn($"{Name} error parsing author_info: {authorInfo}"); } + } var flags = new List(); var langCode = item.Value("lang_code"); if (!string.IsNullOrEmpty(langCode)) + { flags.Add(langCode); + } var filetype = item.Value("filetype"); if (!string.IsNullOrEmpty(filetype)) + { flags.Add(filetype.ToUpper()); + } if (flags.Count > 0) + { release.Title += " [" + string.Join(" / ", flags) + "]"; + } if (item.Value("vip")) + { release.Title += " [VIP]"; + } releases.Add(release); }