diff --git a/ComicNodes/Comics/CreateComicInfo.cs b/ComicNodes/Comics/CreateComicInfo.cs index 7d3fca78..378c98b6 100644 --- a/ComicNodes/Comics/CreateComicInfo.cs +++ b/ComicNodes/Comics/CreateComicInfo.cs @@ -187,6 +187,10 @@ public class CreateComicInfo : Node { name += " - Annual " + info.Number; } + else if (info.Number > 1960) + { + name += " - " + info.Number; + } else { // Pad the number with leading zeros based on the specified number of digits @@ -234,8 +238,9 @@ public class CreateComicInfo : Node var yearMatch = Regex.Match(info.Series, @"\((?(19|20)\d{2})\)"); int? year = null; + bool yearInFolder = yearMatch.Success; - if (yearMatch.Success) + if (yearInFolder) { year = int.Parse(yearMatch.Groups["year"].Value); info.Volume = year.ToString(); @@ -272,6 +277,12 @@ public class CreateComicInfo : Node info.Number = year.Value; return info; } + + if (year != null && yearInFolder == false) + { + info.Number = year; + return info; + } return Result.Fail("Invalid filename: " + shortname); } diff --git a/ComicNodes/Tests/ComicInfoTests.cs b/ComicNodes/Tests/ComicInfoTests.cs index 0e3c60f0..421bca23 100644 --- a/ComicNodes/Tests/ComicInfoTests.cs +++ b/ComicNodes/Tests/ComicInfoTests.cs @@ -229,6 +229,58 @@ public class ComicInfoTests : TestBase Assert.AreEqual("X-Man - Annual 2004.cbz", name.Value); } + [TestMethod] + public void AnnualNoAnnual() + { + var result = CreateComicInfo.GetInfo(Logger, + "/home/john/Comics/Marvel/X-Men/X-Man/X-Man 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(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 - 2004.cbz", name.Value); + } + + + [TestMethod] + public void AnnualNoAnnual2() + { + var result = CreateComicInfo.GetInfo(Logger, + "/home/john/Comics/Zenoscope/Grimm Fairy Tales Specials/Grimm Fairy Tales 2016 Special (2016) (Digital).cbz", + "/home/john/Comics", + true); + + TestContext.WriteLine(Logger.ToString()); + + Assert.IsFalse(result.IsFailed); + var info = result.Value; + Assert.IsNotNull(info); + Assert.AreEqual("Zenoscope", info.Publisher); + Assert.AreEqual("Grimm Fairy Tales Specials", info.Series); + Assert.AreEqual(2016, 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("Grimm Fairy Tales Specials - 2016.cbz", name.Value); + } // [TestMethod] public void PhysicalFileTest() { diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index 0076af7f..8348915c 100644 Binary files a/FileFlows.Plugin.dll and b/FileFlows.Plugin.dll differ diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 41f9dad2..b8ad2443 100644 Binary files a/FileFlows.Plugin.pdb and b/FileFlows.Plugin.pdb differ