From c21e323992bbf00b088d9719a02423b225d44d49 Mon Sep 17 00:00:00 2001 From: bakerboy448 <55419169+bakerboy448@users.noreply.github.com> Date: Fri, 27 Aug 2021 19:18:34 -0500 Subject: [PATCH] New: Improved Logging of Search for ID based searches --- .../Definitions/MovieSearchCriteria.cs | 38 ++++++++++++++++ .../Definitions/SearchCriteriaBase.cs | 10 ++++- .../Definitions/TvSearchCriteria.cs | 45 +++++++++++++++++++ .../IndexerSearch/NzbSearchService.cs | 4 +- 4 files changed, 94 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core/IndexerSearch/Definitions/MovieSearchCriteria.cs b/src/NzbDrone.Core/IndexerSearch/Definitions/MovieSearchCriteria.cs index 82b636775..73b688427 100644 --- a/src/NzbDrone.Core/IndexerSearch/Definitions/MovieSearchCriteria.cs +++ b/src/NzbDrone.Core/IndexerSearch/Definitions/MovieSearchCriteria.cs @@ -1,3 +1,4 @@ +using System.Text; using NzbDrone.Common.Extensions; using NzbDrone.Core.Parser; @@ -23,5 +24,42 @@ namespace NzbDrone.Core.IndexerSearch.Definitions } public string FullImdbId => ParseUtil.GetFullImdbId(ImdbId); + + public override string SearchQuery + { + get + { + var searchQueryTerm = $"Term: []"; + if (SearchTerm.IsNotNullOrWhiteSpace()) + { + searchQueryTerm = $"Term: [{SearchTerm}]"; + } + + if (!ImdbId.IsNotNullOrWhiteSpace() && !TmdbId.HasValue && !TraktId.HasValue) + { + return searchQueryTerm; + } + + var builder = new StringBuilder(searchQueryTerm); + builder = builder.Append(" | ID(s):"); + + if (ImdbId.IsNotNullOrWhiteSpace()) + { + builder = builder.Append($" IMDbId:[{ImdbId}]"); + } + + if (TmdbId.HasValue) + { + builder = builder.Append($" TMDbId:[{TmdbId}]"); + } + + if (TraktId.HasValue) + { + builder = builder.Append($" TraktId:[{TraktId}]"); + } + + return builder.ToString().Trim(); + } + } } } diff --git a/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs b/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs index 49e4060db..3b4d86e42 100644 --- a/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs +++ b/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs @@ -21,9 +21,17 @@ namespace NzbDrone.Core.IndexerSearch.Definitions public string Source { get; set; } public string Host { get; set; } + public virtual string SearchQuery + { + get + { + return $"Term: [{SearchTerm}]"; + } + } + public override string ToString() { - return $"{{Term: {SearchTerm}, Offset: {Offset ?? 0}, Limit: {Limit ?? 0}, Categories: [{string.Join(", ", Categories)}]}}"; + return $"{SearchQuery}, Offset: {Offset ?? 0}, Limit: {Limit ?? 0}, Categories: [{string.Join(", ", Categories)}]"; } public virtual bool RssSearch diff --git a/src/NzbDrone.Core/IndexerSearch/Definitions/TvSearchCriteria.cs b/src/NzbDrone.Core/IndexerSearch/Definitions/TvSearchCriteria.cs index 5a50335dc..a52361fb6 100644 --- a/src/NzbDrone.Core/IndexerSearch/Definitions/TvSearchCriteria.cs +++ b/src/NzbDrone.Core/IndexerSearch/Definitions/TvSearchCriteria.cs @@ -1,5 +1,6 @@ using System; using System.Globalization; +using System.Text; using NzbDrone.Common.Extensions; using NzbDrone.Core.Parser; @@ -34,6 +35,50 @@ namespace NzbDrone.Core.IndexerSearch.Definitions } } + public override string SearchQuery + { + get + { + var searchQueryTerm = $"Term: []"; + var searchEpisodeTerm = $" for Season / Episode:[{EpisodeSearchString}]"; + if (SearchTerm.IsNotNullOrWhiteSpace()) + { + searchQueryTerm = $"Term: [{SearchTerm}]"; + } + + if (!ImdbId.IsNotNullOrWhiteSpace() && !TvdbId.HasValue && !RId.HasValue && !TraktId.HasValue) + { + return $"{searchQueryTerm}{searchEpisodeTerm}"; + } + + var builder = new StringBuilder(searchQueryTerm); + builder = builder.Append(" | ID(s):"); + + if (ImdbId.IsNotNullOrWhiteSpace()) + { + builder.Append($" IMDbId:[{ImdbId}]"); + } + + if (TvdbId.HasValue) + { + builder.Append($" TVDbId:[{TvdbId}]"); + } + + if (RId.HasValue) + { + builder.Append($" TVRageId:[{RId}]"); + } + + if (TraktId.HasValue) + { + builder.Append($" TraktId:[{TraktId}]"); + } + + builder = builder.Append(searchEpisodeTerm); + return builder.ToString().Trim(); + } + } + private string GetEpisodeSearchString() { if (Season == null || Season == 0) diff --git a/src/NzbDrone.Core/IndexerSearch/NzbSearchService.cs b/src/NzbDrone.Core/IndexerSearch/NzbSearchService.cs index 2aeb7cf4c..b1d3574a4 100644 --- a/src/NzbDrone.Core/IndexerSearch/NzbSearchService.cs +++ b/src/NzbDrone.Core/IndexerSearch/NzbSearchService.cs @@ -147,7 +147,7 @@ namespace NzbDrone.Core.IndexerSearch .ToList(); } - _logger.ProgressInfo("Searching indexers: [{0}] for {1}", string.Join(", ", indexers.Select(i => i.Definition.Name).ToList()), criteriaBase.ToString()); + _logger.ProgressInfo("Searching indexer(s): [{0}] for {1}", string.Join(", ", indexers.Select(i => i.Definition.Name).ToList()), criteriaBase.ToString()); var tasks = indexers.Select(x => DispatchIndexer(searchAction, x, criteriaBase)); @@ -155,7 +155,7 @@ namespace NzbDrone.Core.IndexerSearch var reports = batch.SelectMany(x => x).ToList(); - _logger.Debug("Total of {0} reports were found for {1} from {2} indexers", reports.Count, criteriaBase, indexers.Count); + _logger.Debug("Total of {0} reports were found for {1} from {2} indexer(s)", reports.Count, criteriaBase, indexers.Count); return reports; }