mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-04-24 05:47:22 -04:00
Fixed: (Search) Releases deduplication
This commit is contained in:
parent
d4b037db78
commit
9625be723d
1 changed files with 23 additions and 5 deletions
|
@ -67,7 +67,9 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
searchSpec.Year = request.year;
|
||||
searchSpec.Genre = request.genre;
|
||||
|
||||
return new NewznabResults { Releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
var releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||
|
||||
return new NewznabResults { Releases = DeDupeReleases(releases) };
|
||||
}
|
||||
|
||||
private async Task<NewznabResults> MusicSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
|
@ -81,7 +83,9 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
searchSpec.Track = request.track;
|
||||
searchSpec.Year = request.year;
|
||||
|
||||
return new NewznabResults { Releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
var releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||
|
||||
return new NewznabResults { Releases = DeDupeReleases(releases) };
|
||||
}
|
||||
|
||||
private async Task<NewznabResults> TvSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
|
@ -102,7 +106,9 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
searchSpec.Year = request.year;
|
||||
searchSpec.Genre = request.genre;
|
||||
|
||||
return new NewznabResults { Releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
var releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||
|
||||
return new NewznabResults { Releases = DeDupeReleases(releases) };
|
||||
}
|
||||
|
||||
private async Task<NewznabResults> BookSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
|
@ -115,14 +121,18 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
searchSpec.Year = request.year;
|
||||
searchSpec.Genre = request.genre;
|
||||
|
||||
return new NewznabResults { Releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
var releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||
|
||||
return new NewznabResults { Releases = DeDupeReleases(releases) };
|
||||
}
|
||||
|
||||
private async Task<NewznabResults> BasicSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
{
|
||||
var searchSpec = Get<BasicSearchCriteria>(request, indexerIds, interactiveSearch);
|
||||
|
||||
return new NewznabResults { Releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
var releases = await Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||
|
||||
return new NewznabResults { Releases = DeDupeReleases(releases) };
|
||||
}
|
||||
|
||||
private TSpec Get<TSpec>(NewznabRequest query, List<int> indexerIds, bool interactiveSearch)
|
||||
|
@ -265,5 +275,13 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
|
||||
return Array.Empty<ReleaseInfo>();
|
||||
}
|
||||
|
||||
private List<ReleaseInfo> DeDupeReleases(IList<ReleaseInfo> releases)
|
||||
{
|
||||
// De-dupe reports by guid so duplicate results aren't returned. Pick the one with the higher indexer priority.
|
||||
return releases.GroupBy(r => r.Guid)
|
||||
.Select(r => r.OrderBy(v => v.IndexerPriority).First())
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue