Beispiel #1
0
        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!" );
            }
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
 public VideoProcessor( SubtitleArguments args )
 {
     _args = args;
 }
Beispiel #4
0
        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;
        }