From d882b88ee3823d4b0ffe859a48599b682c6fb805 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Sat, 20 Apr 2024 10:58:29 +1200 Subject: [PATCH] FF-1487 - fixing move file/copy flie --- BasicNodes/File/MoveFile.cs | 23 +++++--- BasicNodes/Tests/MoveTests.cs | 104 +++++++++++++++++++++++----------- FileFlows.Plugin.dll | Bin 134656 -> 134656 bytes FileFlows.Plugin.pdb | Bin 32716 -> 32716 bytes 4 files changed, 86 insertions(+), 41 deletions(-) diff --git a/BasicNodes/File/MoveFile.cs b/BasicNodes/File/MoveFile.cs index 6792d341..44ec4030 100644 --- a/BasicNodes/File/MoveFile.cs +++ b/BasicNodes/File/MoveFile.cs @@ -249,20 +249,19 @@ public class MoveFile : Node /// if the relative folder should be also be included, relative to the library /// the path and filename internal static (string? Path, string? Filename, string? Separator) GetDestinationPathParts(NodeParameters args, string destinationPath, string destinationFile = null, bool moveFolder = false) - { - string separator = args.WorkingFile.IndexOf('/') >= 0 ? "/" : "\\"; + {; + var destFilename = FileHelper.GetShortFileName(args.FileName); string destFolder = args.ReplaceVariables(destinationPath, stripMissing: true); + var separator = destFolder?.IndexOf('/') >= 0 ? "/" : "\\"; destFolder = destFolder.Replace("\\", separator); destFolder = destFolder.Replace("/", separator); - string destFilename = args.FileName.Replace("\\", separator) - .Replace("/", separator); - destFilename = destFilename.Substring(destFilename.LastIndexOf(separator, StringComparison.Ordinal) + 1); if (string.IsNullOrEmpty(destFolder)) { args.Logger?.ELog("No destination specified"); args.Result = NodeResult.Failure; return (null, null, null); } + args.Logger?.ILog("Destination Folder: " + destFolder); args.Result = NodeResult.Failure; if (moveFolder) // we only want the full directory relative to the library, we don't want the original filename @@ -296,9 +295,17 @@ public class MoveFile : Node destFilename = destFilename[..(destFilename.LastIndexOf(".", StringComparison.Ordinal) + 1)] + workingExtension; } - args.Logger?.ILog("Final destination path: " + destFolder); - args.Logger?.ILog("Final destination filename: " + destFilename); - + if (args.FileService?.GetType().Name == "MappedFileService") + { + args.Logger?.ILog("Final destination path (not mapped): " + destFolder); + args.Logger?.ILog("Final destination filename (not mapped): " + destFilename); + } + else + { + args.Logger?.ILog("Final destination path: " + destFolder); + args.Logger?.ILog("Final destination filename: " + destFilename); + } + return (destFolder, destFilename, separator); } } \ No newline at end of file diff --git a/BasicNodes/Tests/MoveTests.cs b/BasicNodes/Tests/MoveTests.cs index 8a582f5a..02bc6a9e 100644 --- a/BasicNodes/Tests/MoveTests.cs +++ b/BasicNodes/Tests/MoveTests.cs @@ -18,21 +18,52 @@ public class MoveTests { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); - + args.Variables["file.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Extension"] = "mkv"; + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.s01e15-1080p.mkv", dest); } + + [TestMethod] + public void MoveTests_Variable_Filename_Linux() + { + var logger = new TestLogger(); + string shortname = Guid.NewGuid().ToString(); + var args = new FileFlows.Plugin.NodeParameters($@"D:\fileflows\temp\runner\{shortname}.mp4", logger, false, string.Empty, null); + + args.Variables["file.Orig.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.Orig.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["file.Orig.Extension"] = "mkv"; + args.Variables["file.Orig.FullName"] = "/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv"; + + args.Variables["file.Name"] = shortname + ".mp4"; + args.Variables["file.NameNoExtension"] = shortname; + args.Variables["ext"] = "mp4"; + args.Variables["file.Extension"] = "mp4"; + + string dest = MoveFile.GetDestinationPath(args, @"\\10.0.0.1\media\converted", "{file.Name}"); + + Assert.AreEqual($@"\\10.0.0.1\media\converted\{shortname}.mp4", dest); + } + [TestMethod] public void MoveTests_Variable_FilenameExt() { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); - + args.Variables["file.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Extension"] = "mkv"; + // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}{file.Extension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.s01e15-1080p.mkv", dest); } [TestMethod] @@ -40,11 +71,15 @@ public class MoveTests { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); - + args.Variables["file.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Extension"] = "mkv"; + // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.NameNoExtension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.mkv", dest); } [TestMethod] @@ -52,11 +87,15 @@ public class MoveTests { var logger = new TestLogger(); var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); + args.Variables["file.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Extension"] = "mkv"; // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}{ext}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.s01e15-1080p.mkv", dest); } [TestMethod] @@ -64,32 +103,44 @@ public class MoveTests { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); + args.Variables["file.Orig.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.Orig.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Orig.Extension"] = "mkv"; + + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.Name}"); - string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileName}"); - - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.s01e15-1080p.mkv", dest); } [TestMethod] public void MoveTests_Variable_Original_FilenameExt() { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); - + args.Variables["file.Orig.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.Orig.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Orig.Extension"] = "mkv"; + // ensure we dont double up the extension after FF-154 - string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileName}{file.Orig.Extension}"); + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.Name}{file.Orig.Extension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.s01e15-1080p.mkv", dest); } [TestMethod] public void MoveTests_Variable_Original_NoExtension() { var logger = new TestLogger(); var args = new FileFlows.Plugin.NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", logger, false, string.Empty, null); - + args.Variables["file.Orig.Name"] = "tv4a-starwarsrebels.s01e15-1080p.mkv"; + args.Variables["file.Orig.NameNoExtension"] = "tv4a-starwarsrebels.s01e15-1080p"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Orig.Extension"] = "mkv"; + // ensure we dont double up the extension after FF-154 - string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileNameNoExtension}"); + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.NameNoExtension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.mkv", dest); + Assert.AreEqual(@"D:\test\tv4a-starwarsrebels.mkv", dest); } [TestMethod] @@ -98,29 +149,16 @@ public class MoveTests var logger = new TestLogger(); var args = new NodeParameters(@"\\tower\downloads\downloaded\tv\The.Walking.Dead.Dead.City.S01E04\some-file.mkv", logger, false, string.Empty, null); args.RelativeFile = @"The.Walking.Dead.Dead.City.S01E04\some-file.mkv"; + args.Variables["file.Name"] = "some-file.mkv"; + args.Variables["file.NameNoExtension"] = "some-file"; + args.Variables["ext"] = "mkv"; + args.Variables["file.Orig.Extension"] = "mkv"; string dest = MoveFile.GetDestinationPath(args, @"\\tower\downloads\converted\tv", null, moveFolder:true); Assert.AreEqual(@"\\tower\downloads\converted\tv\The.Walking.Dead.Dead.City.S01E04\some-file.mkv", dest); } - - /// - /// Tests that confirms additional files are moved - /// - [TestMethod] - public void MoveTests_AdditionalFiles() - { - var logger = new TestLogger(); - var args = new NodeParameters(@"/home/john/Videos/move-me/dir/basic.mkv", logger, false, string.Empty, null); - - var ele = new MoveFile(); - ele.AdditionalFiles = new[] { "*.srt" }; - ele.DestinationPath = "/home/john/Videos/converted"; - var result = ele.Execute(args); - var log = logger.ToString(); - Assert.AreEqual(1, result); - } } #endif \ No newline at end of file diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index 42a4c9f9219cccd0ad7fd96a27f4f640ad09d581..2c2097e7627de6abf6ff89959d425e9ea71d787d 100644 GIT binary patch delta 247 zcmZpe!_hE@V?qbZv|P2#jXhg?7^i#@c$(`h*86n3S65Z0+5fxKg|{1gWi%7eNHR!G zHaAU4F*PWX8y{F=5)|=_lBj z0tD=t4?cbSsmf!+Q@2lSvs;s=Yp^rfD?mkOz(j%Sg=g9prSc})8$If+xU;>TooOYr ze-eWMLn=cugE@mKLkbX@G8i+MF&Hvf0!1x>qR9-2KoMgG3m`8A$WLW30_(5<>oNqY VPX(&50LoYb)uwE(=VoeT0st7^PFMf{ delta 247 zcmZpe!_hE@V?qbZxy18J8+*3)Fi!a*;Ck7Mlf7%B*RrTXbMMF~I&3%i%4jB_k!EI* zVwq%;nwV;8lxSv_Y?5MPoRVf?VPt5LmS$p>Y+-6*mSSm;y1kE;$&8Vu^D#^R^b>4M z0RopNPkLGNWwU>CqC~)tg^gdPYp^rfD?ml-ouQ&Y_52$9*K*fHL>6T(j6Ar#ot5`zgtDnlX=n=%*yX)_>928yKsu`!TL1FEwC$`}I4G$1qq%Ub|d SgIFLF3>Z?k*K;#9G64YDf=&(q diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index fb535c17b09cf1ab4830b45d75222e82658728e3..c1ed1d5fd9c2abc0c15bad8d83565ac30e6532f7 100644 GIT binary patch delta 467 zcmV;^0WAK^{{hVZ0g!wYKLf$#?ecm^u;oVb2AhRrv0#>yv5;jre~kNt=A#I}i1U!I za~J8UEC?Ylyy#QCo?Vbi0nqQ;@PSt90{{T6lTAy*KoExS`4xjFMVhphn#PJy3l$GS zX^S4j!(?}oE^KyXKP>t8ZmKOUMadzvr+sJknGa@@q}QoMNdouio$i&S$e<(s&}faV zH^KtboM4L<4t~gMe?V|r%Q!^tgJ&C5CE1{ZYu*(?5>!|NLvIO$V%ivD4szPym(T`K zao7qeg91`p2cp=++=hM<2ausd=6F|aa$au7Gl{$vs)SW-9aWQ)TfC$~hBky&lPG#e zYpKd*eRuATr@y|Lu0B!KQ|FAxy`#&Ed6>;y>aC3z(w9PAe_VaEMX5rRKJ*>bBjA!G zp{3TGrhr#6_LMS+`^{-hc~*rs)vgwlf8eh3KCyJf`Dl1M$S6x04u|86r*zY&F|omj zaGYk0x6ZmSntSHD80T6zNnL>con^DMPsg99+3uIsqZg9Hn-Pv?Vb$jb%Zii(CPT(J zioO8>F99t9lX5y-C}J>WV>dNqWHmE3F*#*9H)CNlGdMY9H)S#~WjJMHF*RjjI5#waK~M3(q9-R;UuzjdfU0Pj2xFxeRRxt)@}* zPOQbckj>qBIG+8+=DPkQs+l=wMByD?^%h|^3#qp@UP@mIf7QGG=!#NYls@zwyhp$l zN+cFLb6NqfXzVFv7!TUhnewc-HuX*mk$>QBc$TwCks`tIh-4W}S$fNOo{xq(=V?as zahkEopu6^^(ackKiE(a(lXwZxzq4$Y_UZWZwA=l%e)K{zcr(J`JgoY{kg`VQfXYxY zj-qb?F99t9lX5y-C}uV|WI19qWnpDCGGR70V>DzmGh}8sI5IIfW@a=tV>mT5He@+4 JWwZ7=)