public List <ManualImportItem> GetMediaFiles(string path, string downloadId, int?seriesId, bool filterExistingFiles) { if (downloadId.IsNotNullOrWhiteSpace()) { var trackedDownload = _trackedDownloadService.Find(downloadId); if (trackedDownload == null) { return(new List <ManualImportItem>()); } path = trackedDownload.ImportItem.OutputPath.FullPath; } if (!_diskProvider.FolderExists(path)) { if (!_diskProvider.FileExists(path)) { return(new List <ManualImportItem>()); } var rootFolder = Path.GetDirectoryName(path); return(new List <ManualImportItem> { ProcessFile(rootFolder, rootFolder, path, downloadId) }); } return(ProcessFolder(path, path, downloadId, seriesId, filterExistingFiles)); }
public List <ManualImportItem> GetMediaFiles(string path, string downloadId) { if (downloadId.IsNotNullOrWhiteSpace()) { var trackedDownload = _trackedDownloadService.Find(downloadId); if (trackedDownload == null) { return(new List <ManualImportItem>()); } path = trackedDownload.DownloadItem.OutputPath.FullPath; } if (!_diskProvider.FolderExists(path)) { if (!_diskProvider.FileExists(path)) { return(new List <ManualImportItem>()); } return(new List <ManualImportItem> { ProcessFile(path, downloadId) }); } return(ProcessFolder(path, downloadId)); }
public List <ManualImportItem> GetMediaFiles(string path, string downloadId, FilterFilesType filter, bool replaceExistingFiles) { if (downloadId.IsNotNullOrWhiteSpace()) { var trackedDownload = _trackedDownloadService.Find(downloadId); if (trackedDownload == null) { return(new List <ManualImportItem>()); } path = trackedDownload.DownloadItem.OutputPath.FullPath; } if (!_diskProvider.FolderExists(path)) { if (!_diskProvider.FileExists(path)) { return(new List <ManualImportItem>()); } var decision = _importDecisionMaker.GetImportDecisions(new List <IFileInfo> { _diskProvider.GetFileInfo(path) }, null, null, null, null, null, FilterFilesType.None, true, false, !replaceExistingFiles); var result = MapItem(decision.First(), Path.GetDirectoryName(path), downloadId, replaceExistingFiles, false); return(new List <ManualImportItem> { result }); } return(ProcessFolder(path, downloadId, filter, replaceExistingFiles)); }
public List <ManualImportItem> GetMediaFiles(string path, string downloadId, Author author, FilterFilesType filter, bool replaceExistingFiles) { if (downloadId.IsNotNullOrWhiteSpace()) { var trackedDownload = _trackedDownloadService.Find(downloadId); if (trackedDownload == null) { return(new List <ManualImportItem>()); } if (trackedDownload.ImportItem == null) { trackedDownload.ImportItem = _provideImportItemService.ProvideImportItem(trackedDownload.DownloadItem, trackedDownload.ImportItem); } path = trackedDownload.ImportItem.OutputPath.FullPath; } if (!_diskProvider.FolderExists(path)) { if (!_diskProvider.FileExists(path)) { return(new List <ManualImportItem>()); } var files = new List <IFileInfo> { _diskProvider.GetFileInfo(path) }; var config = new ImportDecisionMakerConfig { Filter = FilterFilesType.None, NewDownload = true, SingleRelease = false, IncludeExisting = !replaceExistingFiles, AddNewAuthors = false, KeepAllEditions = true }; var decision = _importDecisionMaker.GetImportDecisions(files, null, null, config); var result = MapItem(decision.First(), downloadId, replaceExistingFiles, false); return(new List <ManualImportItem> { result }); } return(ProcessFolder(path, downloadId, author, filter, replaceExistingFiles)); }
private List <ImportResult> ProcessPath(DownloadedEpisodesScanCommand 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(_downloadedEpisodesImportService.ProcessPath(message.Path, trackedDownload.RemoteEpisode.Series, trackedDownload.DownloadItem)); } else { _logger.Warn("External directory scan request for unknown download {0}, attempting normal import. [{1}]", message.DownloadClientId, message.Path); return(_downloadedEpisodesImportService.ProcessPath(message.Path)); } } return(_downloadedEpisodesImportService.ProcessPath(message.Path)); }
private List <ImportResult> ProcessPath(DownloadedBooksScanCommand 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); var importResults = _downloadedTracksImportService.ProcessPath(message.Path, message.ImportMode, trackedDownload.RemoteBook.Author, trackedDownload.DownloadItem); _completedDownloadService.VerifyImport(trackedDownload, importResults); return(importResults); } _logger.Warn("External directory scan request for unknown download {0}, attempting normal import. [{1}]", message.DownloadClientId, message.Path); } return(_downloadedTracksImportService.ProcessPath(message.Path, message.ImportMode)); }
public void MarkAsFailed(string downloadId, bool skipReDownload = false) { var history = _historyService.Find(downloadId, EntityHistoryEventType.Grabbed); if (history.Any()) { var trackedDownload = _trackedDownloadService.Find(downloadId); PublishDownloadFailedEvent(history, "Manually marked as failed", trackedDownload, skipReDownload); } }
private TrackedDownload GetTrackedDownload(int queueId) { var queueItem = _queueService.Find(queueId); if (queueItem == null) { throw new NotFoundException(); } var trackedDownload = _trackedDownloadService.Find(queueItem.DownloadId); if (trackedDownload == null) { throw new NotFoundException(); } return(trackedDownload); }
public void Execute(ManualImportCommand message) { _logger.ProgressTrace("Manually importing {0} files using mode {1}", message.Files.Count, message.ImportMode); var imported = new List<ImportResult>(); var importedTrackedDownload = new List<ManuallyImportedFile>(); for (int i = 0; i < message.Files.Count; i++) { _logger.ProgressTrace("Processing file {0} of {1}", i + 1, message.Files.Count); var file = message.Files[i]; var movie = _movieService.GetMovie(file.MovieId); var fileMovieInfo = Parser.Parser.ParseMoviePath(file.Path) ?? new ParsedMovieInfo(); var existingFile = movie.Path.IsParentPath(file.Path); TrackedDownload trackedDownload = null; var localMovie = new LocalMovie { ExistingFile = false, FileMovieInfo = fileMovieInfo, Path = file.Path, Quality = file.Quality, Languages = file.Languages, Movie = movie, Size = 0 }; if (file.DownloadId.IsNotNullOrWhiteSpace()) { trackedDownload = _trackedDownloadService.Find(file.DownloadId); localMovie.DownloadClientMovieInfo = trackedDownload?.RemoteMovie?.ParsedMovieInfo; } if (file.FolderName.IsNotNullOrWhiteSpace()) { localMovie.FolderMovieInfo = Parser.Parser.ParseMovieTitle(file.FolderName); localMovie.SceneSource = !existingFile; } localMovie = _aggregationService.Augment(localMovie, trackedDownload?.DownloadItem, false); // Apply the user-chosen values. localMovie.Movie = movie; localMovie.Quality = file.Quality; localMovie.Languages = file.Languages; //TODO: Cleanup non-tracked downloads var importDecision = new ImportDecision(localMovie); if (trackedDownload == null) { imported.AddRange(_importApprovedMovie.Import(new List<ImportDecision> { importDecision }, !existingFile, null, message.ImportMode)); } else { var importResult = _importApprovedMovie.Import(new List<ImportDecision> { importDecision }, true, trackedDownload.DownloadItem, message.ImportMode).First(); imported.Add(importResult); importedTrackedDownload.Add(new ManuallyImportedFile { TrackedDownload = trackedDownload, ImportResult = importResult }); } } _logger.ProgressTrace("Manually imported {0} files", imported.Count); foreach (var groupedTrackedDownload in importedTrackedDownload.GroupBy(i => i.TrackedDownload.DownloadItem.DownloadId).ToList()) { var trackedDownload = groupedTrackedDownload.First().TrackedDownload; var importMovie = groupedTrackedDownload.First().ImportResult.ImportDecision.LocalMovie.Movie; var outputPath = trackedDownload.ImportItem.OutputPath.FullPath; if (_diskProvider.FolderExists(outputPath)) { if (_downloadedMovieImportService.ShouldDeleteFolder( new DirectoryInfo(outputPath), importMovie) && trackedDownload.DownloadItem.CanMoveFiles) { _diskProvider.DeleteFolder(outputPath, true); } } if (groupedTrackedDownload.Select(c => c.ImportResult).Any(c => c.Result == ImportResultType.Imported)) { trackedDownload.State = TrackedDownloadState.Imported; _eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload, importMovie.Id)); } } }