From fc65a89fbcaa4be29eeebe2590081d26dec54666 Mon Sep 17 00:00:00 2001 From: Yukine Date: Sun, 11 Jul 2021 22:50:01 +0200 Subject: [PATCH] refactor: improve readability, use UTC in request instead New York --- .../Indexers/Definitions/SubsPlease.cs | 57 +++++++------------ 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/SubsPlease.cs b/src/NzbDrone.Core/Indexers/Definitions/SubsPlease.cs index 68eac46fb..33d338e68 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/SubsPlease.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/SubsPlease.cs @@ -5,6 +5,7 @@ using System.Text; using System.Text.RegularExpressions; using FluentValidation; +using Newtonsoft.Json; using NLog; using NzbDrone.Common.Http; using NzbDrone.Core.Annotations; @@ -21,7 +22,7 @@ namespace NzbDrone.Core.Indexers.Definitions public class SubsPlease : TorrentIndexerBase { public override string Name => "SubsPlease"; - public override string[] IndexerUrls => new string[] + public override string[] IndexerUrls => new[] { "https://subsplease.org/", "https://subsplease.nocensor.space/" @@ -69,18 +70,14 @@ public class SubsPleaseRequestGenerator : IIndexerRequestGenerator public SubsPleaseSettings Settings { get; set; } public IndexerCapabilities Capabilities { get; set; } - public SubsPleaseRequestGenerator() - { - } - private IEnumerable 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 - Match resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]"); + var resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]"); if (resMatch.Success) { searchTerm = searchTerm.Replace(resMatch.Value, string.Empty); @@ -89,7 +86,7 @@ private IEnumerable GetSearchRequests(string term) var queryParameters = new NameValueCollection { { "f", "search" }, - { "tz", "America/New_York" }, + { "tz", "UTC" }, { "s", searchTerm } }; @@ -100,12 +97,12 @@ private IEnumerable GetSearchRequests(string term) private IEnumerable GetRssRequest() { - var searchUrl = string.Format("{0}/api/?", Settings.BaseUrl.TrimEnd('/')); + var searchUrl = $"{Settings.BaseUrl.TrimEnd('/')}/api/?"; var queryParameters = new NameValueCollection { { "f", "latest" }, - { "tz", "America/New_York" } + { "tz", "UTC" } }; var request = new IndexerRequest(searchUrl + queryParameters.GetQueryString(), HttpAccept.Json); @@ -131,14 +128,9 @@ public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCrit { var pageableRequests = new IndexerPageableRequestChain(); - if (searchCriteria.RssSearch) - { - pageableRequests.Add(GetRssRequest()); - } - else - { - pageableRequests.Add(GetSearchRequests(string.Format("{0}", searchCriteria.SanitizedTvSearchString))); - } + pageableRequests.Add(searchCriteria.RssSearch + ? GetRssRequest() + : GetSearchRequests(searchCriteria.SanitizedTvSearchString)); return pageableRequests; } @@ -154,14 +146,9 @@ public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchC { var pageableRequests = new IndexerPageableRequestChain(); - if (searchCriteria.RssSearch) - { - pageableRequests.Add(GetRssRequest()); - } - else - { - pageableRequests.Add(GetSearchRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm))); - } + pageableRequests.Add(searchCriteria.RssSearch + ? GetRssRequest() + : GetSearchRequests(searchCriteria.SanitizedSearchTerm)); return pageableRequests; } @@ -198,16 +185,14 @@ public IList ParseResponse(IndexerResponse indexerResponse) var jsonResponse = new HttpResponse>(indexerResponse.HttpResponse); - foreach (var keyValue in jsonResponse.Resource) + foreach (var value in jsonResponse.Resource.Values) { - SubPleaseRelease r = keyValue.Value; - - foreach (var d in r.Downloads) + foreach (var d in value.Downloads) { var release = new TorrentInfo { - InfoUrl = _settings.BaseUrl + $"shows/{r.Page}/", - PublishDate = r.Release_Date.DateTime, + InfoUrl = _settings.BaseUrl + $"shows/{value.Page}/", + PublishDate = value.ReleaseDate.DateTime, Files = 1, Categories = new List { NewznabStandardCategory.TVAnime }, Seeders = 1, @@ -219,7 +204,7 @@ public IList ParseResponse(IndexerResponse indexerResponse) }; // 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.DownloadUrl = null; release.Guid = d.Magnet; @@ -272,7 +257,9 @@ public NzbDroneValidationResult Validate() public class SubPleaseRelease { 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 Episode { get; set; } public SubPleaseDownloadInfo[] Downloads { get; set; }