private static void ProcessArguments( SubtitleArguments subWriterArguments ) { Console.WriteLine( $"Processing {subWriterArguments.Filenames.Count} file paths" ); Console.WriteLine( $"Writing chapter file to '{subWriterArguments.ChapterFileName}'" ); Console.WriteLine( $"Writing subtitle file to '{subWriterArguments.SubtitleFileName}'" ); if ( subWriterArguments.Scenalyzer ) { Console.WriteLine( "Using scenalyzer file format" ); } VideoProcessor subwriter = new VideoProcessor( subWriterArguments ); subwriter.Status += ConsoleWriteStatus; bool success = subwriter.Process(); subwriter.Status -= ConsoleWriteStatus; if ( success ) { Console.WriteLine( "process completed successfully!" ); } else { Console.WriteLine( "process was unsuccessful!" ); } }
public SubtitleArguments Parse() { var result = new SubtitleArguments(); if ( _args["h"] != null || _args["help"] != null ) { result.Action = SubtitleArguments.ActionType.Help; } else { result = ParseProcessArguments(); result.Action = SubtitleArguments.ActionType.Process; } return result; }
public VideoProcessor( SubtitleArguments args ) { _args = args; }
private SubtitleArguments ParseProcessArguments() { var result = new SubtitleArguments(); if ( _args["sfn"] != null ) { result.SubtitleFileName = (string)_args["sfn"]; } else { result.SubtitleFileName = "subtitle.srt"; } if ( _args["cfn"] != null ) { result.ChapterFileName = (string)_args["cfn"]; } else { result.ChapterFileName = "chapters.txt"; } string subArg = (string)_args["sub"]; if ( subArg != null ) { switch ( subArg.ToLower() ) { case "str": result.SubtitleWriterFactory = new SubtitleWriterFactory<SubripSubtitleWriter>(); break; case "sv": goto default; case "mdvd": goto default; case "stl": result.SubtitleWriterFactory = new SubtitleWriterFactory<SpruceSubtitleWriter>(); break; case "txt": result.SubtitleWriterFactory = new SubtitleWriterFactory<EncoreSubtitleFormat>(); break; default: throw new ArgumentException( $"'{subArg}' is not a supported subtitle format!", "sub" ); } } else { result.SubtitleWriterFactory = new SubtitleWriterFactory<SubripSubtitleWriter>(); } string framerateArg = (string)_args["fr"]; if ( framerateArg != null ) { switch ( framerateArg.ToLower() ) { case "ntsc": result.FrameRate = FrameRateType.Ntsc; break; case "pal": result.FrameRate = FrameRateType.Pal; break; default: double framerate; if ( Double.TryParse( framerateArg, out framerate ) ) { result.FrameRate = framerate; } else { throw new ArgumentException( $"'{framerateArg}' is not a supported frame rate", "fr" ); } break; } } else { result.FrameRate = FrameRateType.Ntsc; } string chapterFormatArg = (string)_args["chp"]; if ( chapterFormatArg != null ) { switch ( chapterFormatArg ) { case "ifo": result.ChapterWriterFactory = new ChapterWriterFactory<IfoChapterWriter>(); break; case "sm": result.ChapterWriterFactory = new ChapterWriterFactory<SpruceMaestroChapterWriter>(); break; default: throw new ArgumentException( $"'{chapterFormatArg}' is not a supported chapter format", "chp" ); } } else { result.ChapterWriterFactory = new ChapterWriterFactory<IfoChapterWriter>(); } if ( _args["spf"] != null ) { result.SubtitlePrefixFilename = (string)_args["spf"]; } else { result.SubtitlePrefixFilename = "auto"; } result.SubDuration = 10; string filesArg = (string)_args["F"]; if ( filesArg != null ) { result.Filenames = new List<string>( filesArg.Split( new Char[] { ',' } ) ); } else { throw new ArgumentException( "No files were specified!", "F" ); } result.Recursive = (_args["r"] != null); result.Scenalyzer = (_args["scenalyzer"] != null); result.IncludeDuplicates = (_args["id"] != null); result.Action = SubtitleArguments.ActionType.Process; return result; }