From 1e18ee8f0159149b4b001a82962059fe39403b37 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Fri, 6 May 2022 17:09:16 +1200 Subject: [PATCH] Finished off first iteration of image nodes --- Apprise/Apprise.csproj | Bin 2760 -> 2760 bytes BasicNodes/BasicNodes.csproj | Bin 3778 -> 3778 bytes ChecksumNodes/ChecksumNodes.csproj | Bin 2872 -> 2872 bytes CollectionNodes/CollectionNodes.csproj | Bin 3256 -> 3256 bytes DiscordNodes/DiscordNodes.csproj | Bin 2870 -> 2870 bytes EmailNodes/EmailNodes.csproj | Bin 3386 -> 3386 bytes Emby/Emby.csproj | Bin 2844 -> 2844 bytes FileFlows.Plugin.dll | Bin 40448 -> 40448 bytes FileFlows.Plugin.pdb | Bin 21992 -> 22004 bytes Gotify/Gotify.csproj | Bin 2752 -> 2752 bytes ImageNodes/ExtensionMethods.cs | 7 + ImageNodes/ImageInfo.cs | 10 ++ ImageNodes/ImageNodes.csproj | Bin 3128 -> 3232 bytes ImageNodes/ImageNodes.en.json | 26 +++- ImageNodes/Images/ImageBaseNode.cs | 72 ++++++++++ ImageNodes/Images/ImageFile.cs | 40 ++++++ ImageNodes/Images/ImageFlip.cs | 3 +- ImageNodes/Images/ImageFormat.cs | 3 +- ImageNodes/Images/ImageIsLandscape.cs | 18 +++ ImageNodes/Images/ImageIsPortrait.cs | 18 +++ ImageNodes/Images/ImageNode.cs | 10 +- ImageNodes/Images/ImageResizer.cs | 26 ++-- ImageNodes/Images/ImageRotate.cs | 3 +- ImageNodes/Tests/ImageTests.cs | 67 +++++++-- MetaNodes/MetaNodes.csproj | Bin 4504 -> 4504 bytes MusicNodes/MusicNodes.csproj | Bin 4228 -> 4228 bytes Plex/Plex.csproj | Bin 2844 -> 2844 bytes VideoNodes/VideoNodes.csproj | Bin 4098 -> 4098 bytes .../PluginInfoGenerator/FileFlows.Plugin.dll | Bin 40448 -> 40448 bytes .../PluginInfoGenerator/FileFlows.Plugin.pdb | Bin 21992 -> 22004 bytes .../FileFlows.ServerShared.dll | Bin 42496 -> 46080 bytes .../FileFlows.ServerShared.pdb | Bin 20812 -> 21852 bytes .../FileFlows.ServerShared.xml | 130 ++++++++++++++++++ .../PluginInfoGenerator/FileFlows.Shared.dll | Bin 71168 -> 71168 bytes .../PluginInfoGenerator/FileFlows.Shared.pdb | Bin 33092 -> 33156 bytes .../PluginInfoGenerator/FileFlows.Shared.xml | 25 ++++ .../PluginInfoGenerator.dll | Bin 15360 -> 15872 bytes .../PluginInfoGenerator.pdb | Bin 13452 -> 13524 bytes build/utils/spellcheck/ignoredwords.txt | 3 +- 39 files changed, 431 insertions(+), 30 deletions(-) create mode 100644 ImageNodes/ImageInfo.cs create mode 100644 ImageNodes/Images/ImageBaseNode.cs create mode 100644 ImageNodes/Images/ImageFile.cs create mode 100644 ImageNodes/Images/ImageIsLandscape.cs create mode 100644 ImageNodes/Images/ImageIsPortrait.cs diff --git a/Apprise/Apprise.csproj b/Apprise/Apprise.csproj index 3939804fa911f799560b33c563600d72d75e4f18..579701af8693a13e04f656cd096e8f63a3f3760c 100644 GIT binary patch delta 48 vcmX>hdO~!A4HK^kgC2ts5SlR9Fz8Q~W|Ew|hlyiy7Lyt$TxRo3CVdV71EmS- delta 48 vcmX>hdO~!A4HK_1gC2ts5E?SrFz8Q~W|Ew|hlyiy7Lyt$TxRo3CVdV70{sc% diff --git a/BasicNodes/BasicNodes.csproj b/BasicNodes/BasicNodes.csproj index 116c87a63af6b5ee30cf4e5ff500040c17ce50ac..ca76b362ba6d79ab7b6ba022ce8b15f9728cfb65 100644 GIT binary patch delta 36 icmX>kdq{S}6Gl!G20aENAT*i$mN5{)+w9I%%>w|pr3kM8 delta 36 icmX>kdq{S}6Gl#B20aENAT*r(mN5{)+w9I%%>w|pEeNLo diff --git a/ChecksumNodes/ChecksumNodes.csproj b/ChecksumNodes/ChecksumNodes.csproj index 1d99970ae2a1dc1b4e1b0d4245ba97786367c21d..f76b5fc7b56fdc76472a5827cd3f7be1d57ce24e 100644 GIT binary patch delta 51 ycmdlXwnJ>gAtqiE20aENAT(jHVbGtvkV$g#Jua@vYAk${m?b#jlA9Ho#W?^%B?`y@ delta 51 ycmdlXwnJ>gAtqj920aENAT(sKVbGtvkV$g#Jua@vYAk${m?b#jlA9Ho#W?^$aSFfy diff --git a/CollectionNodes/CollectionNodes.csproj b/CollectionNodes/CollectionNodes.csproj index 5627a2e967f607748ae059731aa0c2eaa012a643..d4f57c4158d4ee3e9e2dea5c18f93d6f478921e6 100644 GIT binary patch delta 52 zcmdlXxkGZpB}QHo20aENAT(jHVbGtvkx_DT91qvzJId@x delta 36 icmbOuHb-nj7Zay3gC2ts5E@RN%;b&WZGO&V$^ihIatG@G diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index f9d8833ffdea8289b7f2f25ea82c81e8541a663e..ecb4cbf2b0a81df4e98c1f7473a2809d324a55dc 100644 GIT binary patch delta 9692 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 EAGF?E1^@s6 diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 72c238121e3a6c75a883442cec5f443ca55aea3b..977e87b5f0e9efbf6809166e4ad274c51abbc91b 100644 GIT binary patch delta 894 zcmZwDT}TvB7zW^XMt5ibW_5EX*>%!PGbtm~b!(keQYbaID541JqDTr#+(N=7VrmI3 z$g(WDsO-l!FuO>0+k(P$FM^_?BJv^&3x%Q|FO)7Ss&_RCp##sH?|kQ+nU{IrBTV!N z?SVp11&~v@t8puUaJz9(AKOyX*)}i!ZTrz9hxgs-WE&f@Vpek|Ah6za;!?W#35z1K z_YMq*`rBd`#*5uBc-*j28o4Q(@@bKWN2d)Hr5+W_sG3&OdfH6eXeaHV;N(3O2Uxe# zF*;4>sEe*quSeB!o5el4Pmlleu@~(B{PQwHiHeMpL>d)-)_dtf$t*-E&ztBgX!9yK zMQ7GsmjxX1i8w=@6!s+{=1WGL9?(-7q&GB5 zpL_;Lr3TnZp(@%)jnqQtDN2uMgnp1yGoU~-!cS7E5$kkKLcM0fZfYi-TBuDkqffKo zp=RZ5!%IzOFqy$*ywmI$*HZ9HOJzU@tV<7mH5?*QSv&cZ(9>iSY;cOG78_<-0dpvmoiaGH;1wGju#1ow!xhTU^)QM#RK)ERI4#H$8&dfI zm!ipn6=G1qe35zo^%jUh2P5Z&D&$l+vC7E3;zVa*s8&{>il&ZO?S$|u(z9}rAjXn9 WhU$hnMf&_VlZCEG)7qva5%>*Aa<3== delta 891 zcmZwDYe*DP7zW^X#=Y;3?Z$4lHo0XgCR*8EY#QB2iCS-gL4i_G5EW<&UBI#y*N7;h zYzq>9SW!vZO~x&M6sbXkWMmYE5nTw$Ac(La%;;T>K0G_Q)Ni%v9%I`K>ca4OuRhD+Xyv#N>dG1)vDS*Jbs`+A)d630&lDhi( z#PG1!jWKUBCP?%p!%TKcq7+K^@#u^pW0_Az9tCL)mC^>Pq^-1*YNzhW*w6Y99ibC+ zhFa(Xwfp2SZnB8cJ$m?`j}5Rt{`X}QtR4P%8W}}?8P#;oKOY?=2jYDfngT8yr)D}& zZFH4x&~MV`xzI{`R=D6-!Y&jlE^JZamjxV9M4Y6v)T$)lx}rl5J)lQ4NH6F$eNgn6 zB;86qtfbI-+D;7=r4H(+5&A|JRgYBFfFhby3@8q(MpUUL?4aGWj~b{+HKSX#pjWkW zw&95?F_^?)5?-l^7*l8AyJ}}Z2Za21`1o)``d3e{ol|Q!j?L p;07^H;tMT>*=N z=?m|*Q~HH^VYAj{5iIH1J_A0|+<<_$0UM7=^>r2?qw#BW zC{!1AN+#Ig6tPaMnPUaa5f3{BaC#6BYaB=vVPp(g1_jvNtA zWQk1a5y1`7WWf@#-oc<5k)UMfZn=Sb-gqY`5|UhyMUw=ZSZ`oQ7ab`6EDUL}lBI$e X`xzZAeaA_ATo%&_E!yFVy$OE+?$fP} diff --git a/Gotify/Gotify.csproj b/Gotify/Gotify.csproj index 9d914b676b8493fe1a5a64865407d12eec510615..b06ec535d287bea756702b0e682c8e6f7df1712b 100644 GIT binary patch delta 48 vcmX>gdO&o84HK^kgC2ts5SlR9Fz8Q~W|Ew|hlyiy7Lyt$TxRo3CUp(~0Hq1i delta 48 vcmX>gdO&o84HK_1gC2ts5E?SrFz8Q~W|Ew|hlyiy7Lyt$TxRo3CUp(~|LzIO diff --git a/ImageNodes/ExtensionMethods.cs b/ImageNodes/ExtensionMethods.cs index 3fcad0a3..521b19de 100644 --- a/ImageNodes/ExtensionMethods.cs +++ b/ImageNodes/ExtensionMethods.cs @@ -3,4 +3,11 @@ internal static class ExtensionMethods { public static string? EmptyAsNull(this string str) => str == string.Empty ? null : str; + public static void AddOrUpdate(this Dictionary dict, string key, object value) + { + if (dict.ContainsKey(key)) + dict[key] = value; + else + dict.Add(key, value); + } } diff --git a/ImageNodes/ImageInfo.cs b/ImageNodes/ImageInfo.cs new file mode 100644 index 00000000..bc10064a --- /dev/null +++ b/ImageNodes/ImageInfo.cs @@ -0,0 +1,10 @@ +namespace FileFlows.ImageNodes; + +public class ImageInfo +{ + public int Width { get; set; } + public int Height { get; set; } + public string Format { get; set; } + public bool IsPortrait => Width < Height; + public bool IsLandscape => Height < Width; +} diff --git a/ImageNodes/ImageNodes.csproj b/ImageNodes/ImageNodes.csproj index a4d1ca61babf1083823a3a549b2774fb360c7162..746bc780368ae7aeb97f9144c7c245b942a85501 100644 GIT binary patch delta 248 zcmdlXu|RUe1SVb+20aENAT(jHVbGtP&m=i{88QJpfN delta 151 zcmZ1=xkF;Z1SVc%20aENAT(sKVbGtP&m=i{8 variables = null) + { + using var image = Image.Load(args.WorkingFile, out IImageFormat format); + var imageInfo = new ImageInfo + { + Width = image.Width, + Height = image.Height, + Format = format.Name + }; + + variables ??= new Dictionary(); + if (args.Parameters.ContainsKey(IMAGE_INFO)) + args.Parameters[IMAGE_INFO] = imageInfo; + else + args.Parameters.Add(IMAGE_INFO, imageInfo); + + variables.AddOrUpdate("img.Width", imageInfo.Width); + variables.AddOrUpdate("img.Height", imageInfo.Height); + variables.AddOrUpdate("img.Format", imageInfo.Format); + variables.AddOrUpdate("img.IsPortrait", imageInfo.IsPortrait); + variables.AddOrUpdate("img.IsLandscape", imageInfo.IsLandscape); + + args.UpdateVariables(variables); + } + protected void UpdateImageInfo(NodeParameters args, Image image, IImageFormat format, Dictionary variables = null) + { + var imageInfo = new ImageInfo + { + Width = image.Width, + Height = image.Height, + Format = format.Name + }; + + variables ??= new Dictionary(); + if (args.Parameters.ContainsKey(IMAGE_INFO)) + args.Parameters[IMAGE_INFO] = imageInfo; + else + args.Parameters.Add(IMAGE_INFO, imageInfo); + + variables.AddOrUpdate("img.Width", imageInfo.Width); + variables.AddOrUpdate("img.Height", imageInfo.Height); + variables.AddOrUpdate("img.Format", imageInfo.Format); + variables.AddOrUpdate("img.IsPortrait", imageInfo.IsPortrait); + variables.AddOrUpdate("img.IsLandscape", imageInfo.IsLandscape); + + args.UpdateVariables(variables); + } + + internal ImageInfo? GetImageInfo(NodeParameters args) + { + if (args.Parameters.ContainsKey(IMAGE_INFO) == false) + { + args.Logger?.WLog("No codec information loaded, use a 'Image File' node first"); + return null; + } + var result = args.Parameters[IMAGE_INFO] as ImageInfo; + if (result == null) + { + args.Logger?.WLog("ImageInfo not found for file"); + return null; + } + return result; + } +} diff --git a/ImageNodes/Images/ImageFile.cs b/ImageNodes/Images/ImageFile.cs new file mode 100644 index 00000000..b696ab4e --- /dev/null +++ b/ImageNodes/Images/ImageFile.cs @@ -0,0 +1,40 @@ +namespace FileFlows.ImageNodes.Images; + +using FileFlows.Plugin; + +public class ImageFile : ImageBaseNode +{ + public override int Outputs => 1; + public override FlowElementType Type => FlowElementType.Input; + + public override string Icon => "fas fa-file-image"; + + private Dictionary _Variables; + public override Dictionary Variables => _Variables; + public ImageFile() + { + _Variables = new Dictionary() + { + { "img.Width", 1920 }, + { "img.Heigh", 1080 }, + { "img.Format", "PNG" }, + { "img.IsPortrait", true }, + { "img.IsLandscape", false } + }; + } + + public override int Execute(NodeParameters args) + { + try + { + UpdateImageInfo(args, this.Variables); + + return 1; + } + catch (Exception ex) + { + args.Logger?.ELog("Failed processing MusicFile: " + ex.Message); + return -1; + } + } +} diff --git a/ImageNodes/Images/ImageFlip.cs b/ImageNodes/Images/ImageFlip.cs index 9602c20c..19501876 100644 --- a/ImageNodes/Images/ImageFlip.cs +++ b/ImageNodes/Images/ImageFlip.cs @@ -19,8 +19,7 @@ public class ImageFlip: ImageNode using var image = Image.Load(args.WorkingFile, out IImageFormat format); image.Mutate(c => c.Flip(Vertical ? FlipMode.Vertical : FlipMode.Horizontal)); var formatOpts = GetFormat(args); - SaveImage(image, formatOpts.file, formatOpts.format ?? format); - args.SetWorkingFile(formatOpts.file); + SaveImage(args, image, formatOpts.file, formatOpts.format ?? format); return 1; } diff --git a/ImageNodes/Images/ImageFormat.cs b/ImageNodes/Images/ImageFormat.cs index d4584c82..cd174a78 100644 --- a/ImageNodes/Images/ImageFormat.cs +++ b/ImageNodes/Images/ImageFormat.cs @@ -15,8 +15,7 @@ public class ImageFormat: ImageNode using var image = Image.Load(args.WorkingFile, out IImageFormat format); var formatOpts = GetFormat(args); - SaveImage(image, formatOpts.file, formatOpts.format ?? format); - args.SetWorkingFile(formatOpts.file); + SaveImage(args, image, formatOpts.file, formatOpts.format ?? format); return 1; } } diff --git a/ImageNodes/Images/ImageIsLandscape.cs b/ImageNodes/Images/ImageIsLandscape.cs new file mode 100644 index 00000000..82918ba5 --- /dev/null +++ b/ImageNodes/Images/ImageIsLandscape.cs @@ -0,0 +1,18 @@ +namespace FileFlows.ImageNodes.Images; + +public class ImageIsLandscape: ImageBaseNode +{ + public override int Inputs => 1; + public override int Outputs => 2; + public override FlowElementType Type => FlowElementType.Logic; + public override string Icon => "fas fa-image"; + + + public override int Execute(NodeParameters args) + { + var img = GetImageInfo(args); + if (img == null) + return -1; + return img.IsLandscape ? 1 : 2; + } +} diff --git a/ImageNodes/Images/ImageIsPortrait.cs b/ImageNodes/Images/ImageIsPortrait.cs new file mode 100644 index 00000000..ae9c1a9d --- /dev/null +++ b/ImageNodes/Images/ImageIsPortrait.cs @@ -0,0 +1,18 @@ +namespace FileFlows.ImageNodes.Images; + +public class ImageIsPortrait : ImageBaseNode +{ + public override int Inputs => 1; + public override int Outputs => 2; + public override FlowElementType Type => FlowElementType.Logic; + public override string Icon => "fas fa-portrait"; + + + public override int Execute(NodeParameters args) + { + var img = GetImageInfo(args); + if (img == null) + return -1; + return img.IsPortrait ? 1 : 2; + } +} diff --git a/ImageNodes/Images/ImageNode.cs b/ImageNodes/Images/ImageNode.cs index 8fb280c8..01c4828a 100644 --- a/ImageNodes/Images/ImageNode.cs +++ b/ImageNodes/Images/ImageNode.cs @@ -10,7 +10,7 @@ using SixLabors.ImageSharp.Formats.Webp; namespace FileFlows.ImageNodes.Images; -public abstract class ImageNode : Node +public abstract class ImageNode : ImageBaseNode { [Select(nameof(FormatOptions), 1)] public string Format { get; set; } @@ -24,6 +24,7 @@ public abstract class ImageNode : Node { _FormatOptions = new List { + new ListOption { Value = "", Label = "Same as source"}, new ListOption { Value = IMAGE_FORMAT_BMP, Label = "Bitmap"}, new ListOption { Value = IMAGE_FORMAT_GIF, Label = "GIF"}, new ListOption { Value = IMAGE_FORMAT_JPEG, Label = "JPEG"}, @@ -85,9 +86,14 @@ public abstract class ImageNode : Node return (format, newFile); } - protected void SaveImage(Image img, string file, IImageFormat format) + protected void SaveImage(NodeParameters args, Image img, string file, IImageFormat format, bool updateWorkingFile = true) { using Stream outStream = new FileStream(file, FileMode.Create); img.Save(outStream, format); + if (updateWorkingFile) + { + args.SetWorkingFile(file); + UpdateImageInfo(args, img, format, Variables); + } } } \ No newline at end of file diff --git a/ImageNodes/Images/ImageResizer.cs b/ImageNodes/Images/ImageResizer.cs index 10dd7226..6d6b2671 100644 --- a/ImageNodes/Images/ImageResizer.cs +++ b/ImageNodes/Images/ImageResizer.cs @@ -14,9 +14,9 @@ namespace FileFlows.ImageNodes.Images; public class ImageResizer: ImageNode { public override int Inputs => 1; - public override int Outputs => 2; + public override int Outputs => 1; public override FlowElementType Type => FlowElementType.Process; - public override string Icon => "fas fa-image"; + public override string Icon => "fas fa-expand"; [Select(nameof(ResizeModes), 2)] @@ -42,12 +42,15 @@ public class ImageResizer: ImageNode } [NumberInt(3)] - [Range(0, int.MaxValue)] + [Range(1, int.MaxValue)] public int Width { get; set; } [NumberInt(4)] - [Range(0, int.MaxValue)] + [Range(1, int.MaxValue)] public int Height { get; set; } - + + [Boolean(5)] + public bool Percent { get; set; } + public override int Execute(NodeParameters args) { using var image = Image.Load(args.WorkingFile, out IImageFormat format); @@ -65,15 +68,22 @@ public class ImageResizer: ImageNode } var formatOpts = GetFormat(args); + + float w = Width; + float h = Height; + if (Percent) + { + w = (int)(image.Width * (w / 100f)); + h = (int)(image.Height * (h / 100f)); + } image.Mutate(c => c.Resize(new ResizeOptions() { - Size = new Size(Width, Height), + Size = new Size((int)w, (int)h), Mode = rzMode })); - SaveImage(image, formatOpts.file, formatOpts.format ?? format); - args.SetWorkingFile(formatOpts.file); + SaveImage(args, image, formatOpts.file, formatOpts.format ?? format); return 1; } } diff --git a/ImageNodes/Images/ImageRotate.cs b/ImageNodes/Images/ImageRotate.cs index 821ec0e1..c0f45d6b 100644 --- a/ImageNodes/Images/ImageRotate.cs +++ b/ImageNodes/Images/ImageRotate.cs @@ -36,8 +36,7 @@ public class ImageRotate: ImageNode using var image = Image.Load(args.WorkingFile, out IImageFormat format); image.Mutate(c => c.Rotate(Angle)); var formatOpts = GetFormat(args); - SaveImage(image, formatOpts.file, formatOpts.format ?? format); - args.SetWorkingFile(formatOpts.file); + SaveImage(args, image, formatOpts.file, formatOpts.format ?? format); return 1; } diff --git a/ImageNodes/Tests/ImageTests.cs b/ImageNodes/Tests/ImageTests.cs index 7f3b3b1a..ed540bbf 100644 --- a/ImageNodes/Tests/ImageTests.cs +++ b/ImageNodes/Tests/ImageTests.cs @@ -2,31 +2,53 @@ using FileFlows.ImageNodes.Images; using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Runtime.InteropServices; namespace FileFlows.ImageNodes.Tests; [TestClass] public class ImageNodesTests { + string TestImage1; + string TestImage2; + string TempDir; + + public ImageNodesTests() + { + bool isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + if (isWindows) + { + TestImage1 = @"D:\videos\pictures\image1.jpg"; + TestImage2 = @"D:\videos\pictures\image2.png"; + TempDir = @"D:\videos\temp"; + } + else + { + TestImage1 = "/home/john/Pictures/fileflows.png"; + TestImage2 = "/home/john/Pictures/36410427.png"; + TempDir = "/home/john/src/temp/"; + } + } + [TestMethod] public void ImageNodes_Basic_ImageFormat() { - var args = new NodeParameters("/home/john/Pictures/fileflows.png", new TestLogger(), false, string.Empty) + var args = new NodeParameters(TestImage1, new TestLogger(), false, string.Empty) { - TempPath = "/home/john/src/temp/" + TempPath = TempDir }; var node = new ImageFormat(); node.Format = IMAGE_FORMAT_GIF; Assert.AreEqual(1, node.Execute(args)); } - + [TestMethod] public void ImageNodes_Basic_Resize() { - var args = new NodeParameters("/home/john/Pictures/fileflows.png", new TestLogger(), false, string.Empty) + var args = new NodeParameters(TestImage1, new TestLogger(), false, string.Empty) { - TempPath = "/home/john/src/temp/" + TempPath = TempDir }; var node = new ImageResizer(); @@ -35,13 +57,38 @@ public class ImageNodesTests node.Mode = ResizeMode.Fill; Assert.AreEqual(1, node.Execute(args)); } - + + [TestMethod] + public void ImageNodes_Basic_Resize_Percent() + { + var args = new NodeParameters(TestImage1, new TestLogger(), false, string.Empty) + { + TempPath = TempDir + }; + + var imgFile = new ImageFile(); + imgFile.Execute(args); + int width = imgFile.GetImageInfo(args).Width; + int height = imgFile.GetImageInfo(args).Height; + + var node = new ImageResizer(); + node.Width = 200; + node.Height = 50; + node.Percent = true; + node.Mode = ResizeMode.Fill; + Assert.AreEqual(1, node.Execute(args)); + var img = node.GetImageInfo(args); + Assert.IsNotNull(img); + Assert.AreEqual(width * 2, img.Width); + Assert.AreEqual(height / 2, img.Height); + } + [TestMethod] public void ImageNodes_Basic_Flip() { - var args = new NodeParameters("/home/john/Pictures/36410427.png", new TestLogger(), false, string.Empty) + var args = new NodeParameters(TestImage2, new TestLogger(), false, string.Empty) { - TempPath = "/home/john/src/temp/" + TempPath = TempDir }; var node = new ImageFlip(); @@ -53,9 +100,9 @@ public class ImageNodesTests [TestMethod] public void ImageNodes_Basic_Rotate() { - var args = new NodeParameters("/home/john/Pictures/36410427.png", new TestLogger(), false, string.Empty) + var args = new NodeParameters(TestImage2, new TestLogger(), false, string.Empty) { - TempPath = "/home/john/src/temp/" + TempPath = TempDir }; var node = new ImageRotate(); diff --git a/MetaNodes/MetaNodes.csproj b/MetaNodes/MetaNodes.csproj index 65c863fa82f3f56af6c47e1f95f4116c50708b74..6746368169e0a9cb1adc77c41b365a71df7da3bf 100644 GIT binary patch delta 36 icmbQCJVSZI6(&v-20aENAT*hLmnjgz+icF9$OizbaR?#+ delta 36 icmbQCJVSZI6(&w&20aENAT*qOmnjgz+icF9$Oiza`3M>S diff --git a/MusicNodes/MusicNodes.csproj b/MusicNodes/MusicNodes.csproj index 4434cbc99ec4ec3f4c0464864372aa6b6f037041..4066fe6bdf1bb6554549f5fee69305b06bec4a0f 100644 GIT binary patch delta 36 icmZosY*E~Bi;2^OL65-*2u&tGW(q{`Hrq10^8x^+dI#+Q delta 36 icmZosY*E~Bi;2^iL65-*2n{DcW(q{`Hrq10^8x^+0te*) diff --git a/Plex/Plex.csproj b/Plex/Plex.csproj index 7fdb861374d0ee9db4478a81844fa6c6713a8f75..5c1ddc9ada0ace8582d687631c29700bc8f5651e 100644 GIT binary patch delta 36 icmbOuHb-nj7ZaxmgC2ts5SmP$%;b&WZGO&V$^ihI>Id@x delta 36 icmbOuHb-nj7Zay3gC2ts5E@RN%;b&WZGO&V$^ihIatG@G diff --git a/VideoNodes/VideoNodes.csproj b/VideoNodes/VideoNodes.csproj index b656063c1085c535959f6618e6a5ad972439c56f..c4b1d75e0ed74610fd39af5cec4ee10b9ee75a26 100644 GIT binary patch delta 36 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 ZQ~IrXxxupfhQzmIG}zXC&#F@O{|7cVk$nIF delta 9527 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 diff --git a/build/utils/PluginInfoGenerator/FileFlows.Plugin.pdb b/build/utils/PluginInfoGenerator/FileFlows.Plugin.pdb index 0e42da96b8f8297bc6d0146000e35846cb265d92..82d703d9a129b838e9b930ee7d9b169c28743d0b 100644 GIT binary patch delta 894 zcmZwDT}V@590u^`oVo9v>2fF8JZYwhlp*R|&C`?=%FG!>6hYlYLQvui33n085qgtl zt>~ifbVAvMV{3L1rd|X^hGpbM78VLcA6_WkB-JyGLgC$H)6;&eXRx_YMqsH9fx3u_)Wvmz^*hvjBnhf%CUAjL%t=kTp6y zEC%0~Ixtu2gx2MRh0@7MIaEMJE*@Pr6qLIZY@r(3Nqgxa9j2pnoC1sY6r5t+L1*a_ zU8QciOHr2+!~+(O=rN7{=VPzf|M}--+A;;1Wyv%Oe5_B zRxC&Kt0U7ZI`XQZZ=DJhR1fW%{n|6qdoym_`s3l`+lG53!Ps}@Wub8<;5PyJZL{GQ z+x@|G$p8!NB5K6Om1e*g%3{Y0dp6u+qYYLOdd6^s3i4cxVhojVI~8^lvc<+UKES1D zFkzb*kg-l=-haLIV!+18`JqZF4R+M)xL2C&YzWm#G8EAePSnl|Z(@BriUcvC2~XBd Taf%K4?xzUdv6kH}8WH#nV7ITu delta 891 zcmZwDYe*DP7zW^X#=Y;3?Z$4lHo0XfCR*8EY#MhXMaWx)L4s0H5J_kX-LSN!HA0Fo z+k(U&R#1X=QPvHA6sbXkq+kSA5?u(%ASkgQ%;;T>Ki_OXpJ*L|}w2@qIUv|LXx4zt)mQqRDE z7#wpuG3idk42hmZ7|BWrltd{W9$heGtoO*srU2zrG3}&s+DnyGGj~tMG1d)qhR)L^ zYNcz`;gN&5%OXk-=<$C(HpKq)-ws~V|WaN2eRM8dha&(gHi}f97^f_>jTIedZ z(=EC~ze$_zKpP$2=zv!VI*_Y4ut$kq7H~olae*#Vn-YiHiUxi3h@Q|ey`XXWplC5m znoU}mNulkupXw=0ois?VX^Kp$7Rjm(c{Ho&P#9G8s89_!K!@lk)l;KtM6YT>ziQ@e z!8282Fp0q=yj0^csV>5I)yjZ22syFvvEhXDubyAq=hjX%E$Gi3=7WFpSB?ygpM`(^ z!uv?GcBNL>9qBO%rj!hi4j*Z$PrzHBg-0ZcCq2&cAH?R)@R+?sY7g`$>d_a#G98?e zEXPg#3fzd4r+pc%D5&q&CvCYGeK=TpQYjkQ70k8vzDen5iTseCXBa2yYE3}u>966@ zg4&>6GQa}6h^=Dv5;I^7x!Cc;?t)LOwjo}Go-v%EHLKGZ#TasPdok=LB#YHnWQwpO zU1Um^2yTc56V{4#HU>=%1tcqXx9Pa&j&(9a1(E}@XpmqL>vZgB!b63hh0#c~Xq_NN Xe}*TD-*JjOEs1J`*2t;SBXNHKfJLvz diff --git a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll index 853263affbd3488134d2e17039a25c93d62f05b8..650a0cf2ee5ec4f988324d7e25571e4606ba03c2 100644 GIT binary patch literal 46080 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 chWqFL^5M?7ecp*?SY4ZIA9L)grKiL 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 I(b?esFZqCK`v3p{ delta 5049 zcmZ`-32;^A6+ZXAHG4ur_6@>LcrW`(7D5(677`*AA)pWgeq7>~Q_zS2g zjuBIu&?F`p76Yb8q3$vxm8rIQ9JBA*e+XCUJU&)cylgz zQS|zPW`~&fNz2S09My5 zo&11Uz&XoC89*6O4J-ocfd=5NS=`V#+B$0-Z3lJ%dw>JLB_PN#j*@{apc+^N)H}G0 z=kcaT9p3af@RZ^gAL{hrR?x9irA0=SRMzIep0v1UTV|_VuH9ryorP98Pgj z5BK$_0;fNf0#%$5CqCA_d;{o+Gl2SlA;J!)t_nx4gRf7&edNvT7#-Toy~A2M_RU6*=Z4#xv%zto=@ zI*6_rn!-4W$3k;*Ewm83j_ror!6r+gDX#>~YU~%*M5PM1!7d})SUenjp29Q5C3~E! z4BiUGTL50Ea30+PKy9T);oM5ClFzLyR5+JktmJbqZ~Kv_AeCqd*~c2-3YIFIE2vkv zQ@rREw}QR5D_%Z^8UeMNcPgA)SxsJJac-qa;auMug*(M$?*!M~QSxx`m%;h7t^7#sx0|@Ymviu|9Pk>K0IOhMP zbWDMR4?^C`oG=xf&!TEzANVv`!8G)P`Al%G{B;>m1n1YcLUITAQP|6Y{dmDnS)S`V z0G`a8-~V*rAkP03nZWPy&`tdLn|LSY!IS?T@;%%S_G6N#qP|10`DQI#(4l9?im2{If#2kd;({Ak<34X@~4=)q{D#<3peJMbD=AQt=$OsR+epl~j~SMplq^Qz}X{0_G1LRmfn{9W)mgdGuKA~a z%qhxZ{H%CvpU=b`pkl5zG7;Ax^oI^J9dw%MUw{vO&smdw;P(Z1$(d0_I^T%v$4qA|Q!%Fto0(nlbtWYBmkZOkZyJe$!DY0eyhtjeTND?OQ6T?q9_W;C$PT|2R1E<{RH0h&N|_(3f9V@YmEsk9-#{u0-ySuL?@|>Yl~#wq9<# zrz1W2^l0>^(fWJ8xZ*3W9pCWQxtFTMzNk$xwp-V?tZi&*^>S-RL#ubaX13eMbxiGW zipJ<1)6|Ye(HXte*4fe3(cAH|Fvl!*+YgyVLrkf(8$^H1MDc#ib}eP_*4PVL*`Jq8 zd<1WrMt1i$>90?(Jbg82X?N7~%S+cZHp89Uydz?ZC+I!j56&qb z(aqgj?`y(RHYp%9$I7cTw1Drt;7E~GwkvkI*2{6NZ<`StpYB#UMoNUZQkECmcR}mB z>`vogfOm*V>su~z=2eQ%=iR48i95$)<6s==x zOf%b~Emj@h93c9u3qriezx~`YQB%?EKX6>eNORFnPhv!TZzXI>dpCYb_GD#d=cw6vD zKA-MN%^N0)@VeaKv-v4E`fo`Qcfx-zKlMic>LPKhE_d8{FI?J_YWy(0e0<_h2=Vv2 jio`bpapfgC#|My?Zr3S7Z!;Y8gMM`I3vsT%*YThe flow part an insstance of the plugin node + + + Plugin Service interface + + + + + Get all plugin infos + + all plugin infos + + + + Updates plugin info + + the plugin info + the updated plugininfo + + + + Download a plugin + + the plugin to download + the byte data of the plugin + + + + Gets the settings json for a plugin + + the name of the plugin package + the settings json + + + + Plugin service + + + + + Loads an instance of the plugin service + + an instance of the plugin service + + + + Download a plugin + + the plugin to download + the byte data of the plugin + + + + Get all plugin infos + + all plugin infos + + + + Gets the settings json for a plugin + + the name of the plugin package + the settings json + + + + Updates plugin info + + the plugin info + the updated plugininfo + This not yet implemented + + + + An interface of the System Service + + + + + Gets the version from the server + + the server version + + + + Gets the node updater binary + + the node updater binary + + + + Gets an node update available + + the current version of the node + if there is a node update available, returns the update + + + + A System Service + + + + + Gets or sets the loader for SystemService + + + + + Loads an instance of SystemService + + an instance of SystemService + + + + Gets the version from the server + + the server version + + + + Gets the node updater binary + + the node updater binary + + + + Gets an node update available + + the current version of the node + if there is a node update available, returns the update + diff --git a/build/utils/PluginInfoGenerator/FileFlows.Shared.dll b/build/utils/PluginInfoGenerator/FileFlows.Shared.dll index 186a6f83f1d6de7d32a42921b602428afd9643de..72bc19f78b34f55aa6faaffc183fe738882ec823 100644 GIT binary patch delta 27081 zcmc(o2Xs|+w*U9<+>)N$n{rc0yD2v}y&|0uP$>cmC@2a6qJT&+!NP=a6F>n)1rDGf zNC{TZ0l_vl5Rg%^fQpVF!hmHIhbM|%{D1d8zd)F>-g|4!`afp5&;IPafBRQYKR45| z$=B=4>@9u@=$%?_&ICkb}n768+cfMCx95r0TqNsL|q3q2|7z;jU0c_E{{NMiGV1 z3f)>6oNP-ChasBcn!{u}(?Xw}C_kEJhMQBvs*0k-Wi-2FYioAvB9T@R%k6VmMWW38 zVFQX{brFv)5~qvASVb(i&uJBjH3x*}!{+k%n&sku$r{p5w`PJI^>r!q<2+hQf!z%`b>H zno^1E*@d>8e5bvBD7=R6it|d0I=@7$(Uc}7j2yq+b4Jwy zGty$s*Hf=HFG#!D)AV6`fGF){ccpDiMq7@xJ4K=75ta}jc#}Nw@%EcQBjNG zY32glNOGEQWTIePV>f_5m}k$d~ZhJ z8?>yzYxs^~8>P;8F2MS(Uyi7TN6`@9P-wn;IlUFquoc#S7k3}W4KSpV=C9ATk>~3h zkhD+~7*1J+ezs=OVEMK^M3kzcX*h$_xCCKwJF+ z$oiGA7G@g0bEd{1ETC-dwnMMKA2A&x>Q})~@8ES9ZpGfksX{FMPS(S?+-ihzC#{;% z7HcB>0d(PXdly83;rotleE=n!#e(8z;oO@3p}n*yDE(u*K@>f$JeohXJ4BK7O6Jn+ zgun)@wiF__&9?@Xg(loJ7SoySX?PQ}wmv();RD`=dBXFr3kqHt;jCYas2E4IBP81H zTL-;hAe8k`c(KeXV=ty48vTw5atFDc^=&W}hBW43>BWQ`?jkl+8X6PqbO*-IheMqOPG`Lz-a}H@?+)=R7av!H=#Iq{igr^>iGxg5@Xu)a z8GY=EB~HdWoX?kmvh@$KconO2xD+RDk)p`pEqD6>OD2XR9JXz3-= zB3tud*~T>wlS(8jkW2{B_tG+%}qK_{MMp-{2VD*$f(qq&XdWyB98= z<2Pk%Yko_%_GX+FVRtmYBil%O^FC4Hn)l0grd7`8v0BcQXpO^_2JeSX-@7n1>&P~+^;X&^j&bh?zc@%0Db%fVKVu*m9g9zHD?~LqiiBz7OG$ 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 YyAkS{XYi@>&o*Ojk7w|Ivh=R delta 26760 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 m_#WRk|n;{1PIJ_UyW delta 3452 zcmZ9O3s6+&701uL?6SKo%Uc0qAFR9<6%|lq6&4nj1qF>oh@(Lu8?{tMM6LKh7BHA< z;`7s(H1!eF&LpPkXg959IzBS38phZ*PSR1^>5%9cTOTbpc66G={?Fxtcf33Qd(Q8i z^F8kUzI*S!yhZ*)pS-)^g`4?A?Prx^?C9HH72#bRr$>`1(4!3%`eb ze|>cYY+E7G)oQS}t^GxCcSPrjqf`D@(ZBc7pD&~wTYun3Tkr4Los`@l5p|&7ZLra( zTLPN{+rQ`Ic>R}fPVc!kQ_mIiLdnvAF<9!cQqW_g*(EmG3cCZ^2fYPJ7?j9PYfJ1j zZl;}%dhGNbbO`(l=s5h7&>1MU)J|3?9lBmY&BYi_kuggIZyi z6*+=*w%9?dN_n6(>MTv8ZfHAn3_1awg3dx0pexWdXb}1uy05fzVxmqmDw8$S!%{O% zDl=0rB+9s718piY(B(1%eGdIqiE*3{@qsxeXds`L!9W4U8mZlDr0dXgDP+QqKAsjrUt)w+gupLx^D7EQ=gx^;KNMY{ASt>9q=3IkPXBS8_Q)sH1 zF(7+addjijduXK1-`B8F=yQCU_RCQJji!AZ_@Snr`~RMe9)|k za0R~-LxEtd zhHEuE7Cv{v`5CAm2cHLt$ApX2_Tk_J4I4!N#Ec2n(L6t*N%B+ngOjx^zL;o_^&pz6 ziF$;7l08_7s2x$aI@Ut4L&H2jr<^vL?^k&y>a*e3s5}eY2tN@TkNRS@KVEC*67YKD z-ca)%@OGjgZB+wa1nk&|E#P!Cs8Bmd1!rn_12{`|j^_DhWowvM)AbDJX!tzx6Tp6@ z|KRWyOdJgm@#>7Q1^zUZtI&Wup9Q!Xg%NI0y&-LaC?le zEdMkFYSa$rAU48$JNXKyBVViL=RLzbVb0G*J`4UBs1Q%gJhgt0%JacC_-!ix036H% z@Qk=Y9RjoAm#Vw~+zg+;beyjTuY;ce%>Xxm`QSa|1}{_@A7Pp$XOA-PkrEB3fIYI2 z^L+h8Ji{_Maqnx2Wq|%dET)6RQl2161ASk zYmj5X!Qm_5M$apOr@RPHx>cE|zg>3X@IzN_GANaU)_fX#$>Yk9DWW%5KUMjmc>0d8s` zU$@*OC(12yk{poj@=`fjUM`Q5Tjdmag`6s9;X5}oA`AUCMc$w=DvAh`!o-e(w7Nlj zSC>{gstoi_Wi!sVDv#jo_YdOS=07sWKp*)BalYYq)ELN8)r|8soQ)J-eFVO{dJyNA zsvWfk+F9L<^Qn+DEnny858Sx?e$C@`6%o54eksf|UTr--*!A<*_8)w*zsdV;$3d~6 zsNS*5F*|X?P~*9aAG^Qk>j{5!ZSc*ad1Bn8M+dC;F6ACb6az&8hjrDbi#{02`zqvI z`R}}C*S-I2f5laJrP8z}r}p+|n{2(I8h1{ZV_Rff!m^)iy!~N8aDL$A-{+-m?{e24 zb>{!9^U=US`xKjaz4$MV_xq;(=4AI{Tm18fx7@uocl8C`>0QNd?vKbnye0bZ)ghO7 zt)$)&z1E$6{YiXz>>1;}y8kTs@{P<7KXqPAUl{mpYt%}K33gRZQ8IzchAy!t66`%N{#qLgL?Rn|!9WxSH zN%1k*F3%~oDZ}HX43C$Zp#*K2{B6s0S}gdO8N(@3x4}q7vJr1a-3G2GNDxDvSEhek zhgbgexC8?w>D{6RJ+m#hwl8b+Y>&3mUThasZ`Q{mtM_9Uxr7|(6 z+bfleo!!lnPyDMpUGj^BV2#u$T7oXANxT|#g|+njPMi#Gwpn#LozX@;dn2ff=E!)z zPd8$AIedfTWbsl@Zf@W>UNM)TzCbD7B#WWGz-^qv@E++4Bw=pK!O#0pm^jyyFD(_{ g^thzu!q)4OT18c_D{h4W*{E4Pd-;lLClwR@AGGlfqyPW_ diff --git a/build/utils/PluginInfoGenerator/FileFlows.Shared.xml b/build/utils/PluginInfoGenerator/FileFlows.Shared.xml index 0fffa020..d64d47ab 100644 --- a/build/utils/PluginInfoGenerator/FileFlows.Shared.xml +++ b/build/utils/PluginInfoGenerator/FileFlows.Shared.xml @@ -4,6 +4,31 @@ FileFlows.Shared + + + Clones an object + + + + + Checks if objects are teh same reference + + + + + Checks if two objects are equal + + first object + second object + If the objects are ruqla + + + + Gets a hashcode of an object + + the object + the objec hashcode + Gets or sets optional place holder text, this can be a translation key diff --git a/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll b/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll index 83b26d5bf2e8e2596f3973b607d3025bc77ee455..87d0fd88aa96d5555b021c9d4130b747ccefdf7c 100644 GIT binary patch delta 1390 zcmY+Ee{2**6vw}_JKNjt-L-pcX|F#B*K4nLz1t?|^^~+&Z46W)0sF%P1S&Prh_ShY zmZHR#YXut-A-xP})JTX*LWm~n86qJXjEeG?AXaK(D*mCt7$y3bZH)N#c1YtSGxI** zH}Acf-JP9$W^#Pyg>d)m_F2ew9btG`5=fJvyJB5`;mjuXgi!EQ_+c#XJj#7W&-a2WV2D;jsj;Cjv0ya-d91wI_?cimkG}VnRFb z9jhmwPj6GI;^LmNbK>u^W9)r##8X#iQivy)0Sw>hCK~7vnc9+Bwq$yiOnRiZ!{{k+rTWMn zRDZ&7?AWuEINo!)m6TWo*=nrPQKCS7lH+wMPB8&BHcqM$EJa4DM~Za%HzPG89~bu- zhn0?Difq~s%+YK*_Q0NzC$mqCI(xs-0DPs8mKnf%E6Gn<)BTxsYiPb8y8Nrl+sHaf z{lVgt|G1j}rG(`<8@KRfiKc@sMj5K` zwM%+{XNayzs^ccnbxD7CGFXlqk`_HC(VuyV)p`ciSdi4Jn?y>?DLAeF;?1B2hNQo| zCXpqnpOOYqFKH_!4We1n^OUm|wxr{fvle$sI-_P#hpt%OEpb*g345e-m9LZ6W22-s zzI%zbxKuiC13oX&MQrhB)dtK-vXr%a1!m~&0#o`Wqn|e-8F%O+e&B;dhf3r=wPqCJ zaOxL=wy~2piVOr4h`Jw{`P9|p#71SGL28KfNkidZyY1kZMv&=yHmq$&fmwP?tDon$akV$ zWK&^t-OG>84n@9MFZ9bD-TNZb;$-UaloVeZkRs*o`!TM6=l|rlTYIlw+xQ8> delta 1170 zcmY+EYiJZ#6vzK}c4l{W_Q52Z$8H{Vvzufet{OMNSGAF9Y*Lbvs1p-ys$awk;%cHG z5>3=J1hvKGHa;MrsHH_L`LHD_B19A);1?etqQu7s!4?d@N{LiGGjqQKJ^FQ;S zGt9ly-`l_A&`{*{tHxsx*AqnGVKqRS5~`it*_J)i&Z;d4a!o4zppNb(PF|OU15?0chTyc8Wf?nps7&9lMW9*plfWF7C*5(!^i5%E~ic zv~u_SKryqHf*KD|+!iJKfWl{~MG2(dri(-{lnl zu%qw4N?Id}32zpD)X>|T^p{pB>lhN$<_*hvXpGsK?wKLy<9CY&gVmZ70gT$D=E(-p zIYA}l5x}^hmo5VZxFKlDr4!xm6Ii4gD8vIn2~{V0Cg{1xKoR~H^xC5ny%DsWOpEbe z&}uR*h8#B=9aMiJ&mg>lhRHLCLP2L720|#0_t~Xm4xO-Ch;zLQwT6pADw8 zALS@QpNSO~?SqC*q$LC;vDs0H20?wKRiQf zRe`GT=Foo6fFmDgl@pFN_&WDAO@y`k;B{#bqAT01flwe<1Bcn)_=b`iu17{CgumH;wFSe>?JRc#3#Iw&hfDoixy3$S2eVVUx8`8!CZ&46-BI*zpNe4`R7b2Qt#|s-oiCuC1@x_ln}iTmJnnTk<@wI?ZWT;&)YrE<=iJ2SPl$kH#DgM zk}m=HIeQl7e?8l779VR&$Z zqRrdNauINbkAO}@kSw&9^hhJLDCq$Khypd3fPe+Nj7n_AI00iFkvFNCL^`l17IW-r zlGUnMO8VtQE=25sf$aE(BhRAo*&;I&ijeHsyRsPOYb@T z+TW21Tm7-PFQ&Wadp{oi{l?Qj@Yw1~;6)QJ=j(jbx-+kJ3!Va8_blf)Zmm{_bU6oX ziGgA1hQ}g>^qe(!>h)*V@Uk$ms`%VWSukjM)?To&F3ssJ){WfzLtrOx@~gW%RQsX) zQAX&(=82M3`J2AaNrt7i%zSeJCm3KC#cdd8;*LlQm?>znq}4z)753u2 z0S;m>nvBp$aWy9Pj!7jDTtX@ZD?QEup@KM!7bZizEaiLSoUIhR5X;6`nQ>AugN1?~ zvheRh3^>hpHcc}_k{Da`&@XgAw`ta^tdCAnJ8wu zm=TyUDxQ&YQfpQYX_3aV#(iVkgE?`mhz&xmVJl1*{4Df|cRVaCF5NIEwMq-L0LM77kZs#0+=l_2$=e*~=%mg|EJ$Zg# z0)Vw0AV&cB2lO*Qc73z;viDK9}S!MIGsxTwDI6vn?i*LKf@ zy2?XsM^{4?=B28}Pv3fb%xV|bx{*V@ky0*~a$G}4*hydtSwz}0u?7SlW)c`g#*lGj z3i*J1M&^*8$Re_aY#@S*KoX)yOl%BLfZe44KN3bJV>y;*7lC!`Q-}mMiNpyyG^zOS ztYDEfBc?2;0Jo@sU5J+&NE_Eg`-s=l#{nck0we6<<5TY)FF2XD6fJEcYCKF&P75PH1is|$$D z<6V_Y|1N)t+WMofH)d-W_DAeHbtk0?bpbI(k6UiR1i(c1;92rMqw4MV%#&uNgAC>#Z(&PED3^scwjpXKVBAw42F^6Jr2*Hq-b)Z(Wj;xkK O78V2_(D6K+82ktClEHoe diff --git a/build/utils/spellcheck/ignoredwords.txt b/build/utils/spellcheck/ignoredwords.txt index 20afc093..6a0a0c59 100644 --- a/build/utils/spellcheck/ignoredwords.txt +++ b/build/utils/spellcheck/ignoredwords.txt @@ -83,4 +83,5 @@ Emby revenz Fenrus Plex-Token -analyze \ No newline at end of file +analyze +px \ No newline at end of file