Beispiel #1
0
        public static void ReplaceCaptions(CaptionModifierFile modifier, string captionFile)
        {
            var compiledCaptions = new ValveResourceFormat.ClosedCaptions.ClosedCaptions();

            compiledCaptions.Read(captionFile);

            var captionCompiler = new ClosedCaptions();

            captionCompiler.Version = compiledCaptions.Version;
            foreach (var caption in compiledCaptions)
            {
                captionCompiler.Add(caption.Hash, caption.Text);
            }
            Console.WriteLine($"Successfully read {captionCompiler.Captions.Count} compiled captions.\n");

            var result = modifier.ModifyCaptions(captionCompiler);

            Console.WriteLine($"Made the following modifications:\n" +
                              $"{result.deleteCount} deletions.\n" +
                              $"{result.replaceCount} replacements.\n" +
                              $"{result.additionCount} additions.");

#pragma warning disable CS8604 // Possible null reference argument.
            //var outputPath = Path.Combine(Path.GetDirectoryName(captionFile), $"{Path.GetFileNameWithoutExtension(captionFile)}_new{Path.GetExtension(captionFile)}");
            var outputPath = Path.Combine(Directory.GetCurrentDirectory(), $"closecaption_{modifier.FileName}.dat");
#pragma warning restore CS8604 // Possible null reference argument.

            WriteCaptionFile(captionCompiler, outputPath);
        }
Beispiel #2
0
        public static void CustomCaptionFile(CaptionModifierFile modifier)
        {
            var customCaptions = new ClosedCaptions();

            modifier.AddAllToClosedCaptions(customCaptions);

            Console.WriteLine($"Added {modifier.Rules.Count} captions.\n");

            var outputPath = Path.Combine(Directory.GetCurrentDirectory(), $"closecaption_{modifier.FileName}.dat");

            WriteCaptionFile(customCaptions, outputPath);
        }
Beispiel #3
0
        static bool ParseArgs(string[] args)
        {
            /*
             *  -c  Custom file input
             *  -r  Replacement/removal file input
             *
             *  -p  Wait for input after finishing
             */

            if (args.Length == 0)
            {
                PrintHelp();
                PauseOnCompletion = true;
                return(false);
            }

            string captionFile = "";
            string modifyFile  = "";

            foreach (var arg in args)
            {
                if (arg == "-p")
                {
                    PauseOnCompletion = true;
                    Console.Write("[Pause on completion]");
                }
                else if (Path.GetExtension(arg) == ".dat")
                {
                    captionFile = arg;
                }
                else if (Path.GetExtension(arg) == ".txt")
                {
                    modifyFile = arg;
                }

                else
                {
                    Console.Write($"\n!! Unknown argument {arg}");
                    return(false);
                }
            }

            /*if (true)
             * {
             *  AddTestToAll(captionFile);
             *  return false;
             * }*/

            if (modifyFile == "" && captionFile == "")
            {
                PrintHelp();
                PauseOnCompletion = true;
                return(false);
            }

            // Cloning compiled captions and displaying
            if (modifyFile == "")
            {
                if (!File.Exists(captionFile))
                {
                    Console.WriteLine("\n!! Caption file provided does not exist.");
                    Console.WriteLine(captionFile);
                    return(false);
                }
                CloneCaptionFile(captionFile);
                PauseOnCompletion = true;
                return(true);
            }

            // Loading the modifier file
            if (!File.Exists(modifyFile))
            {
                Console.WriteLine("\n!! Modifier file provided does not exist.");
                Console.WriteLine(modifyFile);
                return(false);
            }
            var modifier = new CaptionModifierFile();
            int invalids = modifier.Read(modifyFile);

            if (invalids > 0)
            {
                Console.WriteLine($"Modifier file has {modifier.Rules.Count} rule(s) and {invalids} invalid lines.");
            }
            else
            {
                Console.WriteLine($"Modifier file has {modifier.Rules.Count} rule(s).");
            }

            if (modifier.Rules.Count == 0)
            {
                return(false);
            }

            Console.WriteLine("\n");

            // New custom caption file mode
            if (captionFile == "")
            {
                Console.WriteLine("[Custom Caption Mode]");
                CustomCaptionFile(modifier);
                return(true);
            }

            // Replacing and adding captions to a compiled file
            if (!File.Exists(captionFile))
            {
                Console.WriteLine("!! Caption file provided does not exist.");
                Console.WriteLine(captionFile);
                return(false);
            }

            Console.WriteLine("[Caption Replacement Mode]");
            ReplaceCaptions(modifier, captionFile);

            return(true);
        }