diff --git a/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs b/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs index edcd34442..62d89ee47 100644 --- a/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs +++ b/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs @@ -165,8 +165,10 @@ private List Dispatch(Func> private List DeDupeDecisions(List decisions) { - // De-dupe reports by guid so duplicate results aren't returned. Pick the one with the least rejections. - return decisions.GroupBy(d => d.RemoteBook.Release.Guid).Select(d => d.OrderBy(v => v.Rejections.Count()).First()).ToList(); + // De-dupe reports by guid so duplicate results aren't returned. Pick the one with the least rejections and higher indexer priority. + return decisions.GroupBy(d => d.RemoteBook.Release.Guid) + .Select(d => d.OrderBy(v => v.Rejections.Count()).ThenBy(v => v.RemoteBook?.Release?.IndexerPriority ?? IndexerDefinition.DefaultPriority).First()) + .ToList(); } } } diff --git a/src/NzbDrone.Core/Indexers/IndexerDefinition.cs b/src/NzbDrone.Core/Indexers/IndexerDefinition.cs index a6ed69130..50bea595b 100644 --- a/src/NzbDrone.Core/Indexers/IndexerDefinition.cs +++ b/src/NzbDrone.Core/Indexers/IndexerDefinition.cs @@ -4,6 +4,13 @@ namespace NzbDrone.Core.Indexers { public class IndexerDefinition : ProviderDefinition { + public const int DefaultPriority = 25; + + public IndexerDefinition() + { + Priority = DefaultPriority; + } + public bool EnableRss { get; set; } public bool EnableAutomaticSearch { get; set; } public bool EnableInteractiveSearch { get; set; } @@ -11,7 +18,7 @@ public class IndexerDefinition : ProviderDefinition public DownloadProtocol Protocol { get; set; } public bool SupportsRss { get; set; } public bool SupportsSearch { get; set; } - public int Priority { get; set; } = 25; + public int Priority { get; set; } public override bool Enable => EnableRss || EnableAutomaticSearch || EnableInteractiveSearch;