From 0f1afd416b34e0638fbd6e59f3b5a44d904d072f Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Tue, 10 May 2016 21:21:20 +0200 Subject: [PATCH] Fixed: Adjusted BTN Recent Feed (RssSync) to better use their api db indexes. --- src/NzbDrone.Common/Http/HttpRequest.cs | 21 +++++++++++++++---- .../Http/JsonRpcRequestBuilder.cs | 3 ++- .../Indexers/BroadcastheNet/BroadcastheNet.cs | 14 ++++++++++++- .../BroadcastheNetRequestGenerator.cs | 20 ++++++++++++------ src/NzbDrone.Core/Indexers/HttpIndexerBase.cs | 2 +- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/NzbDrone.Common/Http/HttpRequest.cs b/src/NzbDrone.Common/Http/HttpRequest.cs index bf2fe3568..405ba6dfd 100644 --- a/src/NzbDrone.Common/Http/HttpRequest.cs +++ b/src/NzbDrone.Common/Http/HttpRequest.cs @@ -44,14 +44,27 @@ public HttpRequest(string url, HttpAccept httpAccept = null) public override string ToString() { - if (ContentSummary == null) + return ToString(); + } + + public string ToString(bool includeMethod = true, bool includeSummary = true) + { + var builder = new StringBuilder(); + + if (includeMethod) { - return string.Format("Req: [{0}] {1}", Method, Url); + builder.AppendFormat("Req: [{0}] ", Method); } - else + + builder.Append(Url); + + if (includeSummary && ContentSummary.IsNotNullOrWhiteSpace()) { - return string.Format("Req: [{0}] {1}: {2}", Method, Url, ContentSummary); + builder.Append(": "); + builder.Append(ContentSummary); } + + return builder.ToString(); } public void SetContent(byte[] data) diff --git a/src/NzbDrone.Common/Http/JsonRpcRequestBuilder.cs b/src/NzbDrone.Common/Http/JsonRpcRequestBuilder.cs index f50e7d9a3..518ad7664 100644 --- a/src/NzbDrone.Common/Http/JsonRpcRequestBuilder.cs +++ b/src/NzbDrone.Common/Http/JsonRpcRequestBuilder.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; using NzbDrone.Common.Serializer; namespace NzbDrone.Common.Http @@ -86,7 +87,7 @@ private void ConvertParameter(object value, out object data, out string summary) else { data = value; - summary = data.ToJson(); + summary = JsonConvert.SerializeObject(data); } } diff --git a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNet.cs b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNet.cs index 9917c1d1d..95cd232fc 100644 --- a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNet.cs +++ b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNet.cs @@ -28,7 +28,19 @@ public BroadcastheNet(IHttpClient httpClient, IIndexerStatusService indexerStatu public override IIndexerRequestGenerator GetRequestGenerator() { - return new BroadcastheNetRequestGenerator() { Settings = Settings, PageSize = PageSize }; + var requestGenerator = new BroadcastheNetRequestGenerator() { Settings = Settings, PageSize = PageSize }; + + var releaseInfo = _indexerStatusService.GetLastRssSyncReleaseInfo(Definition.Id); + if (releaseInfo != null) + { + int torrentID; + if (int.TryParse(releaseInfo.Guid.Replace("BTN-", string.Empty), out torrentID)) + { + requestGenerator.LastRecentTorrentID = torrentID; + } + } + + return requestGenerator; } public override IParseIndexerResponse GetParser() diff --git a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs index fc87080b4..c2898f448 100644 --- a/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/BroadcastheNet/BroadcastheNetRequestGenerator.cs @@ -13,6 +13,8 @@ public class BroadcastheNetRequestGenerator : IIndexerRequestGenerator public int PageSize { get; set; } public BroadcastheNetSettings Settings { get; set; } + public int? LastRecentTorrentID { get; set; } + public BroadcastheNetRequestGenerator() { MaxPages = 10; @@ -23,7 +25,18 @@ public virtual IndexerPageableRequestChain GetRecentRequests() { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests(MaxPages, null)); + var parameters = new BroadcastheNetTorrentQuery(); + + if (LastRecentTorrentID.HasValue) + { + parameters.Id = ">=" + (LastRecentTorrentID.Value - 100); + } + else + { + parameters.Age = "<=86400"; + } + + pageableRequests.Add(GetPagedRequests(MaxPages, parameters)); return pageableRequests; } @@ -167,11 +180,6 @@ private bool AddSeriesSearchParameters(BroadcastheNetTorrentQuery parameters, Se private IEnumerable GetPagedRequests(int maxPages, BroadcastheNetTorrentQuery parameters) { - if (parameters == null) - { - parameters = new BroadcastheNetTorrentQuery(); - } - var builder = new JsonRpcRequestBuilder(Settings.BaseUrl) .Call("getTorrents", Settings.ApiKey, parameters, PageSize, 0); builder.SuppressHttpError = true; diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs index bae5dfbdd..6eb8c3b92 100644 --- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs @@ -275,7 +275,7 @@ protected virtual IList FetchPage(IndexerRequest request, IParseInd protected virtual IndexerResponse FetchIndexerResponse(IndexerRequest request) { - _logger.Debug("Downloading Feed " + request.Url); + _logger.Debug("Downloading Feed " + request.HttpRequest.ToString(false)); if (request.HttpRequest.RateLimit < RateLimit) {