コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }