private List <UsenetRelease> GetReleasesToExcludeFromNzbget(List <UsenetRelease> releases) { // All releases found in queue must be excluded from releases list List <UsenetRelease> excludeReleases = new List <UsenetRelease>(); var queueEntries = nzbgetService.GetQueue(); if (queueEntries == null || queueEntries.Count == 0) { return(excludeReleases); } foreach (var queueEntry in queueEntries) { var videoFound = videoMatching.GetVideoByName(queueEntry.NzbName); if (videoFound != null) { var quality = videoQualityProdiver.GetByName(StringExtractor.ExtractQuality(queueEntry.NzbName)); if (quality == null) { logger.LogError("Quality not found for queue entry {nzbname}.", queueEntry.NzbName); continue; } var releasesFound = releases .Where(x => x.Video == videoFound.Id && x.VideoQuality.Id == quality.Id).ToList(); if (releasesFound != null && releasesFound.Any()) { excludeReleases.AddRange(releasesFound); } } } var historyEntries = nzbgetService.GetHistory(); if (historyEntries == null || historyEntries.Count == 0) { return(excludeReleases); } foreach (var historyEntry in historyEntries) { var videoFound = videoMatching.GetVideoByName(historyEntry.NzbName); if (videoFound != null) { var quality = videoQualityProdiver.GetByName(StringExtractor.ExtractQuality(historyEntry.NzbName)); if (quality == null) { logger.LogError("Quality not found for history entry {nzbname}.", historyEntry.NzbName); continue; } var releasesFound = releases .Where(x => x.Video == videoFound.Id && x.VideoQuality.Id == quality.Id).ToList(); if (releasesFound != null && releasesFound.Any()) { excludeReleases.AddRange(releasesFound); } } } return(excludeReleases); }