Пример #1
0
        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);
        }