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); }
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); }
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); }