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); }
/// <inheritdoc /> public async Task ScanFileAsync(string filePath) { var analyzedFile = await _fileAnalyzer.Analyze(filePath); Movie movie; if (analyzedFile.IsKnown) { movie = _dal.GetMovieByImdbId(analyzedFile.ImdbId); Log.Debug("Use local movie information"); } else { movie = await IdentifyFile(analyzedFile); Log.Debug("Use remote movie information"); } // sync database _dal.RecordScanFile(analyzedFile, movie); }