mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-27 20:44:00 +02:00
Fixed: (SubsPlease) Season search improvements and support for movie searches
Co-authored-by: Florent Delrieu <fdelrieu@klanik.com>
This commit is contained in:
@@ -82,49 +82,13 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
_settings = settings;
|
_settings = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<IndexerRequest> GetSearchRequests(string term)
|
|
||||||
{
|
|
||||||
var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/api/?";
|
|
||||||
|
|
||||||
var searchTerm = Regex.Replace(term, "\\[?SubsPlease\\]?\\s*", string.Empty, RegexOptions.IgnoreCase).Trim();
|
|
||||||
|
|
||||||
// If the search terms contain a resolution, remove it from the query sent to the API
|
|
||||||
var resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]");
|
|
||||||
if (resMatch.Success)
|
|
||||||
{
|
|
||||||
searchTerm = searchTerm.Replace(resMatch.Value, string.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
var queryParameters = new NameValueCollection
|
|
||||||
{
|
|
||||||
{ "f", "search" },
|
|
||||||
{ "tz", "UTC" },
|
|
||||||
{ "s", searchTerm }
|
|
||||||
};
|
|
||||||
|
|
||||||
var request = new IndexerRequest(searchUrl + queryParameters.GetQueryString(), HttpAccept.Json);
|
|
||||||
|
|
||||||
yield return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<IndexerRequest> GetRssRequest()
|
|
||||||
{
|
|
||||||
var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/api/?";
|
|
||||||
|
|
||||||
var queryParameters = new NameValueCollection
|
|
||||||
{
|
|
||||||
{ "f", "latest" },
|
|
||||||
{ "tz", "UTC" }
|
|
||||||
};
|
|
||||||
|
|
||||||
var request = new IndexerRequest(searchUrl + queryParameters.GetQueryString(), HttpAccept.Json);
|
|
||||||
|
|
||||||
yield return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
pageableRequests.Add(GetSearchRequests(searchCriteria.SanitizedSearchTerm, searchCriteria));
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
|
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
|
||||||
@@ -136,31 +100,69 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
pageableRequests.Add(searchCriteria.IsRssSearch
|
var searchTerm = searchCriteria.SanitizedSearchTerm.Trim();
|
||||||
? GetRssRequest()
|
|
||||||
: GetSearchRequests(searchCriteria.SanitizedTvSearchString));
|
// Only include season > 1 in searchTerm, format as S2 rather than S02
|
||||||
|
if (searchCriteria.Season is > 1)
|
||||||
|
{
|
||||||
|
searchTerm += $" S{searchCriteria.Season}";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (int.TryParse(searchCriteria.Episode, out var episode) && episode > 0)
|
||||||
|
{
|
||||||
|
searchTerm += $" {episode:00}";
|
||||||
|
}
|
||||||
|
|
||||||
|
pageableRequests.Add(GetSearchRequests(searchTerm, searchCriteria));
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
|
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
||||||
return pageableRequests;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
|
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
pageableRequests.Add(searchCriteria.IsRssSearch
|
pageableRequests.Add(GetSearchRequests(searchCriteria.SanitizedSearchTerm, searchCriteria));
|
||||||
? GetRssRequest()
|
|
||||||
: GetSearchRequests(searchCriteria.SanitizedSearchTerm));
|
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<IndexerRequest> GetSearchRequests(string term, SearchCriteriaBase searchCriteria)
|
||||||
|
{
|
||||||
|
var searchTerm = Regex.Replace(term, "\\[?SubsPlease\\]?\\s*", string.Empty, RegexOptions.IgnoreCase).Trim();
|
||||||
|
|
||||||
|
// If the search terms contain a resolution, remove it from the query sent to the API
|
||||||
|
var resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]");
|
||||||
|
if (resMatch.Success)
|
||||||
|
{
|
||||||
|
searchTerm = searchTerm.Replace(resMatch.Value, string.Empty).Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
var queryParameters = new NameValueCollection
|
||||||
|
{
|
||||||
|
{ "tz", "UTC" }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (searchCriteria.IsRssSearch)
|
||||||
|
{
|
||||||
|
queryParameters.Set("f", "latest");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
queryParameters.Set("f", "search");
|
||||||
|
queryParameters.Set("s", searchTerm);
|
||||||
|
}
|
||||||
|
|
||||||
|
var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/api/?{queryParameters.GetQueryString()}";
|
||||||
|
|
||||||
|
yield return new IndexerRequest(searchUrl, HttpAccept.Json);
|
||||||
|
}
|
||||||
|
|
||||||
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
||||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user