mirror of https://github.com/Jackett/Jackett
core: nullable query.season
nebulance-api: skip invalid requests
This commit is contained in:
parent
77cdb71ce9
commit
9a62a5d453
|
@ -168,7 +168,7 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
else if (DateTime.TryParseExact($"{query.Season} {query.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
|
||||
{
|
||||
// Daily Episode
|
||||
parameters.Name = showDate.ToString("yyyy.MM.dd");
|
||||
parameters.Name = showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
|
||||
parameters.Category = "Episode";
|
||||
pageableRequests.Add(GetPagedRequests(parameters, btnResults, btnOffset));
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
|
||||
public override IIndexerRequestGenerator GetRequestGenerator()
|
||||
{
|
||||
return new NebulanceAPIRequestGenerator(TorznabCaps, configData, SiteLink);
|
||||
return new NebulanceAPIRequestGenerator(TorznabCaps, configData, SiteLink, logger);
|
||||
}
|
||||
|
||||
public override IParseIndexerResponse GetParser()
|
||||
|
@ -140,12 +140,14 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
private readonly TorznabCapabilities _torznabCaps;
|
||||
private readonly ConfigurationDataAPIKey _configData;
|
||||
private readonly string _siteLink;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public NebulanceAPIRequestGenerator(TorznabCapabilities torznabCaps, ConfigurationDataAPIKey configData, string siteLink)
|
||||
public NebulanceAPIRequestGenerator(TorznabCapabilities torznabCaps, ConfigurationDataAPIKey configData, string siteLink, Logger logger)
|
||||
{
|
||||
_torznabCaps = torznabCaps;
|
||||
_configData = configData;
|
||||
_siteLink = siteLink;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IndexerPageableRequestChain GetSearchRequests(TorznabQuery query)
|
||||
|
@ -183,9 +185,9 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
}
|
||||
else
|
||||
{
|
||||
if (query.Season > 0)
|
||||
if (query.Season.HasValue)
|
||||
{
|
||||
queryParams.Season = query.Season;
|
||||
queryParams.Season = query.Season.Value;
|
||||
}
|
||||
|
||||
if (query.Episode.IsNotNullOrWhiteSpace() && int.TryParse(query.Episode, out var episodeNumber))
|
||||
|
@ -194,6 +196,16 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
if ((queryParams.Season.HasValue || queryParams.Episode.HasValue) &&
|
||||
queryParams.Name.IsNullOrWhiteSpace() &&
|
||||
queryParams.Release.IsNullOrWhiteSpace() &&
|
||||
!queryParams.TvMaze.HasValue)
|
||||
{
|
||||
_logger.Debug("NBL API does not support season calls without name, series, id, imdb, tvmaze, or time keys.");
|
||||
|
||||
return new IndexerPageableRequestChain();
|
||||
}
|
||||
|
||||
pageableRequests.Add(GetPagedRequests(queryParams, limit, offset));
|
||||
|
||||
return pageableRequests;
|
||||
|
|
|
@ -288,7 +288,7 @@ namespace Jackett.Common.Indexers.Definitions
|
|||
}
|
||||
|
||||
// Filter by Season
|
||||
if (query.Season != 0 && !releaseInfo.Title.Contains("S" + query.Season.ToString("D2")))
|
||||
if (query.Season.HasValue && !releaseInfo.Title.Contains("S" + query.Season.Value.ToString("D2")))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace Jackett.Common.Models
|
|||
[JsonIgnore]
|
||||
public bool Cache { get; set; } = true;
|
||||
|
||||
public int Season { get; set; }
|
||||
public int? Season { get; set; }
|
||||
public string Episode { get; set; }
|
||||
public string SearchTerm { get; set; }
|
||||
|
||||
|
@ -227,7 +227,9 @@ namespace Jackett.Common.Models
|
|||
if (limit != null && limit > 0)
|
||||
{
|
||||
if (limit > queryString.Length)
|
||||
{
|
||||
limit = queryString.Length;
|
||||
}
|
||||
|
||||
queryString = queryString.Substring(0, (int)limit);
|
||||
}
|
||||
|
@ -243,14 +245,20 @@ namespace Jackett.Common.Models
|
|||
|
||||
public string GetEpisodeSearchString()
|
||||
{
|
||||
if (Season == 0)
|
||||
if (Season == null || Season == 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
string episodeString;
|
||||
if (DateTime.TryParseExact($"{Season} {Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
|
||||
episodeString = showDate.ToString("yyyy.MM.dd");
|
||||
else if (string.IsNullOrEmpty(Episode))
|
||||
{
|
||||
episodeString = showDate.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
|
||||
}
|
||||
else if (Episode.IsNullOrWhiteSpace())
|
||||
{
|
||||
episodeString = $"S{Season:00}";
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
|
@ -261,8 +269,8 @@ namespace Jackett.Common.Models
|
|||
{
|
||||
episodeString = $"S{Season:00}E{Episode}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return episodeString;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue