private void ProcessMovie(MovieConfiguration movie) { List <FileInfo> files = movie.Locations .Select(s => new DirectoryInfo(s)) .Where(info => info.Exists) .SelectMany(d => d.GetFiles()) .Where(f => f.IsMovieFile()) .Distinct() .ToList(); if (files.Count > 1) { DuplicateMovie duplicateMovie = new DuplicateMovie { Movie = movie, Files = files }; dupMovies.Add(duplicateMovie); duplicateMovie.IsSample = files.Any(f => f.IsSampleFile()); duplicateMovie.IsDeleted = files.Any(f => f.IsDeletedStubFile()); if (files.Count == 2) { duplicateMovie.IsDoublePart = FileHelper.IsDoublePartMovie(files[0], files[1]); } } }
private void Update(DuplicateMovie duplicate) { if (dupMovies.Contains(duplicate)) { dupMovies.Remove(duplicate); } ProcessMovie(duplicate.Movie); UpdateUI(); }
private void MergeItems(DuplicateMovie mlastSelected, UI ui) { foreach (var file1 in mlastSelected.Files) { foreach (FileInfo file2 in mlastSelected.Files) { if (string.CompareOrdinal(file1.FullName, file2.FullName) > 0) { MergeConfigurationAndFiles(mlastSelected.Movie, file1, file2, ui); } } } Update(mlastSelected); }
private void olvDuplicates_CellRightClick(object sender, BrightIdeasSoftware.CellRightClickEventArgs e) { if (e.Model is null) { return; } DuplicateMovie mlastSelected = (DuplicateMovie)e.Model; MovieConfiguration si = mlastSelected.Movie; possibleMergedEpisodeRightClickMenu.Items.Clear(); AddRcMenuItem("Force Refresh", (o, args) => { mainUi.ForceMovieRefresh(new List <MovieConfiguration> { si }, false); Update(mlastSelected); }); AddRcMenuItem("Update", (o, args) => { Update(mlastSelected); }); AddRcMenuItem("Edit Movie", (o, args) => { mainUi.EditMovie(si); Update(mlastSelected); }); AddRcMenuItem("Choose Best", (o, args) => MergeItems(mlastSelected, mainUi)); possibleMergedEpisodeRightClickMenu.Items.Add(new ToolStripSeparator()); foreach (FileInfo?f in mlastSelected.Files) { AddRcMenuItem("Visit " + f.FullName, (o, args) => { Helpers.OpenFolderSelectFile(f.FullName); Update(mlastSelected); }); } }
private void BwScan_DoWork(object sender, DoWorkEventArgs e) { var bw = (BackgroundWorker)sender; int total = mDoc.FilmLibrary.Movies.Count(); int current = 0; dupMovies.Clear(); foreach (var movie in mDoc.FilmLibrary.Movies) { var files = movie.Locations .Select(s => new DirectoryInfo(s)) .Where(info => info.Exists) .SelectMany(d => d.GetFiles()) .Where(f => f.IsMovieFile()) .Distinct() .ToList(); if (files.Count > 1) { DuplicateMovie duplicateMovie = new DuplicateMovie { Movie = movie, Files = files }; dupMovies.Add(duplicateMovie); duplicateMovie.IsSample = files.Any(f => f.IsSampleFile()); duplicateMovie.IsDeleted = files.Any(f => f.IsDeletedStubFile()); if (files.Count == 2) { duplicateMovie.IsDoublePart = FileHelper.IsDoublePartMovie(files[0], files[1]); } } bw.ReportProgress(100 * current++ / total, movie.ShowName); } }