mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Remote-Search: Allow result aggregation of multiple providers
Previously, when a remote search (without provider restriction) was executed, the search used results from the first provider that returned at least a single result only. Other providers are ignored. This commit changes the behaviour in a way that all available providers are queried until a certain number of search results has been collected. The number is hardcoded to 10 (like it was before), but could be parametrized in the future.
This commit is contained in:
parent
9f1a8d1dc3
commit
57fd2ed0f8
@ -727,6 +727,8 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
where TItemType : BaseItem, new()
|
where TItemType : BaseItem, new()
|
||||||
where TLookupType : ItemLookupInfo
|
where TLookupType : ItemLookupInfo
|
||||||
{
|
{
|
||||||
|
const int maxResults = 10;
|
||||||
|
|
||||||
// Give it a dummy path just so that it looks like a file system item
|
// Give it a dummy path just so that it looks like a file system item
|
||||||
var dummy = new TItemType
|
var dummy = new TItemType
|
||||||
{
|
{
|
||||||
@ -755,6 +757,8 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
searchInfo.SearchInfo.MetadataCountryCode = ConfigurationManager.Configuration.MetadataCountryCode;
|
searchInfo.SearchInfo.MetadataCountryCode = ConfigurationManager.Configuration.MetadataCountryCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var resultList = new List<RemoteSearchResult>();
|
||||||
|
|
||||||
foreach (var provider in providers)
|
foreach (var provider in providers)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -765,7 +769,12 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
|
|
||||||
if (list.Count > 0)
|
if (list.Count > 0)
|
||||||
{
|
{
|
||||||
return list.Take(10);
|
resultList.AddRange(list.Take(maxResults - resultList.Count));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resultList.Count >= maxResults)
|
||||||
|
{
|
||||||
|
return resultList;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -774,8 +783,7 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nothing found
|
return resultList;
|
||||||
return new List<RemoteSearchResult>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IEnumerable<RemoteSearchResult>> GetSearchResults<TLookupType>(IRemoteSearchProvider<TLookupType> provider, TLookupType searchInfo,
|
private async Task<IEnumerable<RemoteSearchResult>> GetSearchResults<TLookupType>(IRemoteSearchProvider<TLookupType> provider, TLookupType searchInfo,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user