mirror of https://github.com/Jackett/Jackett
myanonamouse: don't die when no results on paginated queries
This commit is contained in:
parent
8d0d882433
commit
31f7ce4a3b
|
@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Jackett.Common.Extensions;
|
||||||
using Jackett.Common.Models;
|
using Jackett.Common.Models;
|
||||||
using Jackett.Common.Models.IndexerConfig.Bespoke;
|
using Jackett.Common.Models.IndexerConfig.Bespoke;
|
||||||
using Jackett.Common.Services.Interfaces;
|
using Jackett.Common.Services.Interfaces;
|
||||||
|
@ -163,7 +164,9 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
{
|
{
|
||||||
var results = await PerformQuery(new TorznabQuery());
|
var results = await PerformQuery(new TorznabQuery());
|
||||||
if (!results.Any())
|
if (!results.Any())
|
||||||
|
{
|
||||||
throw new Exception("Your man_id did not work");
|
throw new Exception("Your man_id did not work");
|
||||||
|
}
|
||||||
|
|
||||||
IsConfigured = true;
|
IsConfigured = true;
|
||||||
SaveConfig();
|
SaveConfig();
|
||||||
|
@ -197,13 +200,19 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
};
|
};
|
||||||
|
|
||||||
if (configData.SearchInDescription.Value)
|
if (configData.SearchInDescription.Value)
|
||||||
|
{
|
||||||
qParams.Add("tor[srchIn][description]", "true");
|
qParams.Add("tor[srchIn][description]", "true");
|
||||||
|
}
|
||||||
|
|
||||||
if (configData.SearchInSeries.Value)
|
if (configData.SearchInSeries.Value)
|
||||||
|
{
|
||||||
qParams.Add("tor[srchIn][series]", "true");
|
qParams.Add("tor[srchIn][series]", "true");
|
||||||
|
}
|
||||||
|
|
||||||
if (configData.SearchInFilenames.Value)
|
if (configData.SearchInFilenames.Value)
|
||||||
|
{
|
||||||
qParams.Add("tor[srchIn][filenames]", "true");
|
qParams.Add("tor[srchIn][filenames]", "true");
|
||||||
|
}
|
||||||
|
|
||||||
var catList = MapTorznabCapsToTrackers(query);
|
var catList = MapTorznabCapsToTrackers(query);
|
||||||
if (catList.Any())
|
if (catList.Any())
|
||||||
|
@ -216,11 +225,15 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
qParams.Add("tor[cat][]", "0");
|
qParams.Add("tor[cat][]", "0");
|
||||||
|
}
|
||||||
|
|
||||||
var urlSearch = SearchUrl;
|
var urlSearch = SearchUrl;
|
||||||
if (qParams.Count > 0)
|
if (qParams.Count > 0)
|
||||||
|
{
|
||||||
urlSearch += $"?{qParams.GetQueryString()}";
|
urlSearch += $"?{qParams.GetQueryString()}";
|
||||||
|
}
|
||||||
|
|
||||||
var response = await RequestWithCookiesAndRetryAsync(
|
var response = await RequestWithCookiesAndRetryAsync(
|
||||||
urlSearch,
|
urlSearch,
|
||||||
|
@ -228,8 +241,11 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
{
|
{
|
||||||
{"Accept", "application/json"}
|
{"Accept", "application/json"}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.ContentString.StartsWith("Error"))
|
if (response.ContentString.StartsWith("Error"))
|
||||||
|
{
|
||||||
throw new Exception(response.ContentString);
|
throw new Exception(response.ContentString);
|
||||||
|
}
|
||||||
|
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
|
|
||||||
|
@ -239,8 +255,10 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
var sitelink = new Uri(SiteLink);
|
var sitelink = new Uri(SiteLink);
|
||||||
|
|
||||||
var error = jsonContent.Value<string>("error");
|
var error = jsonContent.Value<string>("error");
|
||||||
if (error != null && error == "Nothing returned, out of 0")
|
if (error.IsNotNullOrWhiteSpace() && error.StartsWithIgnoreCase("Nothing returned, out of"))
|
||||||
|
{
|
||||||
return releases;
|
return releases;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var item in jsonContent.Value<JArray>("data"))
|
foreach (var item in jsonContent.Value<JArray>("data"))
|
||||||
{
|
{
|
||||||
|
@ -271,35 +289,47 @@ namespace Jackett.Common.Indexers.Definitions
|
||||||
|
|
||||||
var authorInfo = item.Value<string>("author_info");
|
var authorInfo = item.Value<string>("author_info");
|
||||||
if (authorInfo != null)
|
if (authorInfo != null)
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var authorInfoList = JsonConvert.DeserializeObject<Dictionary<string, string>>(authorInfo);
|
var authorInfoList = JsonConvert.DeserializeObject<Dictionary<string, string>>(authorInfo);
|
||||||
var author = authorInfoList?.Take(5).Select(v => v.Value).ToList();
|
var author = authorInfoList?.Take(5).Select(v => v.Value).ToList();
|
||||||
|
|
||||||
if (author != null && author.Any())
|
if (author != null && author.Any())
|
||||||
|
{
|
||||||
release.Title += " by " + string.Join(", ", author);
|
release.Title += " by " + string.Join(", ", author);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
// the JSON on author_info field can be malformed due to double quotes
|
// the JSON on author_info field can be malformed due to double quotes
|
||||||
logger.Warn($"{Name} error parsing author_info: {authorInfo}");
|
logger.Warn($"{Name} error parsing author_info: {authorInfo}");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var flags = new List<string>();
|
var flags = new List<string>();
|
||||||
|
|
||||||
var langCode = item.Value<string>("lang_code");
|
var langCode = item.Value<string>("lang_code");
|
||||||
if (!string.IsNullOrEmpty(langCode))
|
if (!string.IsNullOrEmpty(langCode))
|
||||||
|
{
|
||||||
flags.Add(langCode);
|
flags.Add(langCode);
|
||||||
|
}
|
||||||
|
|
||||||
var filetype = item.Value<string>("filetype");
|
var filetype = item.Value<string>("filetype");
|
||||||
if (!string.IsNullOrEmpty(filetype))
|
if (!string.IsNullOrEmpty(filetype))
|
||||||
|
{
|
||||||
flags.Add(filetype.ToUpper());
|
flags.Add(filetype.ToUpper());
|
||||||
|
}
|
||||||
|
|
||||||
if (flags.Count > 0)
|
if (flags.Count > 0)
|
||||||
|
{
|
||||||
release.Title += " [" + string.Join(" / ", flags) + "]";
|
release.Title += " [" + string.Join(" / ", flags) + "]";
|
||||||
|
}
|
||||||
|
|
||||||
if (item.Value<bool>("vip"))
|
if (item.Value<bool>("vip"))
|
||||||
|
{
|
||||||
release.Title += " [VIP]";
|
release.Title += " [VIP]";
|
||||||
|
}
|
||||||
|
|
||||||
releases.Add(release);
|
releases.Add(release);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue