public (List <FileInformationModel> SuccessFiles, List <FileInformationModel> FailedFiles) ExtractMetaInfoFromMediaTitle(List <FileInformationModel> files) { var failedFiles = new List <FileInformationModel>(); var successFiles = new List <FileInformationModel>(); //foreach (var file in files) //{ // file.MediaInformation = new MediaFileModel(); // MatchCollection matches = rx.Matches(file.Filename); // foreach (Match match in matches) // { // file.MediaInformation.Name = match.Groups[1].ToString().Trim(); // file.MediaInformation.Season = match.Groups[2].ToString().Trim(); // file.MediaInformation.Episode = match.Groups[3].ToString().Trim(); // file.MediaInformation.TheRest = match.Groups[4].ToString().Trim(); // //Console.WriteLine("Name: {0}, Season: {1}, Ep: {2}, Stuff: {3}\n", // // match.Groups[1].ToString().Trim(), match.Groups[2], // // match.Groups[3], match.Groups[4].ToString().Trim()); // } // if (String.IsNullOrEmpty(file.MediaInformation.Name)) // { // failedFiles.Add(file); // } // else // { // successFiles.Add(file); // } //} var(ParsedFiles1, FailedFiles1) = CheckIsFilePersonal(files); successFiles.AddRange(ParsedFiles1); (ParsedFiles1, FailedFiles1) = BruteForceMetaInformationFromMediaTitle(files); successFiles.AddRange(ParsedFiles1); (ParsedFiles1, FailedFiles1) = ExtractMovieMetaInformation(FailedFiles1); successFiles.AddRange(ParsedFiles1); (ParsedFiles1, FailedFiles1) = BruteForceMovieMetaInformation(FailedFiles1); successFiles.AddRange(ParsedFiles1); Console.WriteLine("Managed to parse {0}/{1} files. {2} Files could not be parsed", successFiles.Count, files.Count, FailedFiles1.Count); Console.WriteLine("Logging failed files to FailedFiles.txt"); writeService.WriteFilenamesToFile(FailedFiles1, "FailedFiles.txt"); return(successFiles, FailedFiles1); }
public void OrganiseCopyMediaFiles(string input) { var videos = FindVideo(input); videos = readService.ExtractMetaInfoFromMediaTitle(videos).SuccessFiles; videos = programInterfaceService.UserManualFixFiles(videos); var movies = videos.Where(x => x.MediaInformation.IsMovie == true).ToList(); videos.RemoveAll(x => x.MediaInformation.IsMovie == true); var personal = videos.Where(x => x.MediaInformation.IsPersonal == true).ToList(); videos.RemoveAll(x => x.MediaInformation.IsPersonal == true); List <SeriesFileStructureModel> seriesFileStructures = new List <SeriesFileStructureModel>(); List <FileInformationModel> unknownFiles = new List <FileInformationModel>(); foreach (var video in videos) { if (seriesFileStructures.Count > 0) { try { if (!seriesFileStructures.Any(x => x.SeriesName.Equals(video.MediaInformation.Name))) { SeriesFileStructureModel seriesFileStructure = new SeriesFileStructureModel(); seriesFileStructure.Seasons = new List <string>(); seriesFileStructure.Seasons.Add(video.MediaInformation.Season); seriesFileStructure.SeriesName = video.MediaInformation.Name; seriesFileStructures.Add(seriesFileStructure); } else { if (!seriesFileStructures.Where(x => x.SeriesName.Equals(video.MediaInformation.Name)).Any(x => x.Seasons.Any(o => o.Equals(video.MediaInformation.Season)))) { int index = seriesFileStructures.FindIndex(x => x.SeriesName.Equals(video.MediaInformation.Name)); seriesFileStructures[index].Seasons.Add(video.MediaInformation.Season); } } } catch (Exception) { unknownFiles.Add(video); } } else { SeriesFileStructureModel seriesFileStructure = new SeriesFileStructureModel(); seriesFileStructure.Seasons = new List <string>(); seriesFileStructure.Seasons.Add(video.MediaInformation.Season); seriesFileStructure.SeriesName = video.MediaInformation.Name; seriesFileStructures.Add(seriesFileStructure); } } if (unknownFiles.Count > 0) { Console.WriteLine("Found {0} unknown files", unknownFiles.Count); Console.WriteLine("Writing unkown files to disk..."); var writeSuccess = writeService.WriteFilenamesToFile(unknownFiles); if (writeSuccess) { Console.WriteLine("Write Successful"); } else { Console.WriteLine("Write Failed"); } } var allVideos = new List <FileInformationModel>(); allVideos.AddRange(videos); allVideos.AddRange(movies); allVideos.AddRange(personal); Console.WriteLine("Found {0} movies", movies.Count()); foreach (var item in movies) { Console.WriteLine("{0} ({1})", item.MediaInformation.Name, item.MediaInformation.Year); } Console.WriteLine("Found {0} personal files", personal.Count()); foreach (var series in seriesFileStructures) { Console.WriteLine("{0}. {1} Seasons", series.SeriesName, series.Seasons.Count); } Console.WriteLine("Would you like to copy these series/movies?"); var uInput = Console.ReadLine(); if (uInput.Contains('y') || uInput.Contains('Y')) { writeService.CopyMediaFiles(seriesFileStructures, allVideos.Where(x => !string.IsNullOrEmpty(x.MediaInformation.Name)).ToList()); } Console.WriteLine("Could not read {0} files", unknownFiles.Count); Console.ReadLine(); }