From 306a4e408b1131cf0fb0b04a75ce90cbd2d43bb2 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Sun, 17 Mar 2024 16:40:25 +1300 Subject: [PATCH] convert stuff, icons --- Apprise/Plugin.cs | 9 + AudioNodes/AudioBooks/CreateAudioBook.cs | 22 +- AudioNodes/InputNodes/AudioFile.cs | 39 ++-- .../Nodes/ConvertFlowElements/ConvertAudio.cs | 59 ++++++ .../{ => ConvertFlowElements}/ConvertNode.cs | 190 +----------------- .../Nodes/ConvertFlowElements/ConvertToAAC.cs | 19 ++ .../Nodes/ConvertFlowElements/ConvertToMP3.cs | 12 ++ .../Nodes/ConvertFlowElements/ConvertToOGG.cs | 66 ++++++ .../Nodes/ConvertFlowElements/ConvertToWAV.cs | 37 ++++ AudioNodes/Plugin.cs | 5 + AudioNodes/Tests/ConvertTests.cs | 41 +++- BasicNodes/File/PatternReplacer.cs | 23 ++- BasicNodes/Plugin.cs | 7 + ChecksumNodes/Plugin.cs | 6 + ComicNodes/Comics/ComicConverter.cs | 4 +- ComicNodes/Plugin.cs | 6 + DiscordNodes/Plugin.cs | 3 + EmailNodes/Plugin.cs | 6 + Emby/Plugin.cs | 6 + FileFlows.Plugin.dll | Bin 134144 -> 134144 bytes FileFlows.Plugin.pdb | Bin 31592 -> 31700 bytes Gotify/Plugin.cs | 2 + ImageNodes/Images/ImageFile.cs | 2 +- ImageNodes/Plugin.cs | 6 + MetaNodes/Plugin.cs | 6 + Plex/Plugin.cs | 8 +- Pushbullet/Plugin.cs | 2 + Pushover/Plugin.cs | 2 + Telegram/Plugin.cs | 3 + VideoNodes/FFMpegEncoder.cs | 2 +- .../FfmpegBuilderExecutor.cs | 2 +- VideoNodes/InputNodes/VideoFile.cs | 12 +- VideoNodes/Plugin.cs | 6 + VideoNodes/VideoNodes/EncodingNode.cs | 4 +- 34 files changed, 379 insertions(+), 238 deletions(-) create mode 100644 AudioNodes/Nodes/ConvertFlowElements/ConvertAudio.cs rename AudioNodes/Nodes/{ => ConvertFlowElements}/ConvertNode.cs (57%) create mode 100644 AudioNodes/Nodes/ConvertFlowElements/ConvertToAAC.cs create mode 100644 AudioNodes/Nodes/ConvertFlowElements/ConvertToMP3.cs create mode 100644 AudioNodes/Nodes/ConvertFlowElements/ConvertToOGG.cs create mode 100644 AudioNodes/Nodes/ConvertFlowElements/ConvertToWAV.cs diff --git a/Apprise/Plugin.cs b/Apprise/Plugin.cs index 0b401799..ea5fb0ae 100644 --- a/Apprise/Plugin.cs +++ b/Apprise/Plugin.cs @@ -1,11 +1,20 @@ namespace FileFlows.Apprise; +/// +/// Apprise Plugin +/// public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("32d0e2ad-7617-4b52-bc39-338d2cfe468c"); + /// public string Name => "Apprise Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:apprise"; + /// public void Init() { } diff --git a/AudioNodes/AudioBooks/CreateAudioBook.cs b/AudioNodes/AudioBooks/CreateAudioBook.cs index f73382e1..be4f2537 100644 --- a/AudioNodes/AudioBooks/CreateAudioBook.cs +++ b/AudioNodes/AudioBooks/CreateAudioBook.cs @@ -1,6 +1,3 @@ -using FileFlows.Plugin; -using TagLib.Tiff.Cr2; - namespace FileFlows.AudioNodes; /// @@ -84,6 +81,7 @@ public class CreateAudioBook: AudioNode string extension = FileHelper.GetExtension(file); if (allowedExtensions.Contains(extension.ToLower()) == false) continue; + args.Logger?.ILog("Found audio file: " + file); files.Add(file); } @@ -109,19 +107,19 @@ public class CreateAudioBook: AudioNode var matches = rgxNumbers.Matches(shortname); if (matches.Any() == false) { - args.Logger.DLog("No number found in: " + shortname); + args.Logger.ILog("No number found in: " + shortname); return 100000; } if (matches.Count == 1) { - args.Logger.DLog($"Number [{matches[0].Value}] found in: " + shortname); + args.Logger.ILog($"Number [{matches[0].Value}] found in: " + shortname); return int.Parse(matches[0].Value); } // we may have a year, if first number is 4 digits, assume year var number = matches[0].Length == 4 ? int.Parse(matches[1].Value) : int.Parse(matches[0].Value); - args.Logger.DLog($"Number [{number}] found in: " + shortname); + args.Logger.ILog($"Number [{number}] found in: " + shortname); return number; }).ToList(); @@ -129,8 +127,8 @@ public class CreateAudioBook: AudioNode TimeSpan current = TimeSpan.Zero; string bookName = FileHelper.GetShortFileName(dir); int chapterCount = 1; - - System.IO.File.WriteAllText(metadataFile, @";FFMETADATA1\n\n" + string.Join("\n", files.Select(x => + + string metadataContents = @";FFMETADATA1\n\n" + string.Join("\n", files.Select(x => { string extension = FileHelper.GetExtension(x); string name = FileHelper.GetShortFileName(x); @@ -145,9 +143,13 @@ public class CreateAudioBook: AudioNode current = end; ++chapterCount; return chapter; - }))); + })); + args.Logger?.ILog("Metadata Content:\n" + metadataContents); + System.IO.File.WriteAllText(metadataFile, metadataContents); string inputFiles = FileHelper.Combine(args.TempPath, Guid.NewGuid() + ".txt"); - System.IO.File.WriteAllText(inputFiles, string.Join("\n", files.Select(x => $"file '{x}'"))); + string strInputFiles = string.Join("\n", files.Select(x => $"file '{x}'")); + System.IO.File.WriteAllText(inputFiles, strInputFiles); + args.Logger?.ILog("Input Files:\n" + inputFiles); string outputFile = FileHelper.Combine(args.TempPath, Guid.NewGuid() + ".m4b"); diff --git a/AudioNodes/InputNodes/AudioFile.cs b/AudioNodes/InputNodes/AudioFile.cs index 68435be1..2bdd349a 100644 --- a/AudioNodes/InputNodes/AudioFile.cs +++ b/AudioNodes/InputNodes/AudioFile.cs @@ -68,26 +68,27 @@ namespace FileFlows.AudioNodes { if (ReadAudioFileInfo(args, ffmpegExe, ffprobe, LocalWorkingFile)) return 1; + return -1; - var AudioInfo = GetAudioInfo(args); - if (AudioInfo.Failed(out string error)) - { - args.FailureReason = error; - args.Logger?.ELog(error); - return -1; - } - - if (string.IsNullOrEmpty(AudioInfo.Value.Codec) == false) - args.RecordStatistic("CODEC", AudioInfo.Value.Codec); - - string container = FileHelper.GetExtension(args.FileName).ToUpperInvariant().TrimStart('.'); - if (string.IsNullOrEmpty(container) == false) - { - args.Logger?.ILog("Audio Container: " + container); - args.RecordStatistic("AUDIO_CONTAINER", container); - } - - return 0; + // var AudioInfo = GetAudioInfo(args); + // if (AudioInfo.Failed(out string error)) + // { + // args.FailureReason = error; + // args.Logger?.ELog(error); + // return -1; + // } + // + // if (string.IsNullOrEmpty(AudioInfo.Value.Codec) == false) + // args.RecordStatistic("CODEC", AudioInfo.Value.Codec); + // + // string container = FileHelper.GetExtension(args.FileName).ToUpperInvariant().TrimStart('.'); + // if (string.IsNullOrEmpty(container) == false) + // { + // args.Logger?.ILog("Audio Container: " + container); + // args.RecordStatistic("AUDIO_CONTAINER", container); + // } + // + // return 0; } catch (Exception ex) { diff --git a/AudioNodes/Nodes/ConvertFlowElements/ConvertAudio.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertAudio.cs new file mode 100644 index 00000000..537da94a --- /dev/null +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertAudio.cs @@ -0,0 +1,59 @@ +namespace FileFlows.AudioNodes; + +public class ConvertAudio : ConvertNode +{ + protected override string Extension => Codec; + public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-audio"; + + public static List BitrateOptions => ConvertNode.BitrateOptions; + + [Select(nameof(CodecOptions), 0)] + public string Codec { get; set; } + + /// + /// Gets or sets if high efficiency should be used + /// + [Boolean(5)] + [ConditionEquals(nameof(Codec), "aac")] + public bool HighEfficiency { get => base.HighEfficiency; set =>base.HighEfficiency = value; } + + private static List _CodecOptions; + public static List CodecOptions + { + get + { + if (_CodecOptions == null) + { + _CodecOptions = new List + { + new () { Label = "AAC", Value = "aac"}, + new () { Label = "MP3", Value = "MP3"}, + new () { Label = "OGG (Vorbis)", Value = "ogg"}, + new () { Label = "OGG (Opus)", Value = "libopus"}, + new () { Label = "WAV", Value = "wav"}, + }; + } + return _CodecOptions; + } + } + + public override int Execute(NodeParameters args) + { + var audioInfoResult = GetAudioInfo(args); + if (audioInfoResult.Failed(out string error)) + { + args.Logger?.ELog(error); + args.FailureReason = error; + return -1; + } + + AudioInfo AudioInfo = audioInfoResult.Value; + + string ffmpegExe = GetFFmpeg(args); + if (string.IsNullOrEmpty(ffmpegExe)) + return -1; + + return base.Execute(args); + + } +} diff --git a/AudioNodes/Nodes/ConvertNode.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertNode.cs similarity index 57% rename from AudioNodes/Nodes/ConvertNode.cs rename to AudioNodes/Nodes/ConvertFlowElements/ConvertNode.cs index 09df8315..ac138042 100644 --- a/AudioNodes/Nodes/ConvertNode.cs +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertNode.cs @@ -2,136 +2,7 @@ namespace FileFlows.AudioNodes { - public class ConvertToMP3 : ConvertNode - { - /// - public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-mp3"; - /// - protected override string Extension => "mp3"; - /// - public override string Icon => "svg:mp3"; - } - public class ConvertToWAV : ConvertNode - { - /// - public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-wav"; - /// - protected override string Extension => "wav"; - /// - public override string Icon => "svg:wav"; - - private static List _BitrateOptions; - public new static List BitrateOptions - { - get - { - if (_BitrateOptions == null) - { - _BitrateOptions = new List - { - new () { Label = "Automatic", Value = 0 }, - new () { Label = "Same as source", Value = -1 }, - new () { Label = "64 Kbps", Value = 64}, - new () { Label = "96 Kbps", Value = 96}, - new () { Label = "128 Kbps", Value = 128}, - new () { Label = "160 Kbps", Value = 160}, - new () { Label = "192 Kbps", Value = 192}, - new () { Label = "224 Kbps", Value = 224}, - new () { Label = "256 Kbps", Value = 256}, - new () { Label = "288 Kbps", Value = 288}, - new () { Label = "320 Kbps", Value = 320}, - }; - } - return _BitrateOptions; - } - } - } - - public class ConvertToAAC : ConvertNode - { - /// - public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-aac"; - /// - protected override string Extension => "aac"; - /// - public override string Icon => "svg:aac"; - - /// - /// Gets or sets if high efficiency should be used - /// - [Boolean(5)] - public bool HighEfficiency { get => base.HighEfficiency; set =>base.HighEfficiency = value; } - - protected override bool SetId3Tags => true; - } - public class ConvertToOGG: ConvertNode - { - /// - public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-ogg"; - /// - protected override string Extension => "ogg"; - public static List BitrateOptions => ConvertNode.BitrateOptions; - /// - public override string Icon => "svg:ogg"; - } - - public class ConvertAudio : ConvertNode - { - protected override string Extension => Codec; - public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-audio"; - - public static List BitrateOptions => ConvertNode.BitrateOptions; - - [Select(nameof(CodecOptions), 0)] - public string Codec { get; set; } - - /// - /// Gets or sets if high efficiency should be used - /// - [Boolean(5)] - [ConditionEquals(nameof(Codec), "aac")] - public bool HighEfficiency { get => base.HighEfficiency; set =>base.HighEfficiency = value; } - - private static List _CodecOptions; - public static List CodecOptions - { - get - { - if (_CodecOptions == null) - { - _CodecOptions = new List - { - new () { Label = "AAC", Value = "aac"}, - new () { Label = "MP3", Value = "MP3"}, - new () { Label = "OGG", Value = "ogg"}, - new () { Label = "WAV", Value = "wav"}, - }; - } - return _CodecOptions; - } - } - - public override int Execute(NodeParameters args) - { - var audioInfoResult = GetAudioInfo(args); - if (audioInfoResult.Failed(out string error)) - { - args.Logger?.ELog(error); - args.FailureReason = error; - return -1; - } - - AudioInfo AudioInfo = audioInfoResult.Value; - - string ffmpegExe = GetFFmpeg(args); - if (string.IsNullOrEmpty(ffmpegExe)) - return -1; - - return base.Execute(args); - - } - } public abstract class ConvertNode:AudioNode { @@ -157,15 +28,19 @@ namespace FileFlows.AudioNodes string Codec = Extension; extension = null; string codecKey = Codec + "_codec"; - string codec = args.GetToolPathActual(codecKey); + string codec = args.GetToolPathActual(codecKey)?.EmptyAsNull() ?? Codec; if (codec == "mp3") extension = "mp3"; - if (codec == "libvorbis" || codec == "ogg") + else if (codec == "libopus") + extension = "ogg"; + else if (codec == "libvorbis" || codec == "ogg") { codec = "libvorbis"; extension = "ogg"; } + bool ogg = extension?.ToLowerInvariant() == "ogg"; + if (codec == codecKey || string.IsNullOrWhiteSpace(codec)) { codec = Codec switch @@ -177,7 +52,7 @@ namespace FileFlows.AudioNodes } int bitrate = Bitrate; - if (Codec.ToLowerInvariant() == "mp3" || Codec.ToLowerInvariant() == "ogg" || Codec.ToLowerInvariant() == "aac") + if (Codec.ToLowerInvariant() == "mp3" || ogg || Codec.ToLowerInvariant() == "aac") { if (bitrate is >= 10 and <= 20) { @@ -361,14 +236,6 @@ namespace FileFlows.AudioNodes return 2; } } - //AudioInfo AudioInfo = GetAudioInfo(args); - //if (AudioInfo == null) - // return -1; - // if (Bitrate != 0 && Bitrate != -1 && (Bitrate < 64 || Bitrate > 320)) - // { - // args.Logger?.ILog("Bitrate not set or invalid, setting to 192kbps"); - // Bitrate = 192; - // } var ffArgs = GetArguments(args, out string extension); @@ -420,48 +287,5 @@ namespace FileFlows.AudioNodes return -1; } - - //private void CopyMetaData(string outputFile, string originalFile) - //{ - // Track original = new Track(originalFile); - // Track dest = new Track(outputFile); - - // dest.Album = original.Album; - // dest.AlbumArtist = original.AlbumArtist; - // dest.Artist = original.Artist; - // dest.Comment = original.Comment; - // dest.Composer= original.Composer; - // dest.Conductor = original.Conductor; - // dest.Copyright = original.Copyright; - // dest.Date = original.Date; - // dest.Description= original.Description; - // dest.DiscNumber= original.DiscNumber; - // dest.DiscTotal = original.DiscTotal; - // if (original.EmbeddedPictures?.Any() == true) - // { - // foreach (var pic in original.EmbeddedPictures) - // dest.EmbeddedPictures.Add(pic); - // } - // dest.Genre= original.Genre; - // dest.Lyrics= original.Lyrics; - // dest.OriginalAlbum= original.OriginalAlbum; - // dest.OriginalArtist = original.OriginalArtist; - // dest.Popularity= original.Popularity; - // dest.Publisher= original.Publisher; - // dest.PublishingDate= original.PublishingDate; - // dest.Title= original.Title; - // dest.TrackNumber= original.TrackNumber; - // dest.TrackTotal= original.TrackTotal; - // dest.Year= original.Year; - // foreach (var key in original.AdditionalFields.Keys) - // { - // if(dest.AdditionalFields.ContainsKey(key)) - // dest.AdditionalFields[key] = original.AdditionalFields[key]; - // else - // dest.AdditionalFields.Add(key, original.AdditionalFields[key]); - // } - - // dest.Save(); - //} } } diff --git a/AudioNodes/Nodes/ConvertFlowElements/ConvertToAAC.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertToAAC.cs new file mode 100644 index 00000000..e03ddb6f --- /dev/null +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertToAAC.cs @@ -0,0 +1,19 @@ +namespace FileFlows.AudioNodes; + +public class ConvertToAAC : ConvertNode +{ + /// + public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-aac"; + /// + protected override string Extension => "aac"; + /// + public override string Icon => "svg:aac"; + + /// + /// Gets or sets if high efficiency should be used + /// + [Boolean(5)] + public bool HighEfficiency { get => base.HighEfficiency; set =>base.HighEfficiency = value; } + + protected override bool SetId3Tags => true; +} \ No newline at end of file diff --git a/AudioNodes/Nodes/ConvertFlowElements/ConvertToMP3.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertToMP3.cs new file mode 100644 index 00000000..f4e54440 --- /dev/null +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertToMP3.cs @@ -0,0 +1,12 @@ +namespace FileFlows.AudioNodes; + +public class ConvertToMP3 : ConvertNode +{ + /// + public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-mp3"; + /// + protected override string Extension => "mp3"; + + /// + public override string Icon => "svg:mp3"; +} \ No newline at end of file diff --git a/AudioNodes/Nodes/ConvertFlowElements/ConvertToOGG.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertToOGG.cs new file mode 100644 index 00000000..f6f12b4c --- /dev/null +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertToOGG.cs @@ -0,0 +1,66 @@ +namespace FileFlows.AudioNodes; + + public class ConvertToOGG: ConvertNode + { + /// + public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-ogg"; + + /// + protected override string Extension => "ogg"; + + public static List BitrateOptions => ConvertNode.BitrateOptions; + + /// + public override string Icon => "svg:ogg"; + + /// + /// Gets or sets the codec + /// + [Select(nameof(CodecOptions), 0)] + public string Codec { get; set; } + + /// + /// The codec options + /// + private static List _CodecOptions; + /// + /// Gets the codec options + /// + public static List CodecOptions + { + get + { + if (_CodecOptions == null) + { + _CodecOptions = new() + { + new() { Label = "Vorbis",Value = "vorbis" }, + new() { Label = "Opus", Value = "opus" } + }; + } + + return _CodecOptions; + } + } + + /// + protected override List GetArguments(NodeParameters args, out string? extension) + { + List ffArgs = base.GetArguments(args, out extension); + if (string.Equals(this.Codec, "opus", StringComparison.InvariantCultureIgnoreCase)) + { + var index = ffArgs.FindIndex(arg => arg.Equals("libvorbis")); + if (index != -1) + { + ffArgs[index] = "libopus"; + args.Logger?.ILog("Replace 'libopus' with 'libvorbis'"); + } + else + { + args.Logger?.ILog("Failed to locate libopus in arguments"); + } + } + + return ffArgs; + } + } \ No newline at end of file diff --git a/AudioNodes/Nodes/ConvertFlowElements/ConvertToWAV.cs b/AudioNodes/Nodes/ConvertFlowElements/ConvertToWAV.cs new file mode 100644 index 00000000..d36519c0 --- /dev/null +++ b/AudioNodes/Nodes/ConvertFlowElements/ConvertToWAV.cs @@ -0,0 +1,37 @@ +namespace FileFlows.AudioNodes; + +public class ConvertToWAV : ConvertNode +{ + /// + public override string HelpUrl => "https://fileflows.com/docs/plugins/audio-nodes/convert-to-wav"; + /// + protected override string Extension => "wav"; + /// + public override string Icon => "svg:wav"; + + private static List _BitrateOptions; + public new static List BitrateOptions + { + get + { + if (_BitrateOptions == null) + { + _BitrateOptions = new List + { + new () { Label = "Automatic", Value = 0 }, + new () { Label = "Same as source", Value = -1 }, + new () { Label = "64 Kbps", Value = 64}, + new () { Label = "96 Kbps", Value = 96}, + new () { Label = "128 Kbps", Value = 128}, + new () { Label = "160 Kbps", Value = 160}, + new () { Label = "192 Kbps", Value = 192}, + new () { Label = "224 Kbps", Value = 224}, + new () { Label = "256 Kbps", Value = 256}, + new () { Label = "288 Kbps", Value = 288}, + new () { Label = "320 Kbps", Value = 320}, + }; + } + return _BitrateOptions; + } + } +} \ No newline at end of file diff --git a/AudioNodes/Plugin.cs b/AudioNodes/Plugin.cs index c220f444..8a7fd108 100644 --- a/AudioNodes/Plugin.cs +++ b/AudioNodes/Plugin.cs @@ -5,10 +5,15 @@ using FileFlows.Plugin.Attributes; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("d951a39e-4296-4801-ab41-4070b0789465"); public string Name => "Audio Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:audio"; + /// public void Init() { } diff --git a/AudioNodes/Tests/ConvertTests.cs b/AudioNodes/Tests/ConvertTests.cs index 408b5f61..5094083d 100644 --- a/AudioNodes/Tests/ConvertTests.cs +++ b/AudioNodes/Tests/ConvertTests.cs @@ -9,6 +9,14 @@ namespace FileFlows.AudioNodes.Tests; [TestClass] public class ConvertTests { + private TestContext testContextInstance; + + public TestContext TestContext + { + get { return testContextInstance; } + set { testContextInstance = value; } + } + [TestMethod] public void Convert_FlacToAac() { @@ -81,15 +89,32 @@ public class ConvertTests public void Convert_Mp3ToOgg() { - const string file = @"D:\music\unprocessed\04-billy_joel-scenes_from_an_italian_restaurant-b2125758.mp3"; + const string file = @"/home/john/Music/unprocessed/The Cranberries - No Need to Argue (1994) - 04 - Zombie.mp3"; - ConvertToOGG node = new(); - var args = new FileFlows.Plugin.NodeParameters(file, new TestLogger(), false, string.Empty, null);; - args.GetToolPathActual = (string tool) => @"C:\utils\ffmpeg\ffmpeg.exe"; - args.TempPath = @"D:\music\temp"; - new AudioFile().Execute(args); // need to read the Audio info and set it - int output = node.Execute(args); + //ConvertToOGG node = new(); + var logger = new TestLogger(); + var args = new FileFlows.Plugin.NodeParameters(file, logger, false, string.Empty, new LocalFileService());; + args.GetToolPathActual = (string tool) => + { + if(tool.ToLowerInvariant() == "ffprobe") + return @"/usr/local/bin/ffprobe"; + if(tool.ToLowerInvariant() == "ffmpeg") + return @"/usr/local/bin/ffmpeg"; + return string.Empty; + }; + args.TempPath = @"/home/john/Music/temp"; + var af = new AudioFile(); + af.PreExecute(args); + af.Execute(args); // need to read the Audio info and set it + //int output = node.Execute(args); + var ele = new ConvertAudio(); + ele.Codec = "libopus"; + ele.Bitrate = 320; + ele.PreExecute(args); + int output = ele.Execute(args); + + TestContext.WriteLine(logger.ToString()); Assert.AreEqual(1, output); } @@ -198,9 +223,11 @@ public class ConvertTests args.TempPath = @"D:\music\temp"; new AudioFile().Execute(args); // need to read the Audio info and set it node.Normalize = true; + node.PreExecute(args); int output = node.Execute(args); string log = logger.ToString(); + TestContext.WriteLine(log); Assert.AreEqual(1, output); } diff --git a/BasicNodes/File/PatternReplacer.cs b/BasicNodes/File/PatternReplacer.cs index 6f4c2d0f..1016140d 100644 --- a/BasicNodes/File/PatternReplacer.cs +++ b/BasicNodes/File/PatternReplacer.cs @@ -1,32 +1,46 @@ using FileFlows.Plugin.Helpers; - -namespace FileFlows.BasicNodes.Functions; - using System.ComponentModel.DataAnnotations; using System.Text.RegularExpressions; using FileFlows.Plugin; using FileFlows.Plugin.Attributes; +namespace FileFlows.BasicNodes.Functions; + +/// +/// Replaces matching patterns in a fil +/// public class PatternReplacer : Node { + /// public override int Inputs => 1; + /// public override int Outputs => 2; + /// public override FlowElementType Type => FlowElementType.Process; + /// public override string Icon => "fas fa-exchange-alt"; public string Group => "File"; + /// public override string HelpUrl => "https://fileflows.com/docs/plugins/basic-nodes/filename-pattern-replacer"; internal bool UnitTest = false; + /// + /// Gets or sets replacements to replace + /// [KeyValue(1, null)] [Required] public List> Replacements{ get; set; } + /// + /// Gets or sets if the working file should be used + /// [Boolean(2)] public bool UseWorkingFileName { get; set; } + /// public override int Execute(NodeParameters args) { if (Replacements?.Any() != true) @@ -34,7 +48,6 @@ public class PatternReplacer : Node try { - //string filename = new FileInfo(UseWorkingFileName ? args.WorkingFile : args.FileName).Name; string filename = FileHelper.GetShortFileName(UseWorkingFileName ? args.WorkingFile : args.FileName); string updated = RunReplacements(args, filename); @@ -47,7 +60,7 @@ public class PatternReplacer : Node args.Logger?.ILog($"Pattern replacement: '{filename}' to '{updated}'"); string directory = FileHelper.GetDirectory(args.WorkingFile); - string dest = directory + args.FileService.PathSeparator + updated; + string dest = FileHelper.Combine(directory, updated); args.Logger?.ILog($"New filename: " + dest); if (UnitTest == false) { diff --git a/BasicNodes/Plugin.cs b/BasicNodes/Plugin.cs index 6eb25159..86d052c1 100644 --- a/BasicNodes/Plugin.cs +++ b/BasicNodes/Plugin.cs @@ -4,10 +4,17 @@ namespace FileFlows.BasicNodes public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("789b5213-4ca5-42da-816e-f2117f00cd16"); + /// public string Name => "Basic Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:basic"; + + /// public void Init() { } } } diff --git a/ChecksumNodes/Plugin.cs b/ChecksumNodes/Plugin.cs index 24b1bcb9..532a3a18 100644 --- a/ChecksumNodes/Plugin.cs +++ b/ChecksumNodes/Plugin.cs @@ -2,10 +2,16 @@ namespace ChecksumNodes; public class Plugin : IPlugin { + /// public Guid Uid => new Guid("5ce1524c-5e7b-40ee-9fc1-2152181490f1"); + /// public string Name => "Checksum Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "fas fa-file-contract"; + /// public void Init() { } diff --git a/ComicNodes/Comics/ComicConverter.cs b/ComicNodes/Comics/ComicConverter.cs index 49d9eae2..855d9706 100644 --- a/ComicNodes/Comics/ComicConverter.cs +++ b/ComicNodes/Comics/ComicConverter.cs @@ -53,8 +53,8 @@ public class ComicConverter: Node int pageCount = GetPageCount(args, currentFormat, args.WorkingFile); metadata.Add("Format", currentFormat); metadata.Add("Pages", pageCount); - args.RecordStatistic("COMIC_FORMAT", currentFormat); - args.RecordStatistic("COMIC_PAGES", pageCount); + args.RecordStatisticRunningTotals("COMIC_FORMAT", currentFormat); + args.RecordStatisticAverage("COMIC_PAGES", pageCount); args.SetMetadata(metadata); args.Logger?.ILog("Setting metadata: " + currentFormat); diff --git a/ComicNodes/Plugin.cs b/ComicNodes/Plugin.cs index 72751ece..1968a173 100644 --- a/ComicNodes/Plugin.cs +++ b/ComicNodes/Plugin.cs @@ -2,10 +2,16 @@ namespace FileFlows.Comic; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("3664da0a-b531-47b9-bdc8-e8368d9746ce"); + /// public string Name => "Comic Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:comic"; + /// public void Init() { } diff --git a/DiscordNodes/Plugin.cs b/DiscordNodes/Plugin.cs index df940bf2..ba5aa489 100644 --- a/DiscordNodes/Plugin.cs +++ b/DiscordNodes/Plugin.cs @@ -18,6 +18,9 @@ public class Plugin : FileFlows.Plugin.IPlugin /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "fab fa-discord:#5865F2"; + /// /// Initializes this plugin /// diff --git a/EmailNodes/Plugin.cs b/EmailNodes/Plugin.cs index 4624d65c..a90f7964 100644 --- a/EmailNodes/Plugin.cs +++ b/EmailNodes/Plugin.cs @@ -2,10 +2,16 @@ namespace FileFlows.EmailNodes; public class Plugin : IPlugin { + /// public Guid Uid => new Guid("b5077522-4a31-4faa-b9a7-b409ecb9c01e"); + /// public string Name => "Email"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "fas fa-envelope"; + /// public void Init() { } diff --git a/Emby/Plugin.cs b/Emby/Plugin.cs index 43ec23d9..7d672c8d 100644 --- a/Emby/Plugin.cs +++ b/Emby/Plugin.cs @@ -2,10 +2,16 @@ namespace FileFlows.Emby; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("51bdd442-6630-4c8c-b3a4-70a2d1c60309"); + /// public string Name => "Emby"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:emby"; + /// public void Init() { } diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index 869d34560de3a27f19817b9eb9fa1eaf937d1b73..b2f7bf074d638e07f029f70cceda0b875f153bb3 100644 GIT binary patch literal 134144 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 VfAOzr8!kH3xghZS-~T%f{1>NC5|sb| diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 9c8e26f16795d1602661103e92b9adb17a806360..6b1534f178e5851d7cc4bec57e899153a0183505 100644 GIT binary patch delta 12122 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 delta 12137 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 public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:gotify"; /// /// Initializes this plugin diff --git a/ImageNodes/Images/ImageFile.cs b/ImageNodes/Images/ImageFile.cs index a1b7f811..27c2274b 100644 --- a/ImageNodes/Images/ImageFile.cs +++ b/ImageNodes/Images/ImageFile.cs @@ -39,7 +39,7 @@ public class ImageFile : ImageBaseNode UpdateImageInfo(args, this.Variables); if(string.IsNullOrEmpty(base.CurrentFormat) == false) - args.RecordStatistic("IMAGE_FORMAT", base.CurrentFormat); + args.RecordStatisticRunningTotals("IMAGE_FORMAT", base.CurrentFormat); return 1; } diff --git a/ImageNodes/Plugin.cs b/ImageNodes/Plugin.cs index de92ca0d..7666b979 100644 --- a/ImageNodes/Plugin.cs +++ b/ImageNodes/Plugin.cs @@ -2,10 +2,16 @@ namespace FileFlows.ImageNodes; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("a6ddeee5-4c5a-46c5-80d5-e48552dd6a9b"); + /// public string Name => "Image Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:image"; + /// public void Init() { } diff --git a/MetaNodes/Plugin.cs b/MetaNodes/Plugin.cs index 449102de..2d7999bb 100644 --- a/MetaNodes/Plugin.cs +++ b/MetaNodes/Plugin.cs @@ -4,9 +4,15 @@ using System.ComponentModel.DataAnnotations; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("ed1e2547-6f92-4bc8-ae49-fcd7c74e7e9c"); + /// public string Name => "Meta Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:database"; + /// public void Init() { } } diff --git a/Plex/Plugin.cs b/Plex/Plugin.cs index ffe57019..d70d55c9 100644 --- a/Plex/Plugin.cs +++ b/Plex/Plugin.cs @@ -2,10 +2,16 @@ namespace FileFlows.Plex; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("5be72267-7574-4ba9-a958-f3dda0d6c2dc"); + /// public string Name => "Plex"; + /// public string MinimumVersion => "1.0.4.2019"; - + /// + public string Icon => "svg:plex"; + + /// public void Init() { } diff --git a/Pushbullet/Plugin.cs b/Pushbullet/Plugin.cs index cc5fcc78..c67aec42 100644 --- a/Pushbullet/Plugin.cs +++ b/Pushbullet/Plugin.cs @@ -19,6 +19,8 @@ public class Plugin : FileFlows.Plugin.IPlugin /// Gets the minimum version of FileFlows required for this plugin /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:pushbullet"; /// /// Initializes this plugin diff --git a/Pushover/Plugin.cs b/Pushover/Plugin.cs index c84a5d82..f49d7be7 100644 --- a/Pushover/Plugin.cs +++ b/Pushover/Plugin.cs @@ -19,6 +19,8 @@ public class Plugin : FileFlows.Plugin.IPlugin /// Gets the minimum version of FileFlows required for this plugin /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:pushover"; /// /// Initializes this plugin diff --git a/Telegram/Plugin.cs b/Telegram/Plugin.cs index 355f9264..e83f9db2 100644 --- a/Telegram/Plugin.cs +++ b/Telegram/Plugin.cs @@ -20,6 +20,9 @@ public class Plugin : FileFlows.Plugin.IPlugin /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "fab fa-telegram-plane"; + /// /// Initializes this plugin /// diff --git a/VideoNodes/FFMpegEncoder.cs b/VideoNodes/FFMpegEncoder.cs index 0bab2440..002e7006 100644 --- a/VideoNodes/FFMpegEncoder.cs +++ b/VideoNodes/FFMpegEncoder.cs @@ -17,7 +17,7 @@ public class FFMpegEncoder public delegate void TimeEvent(TimeSpan time, DateTime startedAt); public event TimeEvent AtTime; - public delegate void StatChange(string name, object value, bool recordStatistic = false); + public delegate void StatChange(string name, string value, bool recordStatistic = false); public event StatChange OnStatChange; private Process process; diff --git a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderExecutor.cs b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderExecutor.cs index 844c134a..8f4e7f03 100644 --- a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderExecutor.cs +++ b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderExecutor.cs @@ -236,7 +236,7 @@ public class FfmpegBuilderExecutor: FfmpegBuilderNode GetHardwareDecodingArgs(args, localFile, FFMPEG, video?.Stream?.Codec, pxtFormat, encodingParameters: encodingParameters); if (decodingParameters.Any() == true) { - args.StatisticRecorder("DecoderParameters", string.Join(" ", decodingParameters)); + args.StatisticRecorderRunningTotals("DecoderParameters", string.Join(" ", decodingParameters)); startArgs.AddRange(decodingParameters); } } diff --git a/VideoNodes/InputNodes/VideoFile.cs b/VideoNodes/InputNodes/VideoFile.cs index 00fb4e91..cd67d51c 100644 --- a/VideoNodes/InputNodes/VideoFile.cs +++ b/VideoNodes/InputNodes/VideoFile.cs @@ -94,8 +94,8 @@ public class VideoFile : VideoNode { if (string.IsNullOrEmpty(stream.Codec) == false) { - args.RecordStatistic("CODEC", stream.Codec); - args.RecordStatistic("VIDEO_CODEC", stream.Codec); + args.RecordStatisticRunningTotals("CODEC", stream.Codec); + args.RecordStatisticRunningTotals("VIDEO_CODEC", stream.Codec); } } @@ -103,8 +103,8 @@ public class VideoFile : VideoNode { if (string.IsNullOrEmpty(stream.Codec) == false) { - args.RecordStatistic("CODEC", stream.Codec); - args.RecordStatistic("AUDIO_CODEC", stream.Codec); + args.RecordStatisticRunningTotals("CODEC", stream.Codec); + args.RecordStatisticRunningTotals("AUDIO_CODEC", stream.Codec); } } @@ -121,7 +121,7 @@ public class VideoFile : VideoNode if (resName != null) { args.Logger?.ILog("Video Resolution: " + resName); - args.RecordStatistic("VIDEO_RESOLUTION", resName); + args.RecordStatisticRunningTotals("VIDEO_RESOLUTION", resName); } string extension = FileHelper.GetExtension(args.FileName).ToLowerInvariant().TrimStart('.'); @@ -144,7 +144,7 @@ public class VideoFile : VideoNode if (string.IsNullOrEmpty(container) == false) { args.Logger?.ILog("Video Container: " + container); - args.RecordStatistic("VIDEO_CONTAINER", container); + args.RecordStatisticRunningTotals("VIDEO_CONTAINER", container); } diff --git a/VideoNodes/Plugin.cs b/VideoNodes/Plugin.cs index eb77bcf6..f5ebe0e5 100644 --- a/VideoNodes/Plugin.cs +++ b/VideoNodes/Plugin.cs @@ -5,10 +5,16 @@ using FileFlows.Plugin.Attributes; public class Plugin : FileFlows.Plugin.IPlugin { + /// public Guid Uid => new Guid("881b486b-4b38-4e66-b39e-fbc0fc9deee1"); + /// public string Name => "Video Nodes"; + /// public string MinimumVersion => "1.0.4.2019"; + /// + public string Icon => "svg:video"; + /// public void Init() { } diff --git a/VideoNodes/VideoNodes/EncodingNode.cs b/VideoNodes/VideoNodes/EncodingNode.cs index c9232399..7a4bf83c 100644 --- a/VideoNodes/VideoNodes/EncodingNode.cs +++ b/VideoNodes/VideoNodes/EncodingNode.cs @@ -166,11 +166,11 @@ namespace FileFlows.VideoNodes } } - private void EncoderOnOnStatChange(string name, object value, bool recordStatistic) + private void EncoderOnOnStatChange(string name, string value, bool recordStatistic) { Args.AdditionalInfoRecorder?.Invoke(name, value, 1, new TimeSpan(0, 1, 0)); if(recordStatistic) - Args.RecordStatistic(name, value); + Args.RecordStatisticRunningTotals(name, value); } public string CheckVideoCodec(string ffmpeg, string vidparams)