public IFolderDiff Build(ISyncPair syncPair) { IsNotNull(syncPair); var diffInfo = _diffInfoBuilder.BuildInfo(syncPair); diffInfo.Destination.EnsureExists(); if (!diffInfo.Source.Exists) { throw new NodeNotFoundException(); } _fileScanner.FileFound += _fileScanner_SourceFileFound; var sourceScan = _fileScanner.Scan(diffInfo.Source); _fileScanner.FileFound -= _fileScanner_SourceFileFound; _fileScanner.FileFound += _fileScanner_DestinationFileFound; var destinationScan = _fileScanner.Scan(diffInfo.Destination); _fileScanner.FileFound -= _fileScanner_DestinationFileFound; return(_folderDiffer.BuildDiff(sourceScan, destinationScan)); }
public static void DetectFile(string filePath, string projectFileName) { var builder = new ContainerBuilder(); builder.RegisterModule(new FrameworkModule()); builder.RegisterModule(new DataContractSerializerModule()); using (var container = builder.Build()) { string detectorPath = ConfigurationManager.AppSettings.Get("Defraser.DetectorPath") ?? AppDomain.CurrentDomain.BaseDirectory; IDetectorFactory detectorFactory = container.Resolve <IDetectorFactory>(); detectorFactory.Initialize(detectorPath); File.Delete(projectFileName); ProjectManager projectManager = container.Resolve <ProjectManager>(); IProject project = projectManager.CreateProject(projectFileName, "Console", DateTime.Now, "Batch process"); IInputFile inputFile = project.AddFile(filePath, detectorFactory.ContainerDetectors.Union(detectorFactory.CodecDetectors)); IFileScanner fileScanner = container.Resolve <IFileScanner>(); fileScanner.ContainerDetectors = detectorFactory.ContainerDetectors; fileScanner.CodecDetectors = detectorFactory.CodecDetectors; fileScanner.DataBlockDetected += (s, e) => project.AddDataBlock(e.DataBlock); fileScanner.Scan(inputFile, container.Resolve <IProgressReporter>()); projectManager.SaveProject(project); projectManager.CloseProject(project); } }
private void ScanFiles(IEnumerable <string> inputFiles, IProject project) { long totalBytesToScan = inputFiles.Sum(x => new FileInfo(x).Length); long bytesScanned = 0L; foreach (string filePath in inputFiles) { if (CancellationPending) { break; } try { DateTime scanStartTime = DateTime.Now; AddFileToProject(project, filePath, Detectors); _dataBlockScanner.ClearCache(); _fileScanner.Scan(CurrentFile, _createSubProgressReporter(this, bytesScanned, CurrentFile.Length, totalBytesToScan)); bytesScanned += CurrentFile.Length; project.SetScanDuration(CurrentFile, DateTime.Now - scanStartTime); } catch (FileNotFoundException) { } } }
public IEnumerable <ITemplate> FindInHost() { var templates = new List <ITemplate>(); var root = new SparkRoot { Origin = FubuSparkConstants.HostOrigin, Path = HostPath }; var request = buildRequest(templates, root); _hostExcludes.Do(request); _fileScanner.Scan(request); return(templates); }
public int Scan(MovideoSettings settings) { var count = 0; var index = 0; var files = _fileScanner.Scan().ToArray(); var totalItems = files.Length; foreach (var file in files) { index++; OnProgressChanged(index, totalItems); var item = _analyzer.Analyze(file); if (!item.IsKnown) { float accuracy; var res = TryIdentify(item, out accuracy); if (res != null) { var args = new MatchFoundEventArgs(item, res, accuracy); OnMatchFound(args); if (args.Cancel) { break; } if (args.IsMatch == true) { DoRename(args, settings); UpdateItem(item, res); count++; } } } else { float accuracy; var movieId = _db.GetMovieIdFor(item); var movie = _db.GetMovie(movieId.Value); item.Title = movie.Title; item.Year = movie.Year; var res = TryIdentify(item, out accuracy); var args = new MatchFoundEventArgs(item, res, 1); DoRename(args, settings); } } return(count); }
internal static IInputFile DetectData(IList <IDetector> containerDetectors, IList <IDetector> codecDetectors, IProject project, string fileName) { IFileScanner fileScanner = _container.Resolve <IFileScanner>(); fileScanner.ContainerDetectors = containerDetectors; fileScanner.CodecDetectors = codecDetectors; fileScanner.DataBlockDetected += (s, e) => project.AddDataBlock(e.DataBlock); List <IDetector> detectors = new List <IDetector>(); detectors.AddRange(containerDetectors); detectors.AddRange(codecDetectors); IInputFile inputFile = project.AddFile(fileName, detectors); fileScanner.Scan(inputFile, new NullProgressReporter()); return(inputFile); }