diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index a1f2b03f..053a35d7 100644 Binary files a/FileFlows.Plugin.dll and b/FileFlows.Plugin.dll differ diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 59dfa3df..857be8e8 100644 Binary files a/FileFlows.Plugin.pdb and b/FileFlows.Plugin.pdb differ diff --git a/VideoNodes/Tests/FfmpegBuilderTests/FFmpegBuilder_TrackRemoverTests.cs b/VideoNodes/Tests/FfmpegBuilderTests/FFmpegBuilder_TrackRemoverTests.cs new file mode 100644 index 00000000..52afec71 --- /dev/null +++ b/VideoNodes/Tests/FfmpegBuilderTests/FFmpegBuilder_TrackRemoverTests.cs @@ -0,0 +1,132 @@ +#if(DEBUG) + +using FileFlows.VideoNodes.FfmpegBuilderNodes; +using FileFlows.VideoNodes.FfmpegBuilderNodes.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using VideoNodes.Tests; + +namespace FileFlows.VideoNodes.Tests.FfmpegBuilderTests; + +[TestClass] +public class FFmpegBuilder_TrackRemoverTests : VideoTestBase +{ + VideoInfo vii; + NodeParameters args; + FfmpegModel Model; + + protected override void TestStarting() + { + args = GetVideoNodeParameters(); + VideoFile vf = new VideoFile(); + vf.PreExecute(args); + vf.Execute(args); + vii = (VideoInfo)args.Parameters["VideoInfo"]; + + FfmpegBuilderStart ffStart = new(); + ffStart.PreExecute(args); + Assert.AreEqual(1, ffStart.Execute(args)); + Model = ffStart.GetModel(); + } + + /// + /// Test German is matched and removed + /// + [TestMethod] + public void KeepEngAndOriginalSubtitles() + { + int originaluNonDeletedSubtitles = Model.SubtitleStreams.Count(x => x.Deleted == false); + FfmpegBuilderTrackRemover ffRemover = new(); + args.Variables["OriginalLanguage"] = "fre"; + ffRemover.CustomTrackSelection = true; + ffRemover.TrackSelectionOptions = new(); + ffRemover.TrackSelectionOptions.Add(new ("Language", "!/orig|eng/")); + ffRemover.StreamType = "Subtitle"; + ffRemover.PreExecute(args); + Assert.AreEqual(1, ffRemover.Execute(args)); + List nonDeletedSubtitles = new(); + + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted)) + { + Logger.ILog("Deleted subtitle: " + sub); + } + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted == false)) + { + Logger.ILog("Non deleted subtitle: " + sub); + nonDeletedSubtitles.Add(sub); + } + Assert.AreNotEqual(originaluNonDeletedSubtitles, nonDeletedSubtitles.Count); + Assert.AreEqual(nonDeletedSubtitles.Count, 2); + Assert.AreEqual("eng", nonDeletedSubtitles[0].Language); + Assert.AreEqual("fre", nonDeletedSubtitles[1].Language); + } + /// + /// Test German is matched and removed + /// + [TestMethod] + public void KeepOriginalSubtitles() + { + int originaluNonDeletedSubtitles = Model.SubtitleStreams.Count(x => x.Deleted == false); + FfmpegBuilderTrackRemover ffRemover = new(); + args.Variables["OriginalLanguage"] = "fre"; + ffRemover.CustomTrackSelection = true; + ffRemover.TrackSelectionOptions = new(); + ffRemover.TrackSelectionOptions.Add(new ("Language", "!orig")); + ffRemover.StreamType = "Subtitle"; + ffRemover.PreExecute(args); + Assert.AreEqual(1, ffRemover.Execute(args)); + List nonDeletedSubtitles = new(); + + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted)) + { + Logger.ILog("Deleted subtitle: " + sub); + } + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted == false)) + { + Logger.ILog("Non deleted subtitle: " + sub); + nonDeletedSubtitles.Add(sub); + } + Assert.AreNotEqual(originaluNonDeletedSubtitles, nonDeletedSubtitles.Count); + Assert.AreEqual(nonDeletedSubtitles.Count, 1); + Assert.AreEqual("fre", nonDeletedSubtitles[0].Language); + } + + /// + /// Tests english subtitles are removed + /// + [TestMethod] + public void RemoveEnglishSubtitles() + { + int originaluNonDeletedSubtitles = Model.SubtitleStreams.Count(x => x.Deleted == false); + FfmpegBuilderTrackRemover ffRemover = new(); + args.Variables["OriginalLanguage"] = "fre"; + ffRemover.CustomTrackSelection = true; + ffRemover.TrackSelectionOptions = new(); + ffRemover.TrackSelectionOptions.Add(new ("Language", "eng")); + ffRemover.StreamType = "Subtitle"; + ffRemover.PreExecute(args); + Assert.AreEqual(1, ffRemover.Execute(args)); + List nonDeletedSubtitles = new(); + + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted)) + { + Logger.ILog("Deleted subtitle: " + sub); + } + Logger.ILog(new string('-', 100)); + foreach (var sub in Model.SubtitleStreams.Where(x => x.Deleted == false)) + { + Logger.ILog("Non deleted subtitle: " + sub); + nonDeletedSubtitles.Add(sub); + } + Assert.AreNotEqual(originaluNonDeletedSubtitles, nonDeletedSubtitles.Count); + Assert.AreEqual(nonDeletedSubtitles.Count, originaluNonDeletedSubtitles - 1); + Assert.IsFalse(nonDeletedSubtitles.Any(x => + x.Language.Contains("en", StringComparison.InvariantCultureIgnoreCase))); + } +} + +#endif \ No newline at end of file