1
0
Fork 0
mirror of https://github.com/lidarr/Lidarr synced 2024-12-21 23:32:27 +00:00

Fixed: Artists without tags bypassing tags on Download Client

(cherry picked from commit c0e264cfc520ee387bfc882c95a5822c655e0d9b)

Fix typo about download clients comment

(cherry picked from commit c39fb4fe6f0ed5e1dc2aa33f4455a4d0c760063b)

Closes #5309
Closes #5318
This commit is contained in:
Mark McDowall 2024-12-10 19:22:58 -08:00 committed by Bogdan
parent 41612708ff
commit fd1719e58c

View file

@ -38,6 +38,10 @@ public DownloadClientProvider(IDownloadClientStatusService downloadClientStatusS
public IDownloadClient GetDownloadClient(DownloadProtocol downloadProtocol, int indexerId = 0, bool filterBlockedClients = false, HashSet<int> tags = null)
{
// Tags aren't required, but download clients with tags should not be picked unless there is at least one matching tag.
// Defaulting to an empty HashSet ensures this is always checked.
tags ??= new HashSet<int>();
var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList();
@ -46,18 +50,15 @@ public IDownloadClient GetDownloadClient(DownloadProtocol downloadProtocol, int
return null;
}
if (tags is { Count: > 0 })
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
availableProviders = matchingTagsClients.Count > 0 ?
matchingTagsClients :
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
if (!availableProviders.Any())
{
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
availableProviders = matchingTagsClients.Count > 0 ?
matchingTagsClients :
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
if (!availableProviders.Any())
{
throw new DownloadClientUnavailableException("No download client was found without tags or a matching artist tag. Please check your settings.");
}
throw new DownloadClientUnavailableException("No download client was found without tags or a matching artist tag. Please check your settings.");
}
if (indexerId > 0)