コード例 #1
0
        public void Execute(ProcessMonitoredDownloadsCommand message)
        {
            var enableCompletedDownloadHandling = _configService.EnableCompletedDownloadHandling;
            var removeCompletedDownloads        = _configService.RemoveCompletedDownloads;
            var trackedDownloads = _trackedDownloadService.GetTrackedDownloads()
                                   .Where(t => t.IsTrackable)
                                   .ToList();

            foreach (var trackedDownload in trackedDownloads)
            {
                try
                {
                    if (trackedDownload.State == TrackedDownloadState.DownloadFailedPending)
                    {
                        _failedDownloadService.ProcessFailed(trackedDownload);
                    }
                    else if (enableCompletedDownloadHandling && trackedDownload.State == TrackedDownloadState.ImportPending)
                    {
                        _completedDownloadService.Import(trackedDownload);
                    }
                }
                catch (Exception e)
                {
                    _logger.Debug(e, "Failed to process download: {0}", trackedDownload.DownloadItem.Title);
                }
            }

            // Imported downloads are no longer trackable so process them after processing trackable downloads
            if (removeCompletedDownloads)
            {
                RemoveCompletedDownloads();
            }

            _eventAggregator.PublishEvent(new DownloadsProcessedEvent());
        }
コード例 #2
0
        public void Execute(ProcessMonitoredDownloadsCommand message)
        {
            var enableCompletedDownloadHandling = _configService.EnableCompletedDownloadHandling;
            var trackedDownloads = _trackedDownloadService.GetTrackedDownloads();

            foreach (var trackedDownload in trackedDownloads)
            {
                if (trackedDownload.State == TrackedDownloadState.DownloadFailedPending)
                {
                    _failedDownloadService.ProcessFailed(trackedDownload);
                }

                if (enableCompletedDownloadHandling && trackedDownload.State == TrackedDownloadState.ImportPending)
                {
                    _completedDownloadService.Import(trackedDownload);
                }
            }

            if (enableCompletedDownloadHandling && _configService.RemoveCompletedDownloads)
            {
                // Remove tracked downloads that are now complete
                RemoveCompletedDownloads(trackedDownloads);
            }

            _eventAggregator.PublishEvent(new DownloadsProcessedEvent());
        }
コード例 #3
0
        private List <ImportResult> ProcessFolder(DownloadedEpisodesScanCommand message)
        {
            if (!_diskProvider.FolderExists(message.Path))
            {
                _logger.Warn("Folder specified for import scan [{0}] doesn't exist.", message.Path);
                return(new List <ImportResult>());
            }

            if (message.DownloadClientId.IsNotNullOrWhiteSpace())
            {
                var trackedDownload = _downloadTrackingService.GetQueuedDownloads().Where(v => v.DownloadItem.DownloadClientId == message.DownloadClientId).FirstOrDefault();

                if (trackedDownload == null)
                {
                    _logger.Warn("External directory scan request for unknown download {0}, attempting normal import. [{1}]", message.DownloadClientId, message.Path);

                    return(_downloadedEpisodesImportService.ProcessFolder(new DirectoryInfo(message.Path)));
                }
                else
                {
                    return(_completedDownloadService.Import(trackedDownload, message.Path));
                }
            }
            else
            {
                return(_downloadedEpisodesImportService.ProcessFolder(new DirectoryInfo(message.Path)));
            }
        }