mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-10-02 00:34:37 +02:00
refactor: improve readability, use UTC in request instead New York
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Net;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.Annotations;
|
using NzbDrone.Core.Annotations;
|
||||||
@@ -21,7 +22,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
public class SubsPlease : TorrentIndexerBase<SubsPleaseSettings>
|
public class SubsPlease : TorrentIndexerBase<SubsPleaseSettings>
|
||||||
{
|
{
|
||||||
public override string Name => "SubsPlease";
|
public override string Name => "SubsPlease";
|
||||||
public override string[] IndexerUrls => new string[]
|
public override string[] IndexerUrls => new[]
|
||||||
{
|
{
|
||||||
"https://subsplease.org/",
|
"https://subsplease.org/",
|
||||||
"https://subsplease.nocensor.space/"
|
"https://subsplease.nocensor.space/"
|
||||||
@@ -69,18 +70,14 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
public SubsPleaseSettings Settings { get; set; }
|
public SubsPleaseSettings Settings { get; set; }
|
||||||
public IndexerCapabilities Capabilities { get; set; }
|
public IndexerCapabilities Capabilities { get; set; }
|
||||||
|
|
||||||
public SubsPleaseRequestGenerator()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<IndexerRequest> GetSearchRequests(string term)
|
private IEnumerable<IndexerRequest> GetSearchRequests(string term)
|
||||||
{
|
{
|
||||||
var searchUrl = string.Format("{0}/api/?", Settings.BaseUrl.TrimEnd('/'));
|
var searchUrl = $"{Settings.BaseUrl.TrimEnd('/')}/api/?";
|
||||||
|
|
||||||
string searchTerm = Regex.Replace(term, "\\[?SubsPlease\\]?\\s*", string.Empty, RegexOptions.IgnoreCase).Trim();
|
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
|
// If the search terms contain a resolution, remove it from the query sent to the API
|
||||||
Match resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]");
|
var resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]");
|
||||||
if (resMatch.Success)
|
if (resMatch.Success)
|
||||||
{
|
{
|
||||||
searchTerm = searchTerm.Replace(resMatch.Value, string.Empty);
|
searchTerm = searchTerm.Replace(resMatch.Value, string.Empty);
|
||||||
@@ -89,7 +86,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
var queryParameters = new NameValueCollection
|
var queryParameters = new NameValueCollection
|
||||||
{
|
{
|
||||||
{ "f", "search" },
|
{ "f", "search" },
|
||||||
{ "tz", "America/New_York" },
|
{ "tz", "UTC" },
|
||||||
{ "s", searchTerm }
|
{ "s", searchTerm }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -100,12 +97,12 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
|
|
||||||
private IEnumerable<IndexerRequest> GetRssRequest()
|
private IEnumerable<IndexerRequest> GetRssRequest()
|
||||||
{
|
{
|
||||||
var searchUrl = string.Format("{0}/api/?", Settings.BaseUrl.TrimEnd('/'));
|
var searchUrl = $"{Settings.BaseUrl.TrimEnd('/')}/api/?";
|
||||||
|
|
||||||
var queryParameters = new NameValueCollection
|
var queryParameters = new NameValueCollection
|
||||||
{
|
{
|
||||||
{ "f", "latest" },
|
{ "f", "latest" },
|
||||||
{ "tz", "America/New_York" }
|
{ "tz", "UTC" }
|
||||||
};
|
};
|
||||||
|
|
||||||
var request = new IndexerRequest(searchUrl + queryParameters.GetQueryString(), HttpAccept.Json);
|
var request = new IndexerRequest(searchUrl + queryParameters.GetQueryString(), HttpAccept.Json);
|
||||||
@@ -131,14 +128,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
if (searchCriteria.RssSearch)
|
pageableRequests.Add(searchCriteria.RssSearch
|
||||||
{
|
? GetRssRequest()
|
||||||
pageableRequests.Add(GetRssRequest());
|
: GetSearchRequests(searchCriteria.SanitizedTvSearchString));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pageableRequests.Add(GetSearchRequests(string.Format("{0}", searchCriteria.SanitizedTvSearchString)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
@@ -154,14 +146,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
if (searchCriteria.RssSearch)
|
pageableRequests.Add(searchCriteria.RssSearch
|
||||||
{
|
? GetRssRequest()
|
||||||
pageableRequests.Add(GetRssRequest());
|
: GetSearchRequests(searchCriteria.SanitizedSearchTerm));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pageableRequests.Add(GetSearchRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
@@ -198,16 +185,14 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
|
|
||||||
var jsonResponse = new HttpResponse<Dictionary<string, SubPleaseRelease>>(indexerResponse.HttpResponse);
|
var jsonResponse = new HttpResponse<Dictionary<string, SubPleaseRelease>>(indexerResponse.HttpResponse);
|
||||||
|
|
||||||
foreach (var keyValue in jsonResponse.Resource)
|
foreach (var value in jsonResponse.Resource.Values)
|
||||||
{
|
{
|
||||||
SubPleaseRelease r = keyValue.Value;
|
foreach (var d in value.Downloads)
|
||||||
|
|
||||||
foreach (var d in r.Downloads)
|
|
||||||
{
|
{
|
||||||
var release = new TorrentInfo
|
var release = new TorrentInfo
|
||||||
{
|
{
|
||||||
InfoUrl = _settings.BaseUrl + $"shows/{r.Page}/",
|
InfoUrl = _settings.BaseUrl + $"shows/{value.Page}/",
|
||||||
PublishDate = r.Release_Date.DateTime,
|
PublishDate = value.ReleaseDate.DateTime,
|
||||||
Files = 1,
|
Files = 1,
|
||||||
Categories = new List<IndexerCategory> { NewznabStandardCategory.TVAnime },
|
Categories = new List<IndexerCategory> { NewznabStandardCategory.TVAnime },
|
||||||
Seeders = 1,
|
Seeders = 1,
|
||||||
@@ -219,7 +204,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Ex: [SubsPlease] Shingeki no Kyojin (The Final Season) - 64 (1080p)
|
// Ex: [SubsPlease] Shingeki no Kyojin (The Final Season) - 64 (1080p)
|
||||||
release.Title += $"[SubsPlease] {r.Show} - {r.Episode} ({d.Res}p)";
|
release.Title += $"[SubsPlease] {value.Show} - {value.Episode} ({d.Res}p)";
|
||||||
release.MagnetUrl = d.Magnet;
|
release.MagnetUrl = d.Magnet;
|
||||||
release.DownloadUrl = null;
|
release.DownloadUrl = null;
|
||||||
release.Guid = d.Magnet;
|
release.Guid = d.Magnet;
|
||||||
@@ -272,7 +257,9 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||||||
public class SubPleaseRelease
|
public class SubPleaseRelease
|
||||||
{
|
{
|
||||||
public string Time { get; set; }
|
public string Time { get; set; }
|
||||||
public DateTimeOffset Release_Date { get; set; }
|
|
||||||
|
[JsonProperty("release_date")]
|
||||||
|
public DateTimeOffset ReleaseDate { get; set; }
|
||||||
public string Show { get; set; }
|
public string Show { get; set; }
|
||||||
public string Episode { get; set; }
|
public string Episode { get; set; }
|
||||||
public SubPleaseDownloadInfo[] Downloads { get; set; }
|
public SubPleaseDownloadInfo[] Downloads { get; set; }
|
||||||
|
Reference in New Issue
Block a user