From 925e933359073ad8dca5b081fb0a76ffec92fa17 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Thu, 12 Sep 2024 07:54:07 +1200 Subject: [PATCH] FF-1771: Video has stream original language is now supported --- VideoNodes/LogicalNodes/VideoHasStream.cs | 11 ++++++++++- VideoNodes/Tests/VideoHasStreamTests.cs | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/VideoNodes/LogicalNodes/VideoHasStream.cs b/VideoNodes/LogicalNodes/VideoHasStream.cs index 20f6133b..97fce5d9 100644 --- a/VideoNodes/LogicalNodes/VideoHasStream.cs +++ b/VideoNodes/LogicalNodes/VideoHasStream.cs @@ -337,13 +337,22 @@ public class VideoHasStream : VideoNode /// the match result private bool LanguageMatches(NodeParameters args, string lang, string streamLanguage) { + lang = args.ReplaceVariables(lang.Replace("{orig}", "{OriginalLanguage}"), stripMissing: false); + if (args.Variables.TryGetValue("OriginalLanguage", out var oOrigLanguage) && oOrigLanguage is string origLanguage && + string.IsNullOrWhiteSpace(origLanguage) == false) + { + lang = lang.Replace("OriginalLanguage", origLanguage, StringComparison.InvariantCultureIgnoreCase); + lang = lang.Replace("original", origLanguage); + lang = lang.Replace("orig", origLanguage); + } + string iso1 = LanguageHelper.GetIso1Code(streamLanguage); string iso2 = LanguageHelper.GetIso2Code(streamLanguage); string english = LanguageHelper.GetEnglishFor(streamLanguage); var iso1Matches = ValueMatch(lang, iso1) == MatchResult.Matched; var iso2Matches = ValueMatch(lang, iso2) == MatchResult.Matched; var engMatches = ValueMatch(lang, english) == MatchResult.Matched; - + bool anyMatches = iso1Matches || iso2Matches || engMatches; if(anyMatches == false) { diff --git a/VideoNodes/Tests/VideoHasStreamTests.cs b/VideoNodes/Tests/VideoHasStreamTests.cs index cb5feb16..3d682c89 100644 --- a/VideoNodes/Tests/VideoHasStreamTests.cs +++ b/VideoNodes/Tests/VideoHasStreamTests.cs @@ -372,6 +372,29 @@ public class VideoHasStreamTests : VideoTestBase } } + [TestMethod] + public void VideoHasStream_Audio_Lang_Variable() + { + var args = GetVideoNodeParameters(); + + var vf = new VideoFile(); + vf.PreExecute(args); + Assert.AreEqual(1, vf.Execute(args)); + + VideoHasStream element = new(); + element.Stream = "Audio"; + element.PreExecute(args); + + foreach (var lang in new[] { "orig", "original", "OriginalLanguage", "{OriginalLanguage}", "{orig}", }) + { + Logger.ILog("###### Testing: " + lang); + args.Variables["OriginalLanguage"] = "eng"; + element.Language = lang; + int output = element.Execute(args); + Assert.AreEqual(1, output); + } + } + [TestMethod] public void VideoHasStream_Audio_Lang_Fail() {