Ejemplo n.º 1
0
        private List <ImportResult> ProcessPath(DownloadedMoviesScanCommand message)
        {
            if (!_diskProvider.FolderExists(message.Path) && !_diskProvider.FileExists(message.Path))
            {
                _logger.Warn("Folder/File specified for import scan [{0}] doesn't exist.", message.Path);
                return(new List <ImportResult>());
            }

            if (message.DownloadClientId.IsNotNullOrWhiteSpace())
            {
                var trackedDownload = _trackedDownloadService.Find(message.DownloadClientId);

                if (trackedDownload != null)
                {
                    _logger.Debug("External directory scan request for known download {0}. [{1}]", message.DownloadClientId, message.Path);

                    return(_downloadedMovieImportService.ProcessPath(message.Path, message.ImportMode, trackedDownload.RemoteMovie.Movie, trackedDownload.DownloadItem));
                }
                else
                {
                    _logger.Warn("External directory scan request for unknown download {0}, attempting normal import. [{1}]", message.DownloadClientId, message.Path);

                    return(_downloadedMovieImportService.ProcessPath(message.Path, message.ImportMode));
                }
            }

            return(_downloadedMovieImportService.ProcessPath(message.Path, message.ImportMode));
        }
Ejemplo n.º 2
0
        private void Import(TrackedDownload trackedDownload)
        {
            var outputPath    = trackedDownload.DownloadItem.OutputPath.FullPath;
            var importResults = _downloadedMovieImportService.ProcessPath(outputPath, ImportMode.Auto, trackedDownload.RemoteMovie.Movie, trackedDownload.DownloadItem);

            if (importResults.Empty())
            {
                trackedDownload.Warn("No files found are eligible for import in {0}", outputPath);
                return;
            }

            if (importResults.Count(c => c.Result == ImportResultType.Imported) >= 1)
            {
                trackedDownload.State = TrackedDownloadStage.Imported;
                _eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload));
                return;
            }

            if (importResults.Any(c => c.Result != ImportResultType.Imported))
            {
                var statusMessages = importResults
                                     .Where(v => v.Result != ImportResultType.Imported)
                                     .Select(v =>
                {
                    if (v.ImportDecision.LocalMovie == null)
                    {
                        return(new TrackedDownloadStatusMessage("", v.Errors));
                    }
                    return(new TrackedDownloadStatusMessage(Path.GetFileName(v.ImportDecision.LocalMovie.Path), v.Errors));
                })
                                     .ToArray();

                trackedDownload.Warn(statusMessages);
            }
        }
Ejemplo n.º 3
0
        public void Import(TrackedDownload trackedDownload)
        {
            SetImportItem(trackedDownload);

            if (!ValidatePath(trackedDownload))
            {
                return;
            }

            trackedDownload.State = TrackedDownloadState.Importing;

            var outputPath = trackedDownload.ImportItem.OutputPath.FullPath;

            if (trackedDownload.RemoteMovie?.Movie == null)
            {
                trackedDownload.State = TrackedDownloadState.ImportPending;
                trackedDownload.Warn("Unknown Movie", outputPath);
                return;
            }

            var importResults = _downloadedMovieImportService.ProcessPath(outputPath, ImportMode.Auto, trackedDownload.RemoteMovie.Movie, trackedDownload.DownloadItem);

            if (VerifyImport(trackedDownload, importResults))
            {
                return;
            }

            trackedDownload.State = TrackedDownloadState.ImportPending;

            if (importResults.Empty())
            {
                trackedDownload.Warn("No files found are eligible for import in {0}", outputPath);
            }

            if (importResults.Any(c => c.Result != ImportResultType.Imported))
            {
                var statusMessages = importResults
                                     .Where(v => v.Result != ImportResultType.Imported && v.ImportDecision.LocalMovie != null)
                                     .Select(v => new TrackedDownloadStatusMessage(Path.GetFileName(v.ImportDecision.LocalMovie.Path), v.Errors))
                                     .ToArray();

                trackedDownload.Warn(statusMessages);
            }
        }