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()); }
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()); }
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))); } }