From affbeafff39ec545c8c2e9cc3eab4ed3766e84d7 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Wed, 8 May 2024 17:29:54 +1200 Subject: [PATCH] FF-1524: Added more comic options --- ComicNodes/Comics/ComicConverter.cs | 3 +- ComicNodes/Comics/CreateComicInfo.cs | 5 +++ ComicNodes/Tests/ComicInfoTests.cs | 52 ++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/ComicNodes/Comics/ComicConverter.cs b/ComicNodes/Comics/ComicConverter.cs index 1585a4a4..68d51908 100644 --- a/ComicNodes/Comics/ComicConverter.cs +++ b/ComicNodes/Comics/ComicConverter.cs @@ -339,7 +339,8 @@ public class ComicConverter: Node var metadata = new Dictionary(); metadata.Add("Format", format); - metadata.Add("Pages", GetPageCount(args, format, file)); + if(GetPageCount(args, format, file).Success(out var count)) + metadata.Add("Pages", count); args.SetMetadata(metadata); args.Logger?.ILog("Setting metadata: " + format); diff --git a/ComicNodes/Comics/CreateComicInfo.cs b/ComicNodes/Comics/CreateComicInfo.cs index 378c98b6..3547c9fc 100644 --- a/ComicNodes/Comics/CreateComicInfo.cs +++ b/ComicNodes/Comics/CreateComicInfo.cs @@ -235,6 +235,11 @@ public class CreateComicInfo : Node // Publisher / Series (year?) / Title - #number (of #)- Issue Title.extension ComicInfo info = new(); info.Series = FileHelper.GetDirectoryName(libraryFile); + if (info.Series.ToLowerInvariant() is "annuals" or "specials") + { + // go up one more directory + info.Series = FileHelper.GetDirectoryName(FileHelper.GetDirectory(libraryFile)); + } var yearMatch = Regex.Match(info.Series, @"\((?(19|20)\d{2})\)"); int? year = null; diff --git a/ComicNodes/Tests/ComicInfoTests.cs b/ComicNodes/Tests/ComicInfoTests.cs index 421bca23..fb811efb 100644 --- a/ComicNodes/Tests/ComicInfoTests.cs +++ b/ComicNodes/Tests/ComicInfoTests.cs @@ -255,7 +255,59 @@ public class ComicInfoTests : TestBase Assert.AreEqual("X-Man - 2004.cbz", name.Value); } + [TestMethod] + public void AnnualsFolder() + { + var result = CreateComicInfo.GetInfo(Logger, + "/home/john/Comics/Marvel/X-Men/X-Man/Annuals/X-Man Annual 2004.cbz", + "/home/john/Comics", + true); + + TestContext.WriteLine(Logger.ToString()); + + Assert.IsFalse(result.IsFailed); + var info = result.Value; + Assert.IsNotNull(info); + Assert.AreEqual("Marvel", info.Publisher); + Assert.AreEqual("X-Man", info.Series); + Assert.AreEqual("Annual", info.Volume); + Assert.AreEqual(2004, info.Number); + + var xml = CreateComicInfo.SerializeToXml(info); + Assert.IsFalse(string.IsNullOrWhiteSpace(xml)); + TestContext.WriteLine(new string('-', 70)); + TestContext.WriteLine(xml); + + var name = CreateComicInfo.GetNewName(info, "cbz", 3); + Assert.AreEqual("X-Man - Annual 2004.cbz", name.Value); + } + [TestMethod] + public void SpecialsFolder() + { + var result = CreateComicInfo.GetInfo(Logger, + "/home/john/Comics/Marvel/X-Men/X-Man/Specials/X-Man Annual 2004.cbz", + "/home/john/Comics", + true); + + TestContext.WriteLine(Logger.ToString()); + + Assert.IsFalse(result.IsFailed); + var info = result.Value; + Assert.IsNotNull(info); + Assert.AreEqual("Marvel", info.Publisher); + Assert.AreEqual("X-Man", info.Series); + Assert.AreEqual("Annual", info.Volume); + Assert.AreEqual(2004, info.Number); + + var xml = CreateComicInfo.SerializeToXml(info); + Assert.IsFalse(string.IsNullOrWhiteSpace(xml)); + TestContext.WriteLine(new string('-', 70)); + TestContext.WriteLine(xml); + + var name = CreateComicInfo.GetNewName(info, "cbz", 3); + Assert.AreEqual("X-Man - Annual 2004.cbz", name.Value); + } [TestMethod] public void AnnualNoAnnual2() {