mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-05-20 02:58:40 -05:00
FF-286 - added unknown/other to subtitle format remover
This commit is contained in:
@@ -36,6 +36,7 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
|
||||
new ListOption { Value = "ttml", Label = "TTML subtitle"},
|
||||
new ListOption { Value = "mov_text", Label = "TX3G (mov_text)"},
|
||||
new ListOption { Value = "webvtt", Label = "WebVTT subtitle"},
|
||||
new ListOption { Value = "OTHER", Label = "Unknown/Other"},
|
||||
};
|
||||
}
|
||||
return _Options;
|
||||
@@ -55,7 +56,9 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
|
||||
}
|
||||
|
||||
|
||||
var removeCodecs = SubtitlesToRemove?.Where(x => string.IsNullOrWhiteSpace(x) == false)?.Select(x => x.ToLower())?.ToList() ?? new List<string>();
|
||||
var removeCodecs = SubtitlesToRemove?.Where(x => x != "OTHER" && string.IsNullOrWhiteSpace(x) == false)?.Select(x => x.ToLower())?.ToList() ?? new List<string>();
|
||||
bool removeOthers = SubtitlesToRemove.Any(x => x == "OTHER");
|
||||
var known = Options.Where(x => x.Value.ToString() != "OTHER").Select(x => x.Value.ToString().ToLower()).ToList();
|
||||
|
||||
if (removeCodecs.Count == 0)
|
||||
return 2; // nothing to remove
|
||||
@@ -72,6 +75,14 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
|
||||
removing = true;
|
||||
continue;
|
||||
}
|
||||
if(removeOthers && known.Contains(subCodec) == false)
|
||||
{
|
||||
args.Logger.ILog("Removing unknown subtitle: " + subCodec);
|
||||
sub.Deleted = true;
|
||||
removing = true;
|
||||
continue;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return removing ? 1 : 2;
|
||||
|
||||
@@ -1415,6 +1415,40 @@ public class FfmpegBuilder_BasicTests : TestBase
|
||||
Assert.AreEqual(1, result1);
|
||||
Assert.AreEqual(1, result);
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public void FfmpegBuilder_SubtitleFormatRemover_Unknown()
|
||||
{
|
||||
const string file = @"D:\videos\testfiles\pgs.mkv";
|
||||
var logger = new TestLogger();
|
||||
const string ffmpeg = @"C:\utils\ffmpeg\ffmpeg.exe";
|
||||
var vi = new VideoInfoHelper(ffmpeg, logger);
|
||||
var vii = vi.Read(file);
|
||||
var args = new NodeParameters(file, logger, false, string.Empty);
|
||||
args.GetToolPathActual = (string tool) => ffmpeg;
|
||||
args.TempPath = @"D:\videos\temp";
|
||||
args.Parameters.Add("VideoInfo", vii);
|
||||
|
||||
FfmpegBuilderStart ffStart = new();
|
||||
ffStart.PreExecute(args);
|
||||
Assert.AreEqual(1, ffStart.Execute(args));
|
||||
|
||||
|
||||
FfmpegBuilderSubtitleFormatRemover ffSubRemover = new();
|
||||
ffSubRemover.SubtitlesToRemove = new List<string> { "UNKNOWN" };
|
||||
ffSubRemover.PreExecute(args);
|
||||
int result1 = ffSubRemover.Execute(args);
|
||||
|
||||
|
||||
FfmpegBuilderExecutor ffExecutor = new();
|
||||
ffExecutor.PreExecute(args);
|
||||
int result = ffExecutor.Execute(args);
|
||||
|
||||
string log = logger.ToString();
|
||||
Assert.AreEqual(2, result1);
|
||||
Assert.AreEqual(2, result);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user