From 8ceb88846c60210fd9c65c99d9ce55964e74c412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E8=AF=9A?= Date: Mon, 21 Apr 2025 13:23:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20ChineseNfoRegistry=20?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AD=A3=E8=8A=82=20NFO=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=EF=BC=9B?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=20JobTriggerController=20=E7=B1=BB=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B9=E6=8D=AE=E8=B7=AF=E5=BE=84=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E4=B8=AD=E6=96=87=20NFO=20=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=AD=A3=E5=8F=B7=E5=92=8C=E9=9B=86?= =?UTF-8?q?=E5=8F=B7=E5=8F=82=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Service/Jobs/ChineseNfoRegistry.cs | 82 +++++++++++-------- .../Controllers/JobTriggerController.cs | 14 ++++ 2 files changed, 60 insertions(+), 36 deletions(-) diff --git a/src/Service/Jobs/ChineseNfoRegistry.cs b/src/Service/Jobs/ChineseNfoRegistry.cs index 5a59793..4c0068e 100644 --- a/src/Service/Jobs/ChineseNfoRegistry.cs +++ b/src/Service/Jobs/ChineseNfoRegistry.cs @@ -118,6 +118,34 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } var seasonNfos = Directory.GetFiles(Path.GetDirectoryName(tv) ?? string.Empty, "season.nfo", SearchOption.AllDirectories); + // 如果seasonNfos为空,则创建 + if (seasonNfos.Length == 0) + { + var sseasons = Directory.GetDirectories(Path.GetDirectoryName(tv) ?? string.Empty, "Season *", SearchOption.AllDirectories); + + var sseasonsNumbers = sseasons.Select(x => x.Split("Season ", StringSplitOptions.None)[1]).Select(int.Parse).ToList(); + + foreach (var seasonNumber in sseasonsNumbers) + { + var seasonNfo = Path.Combine(Path.GetDirectoryName(tv) ?? string.Empty,$"Season {seasonNumber}", "season.nfo"); + + await File.WriteAllTextAsync(seasonNfo, string.Format( +""" + + + + + + {0} + +""" + , seasonNumber) + ); + + seasonNfos = seasonNfos.Append(seasonNfo).ToArray(); + } + } + foreach (var season in seasonNfos) { try @@ -255,12 +283,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("locked"); - isLockedNode = tvXml.SelectSingleNode("//locked"); - if (isLockedNode != null) - { - isLockedNode.InnerText = "true"; - } + isLockedNode = tvXml.CreateElement("locked"); + tvXml.DocumentElement?.AppendChild(isLockedNode); + isLockedNode.InnerText = "true"; } if (isCompletedNode != null) @@ -269,12 +294,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("completed"); - isCompletedNode = tvXml.SelectSingleNode("//completed"); - if (isCompletedNode != null) - { - isCompletedNode.InnerText = "true"; - } + isCompletedNode = tvXml.CreateElement("completed"); + tvXml.DocumentElement?.AppendChild(isCompletedNode); + isCompletedNode.InnerText = "true"; } // 保存 @@ -395,12 +417,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("locked"); - isLockedNode = tvXml.SelectSingleNode("//locked"); - if (isLockedNode != null) - { - isLockedNode.InnerText = "true"; - } + isLockedNode = seasonXml.CreateElement("locked"); + seasonXml.DocumentElement?.AppendChild(isLockedNode); + isLockedNode.InnerText = "true"; } if (isCompletedNode != null) @@ -409,12 +428,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("completed"); - isCompletedNode = tvXml.SelectSingleNode("//completed"); - if (isCompletedNode != null) - { - isCompletedNode.InnerText = "true"; - } + isCompletedNode = seasonXml.CreateElement("completed"); + seasonXml.DocumentElement?.AppendChild(isCompletedNode); + isCompletedNode.InnerText = "true"; } seasonXml.Save(seasonNfo); @@ -557,12 +573,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("locked"); - isLockedNode = tvXml.SelectSingleNode("//locked"); - if (isLockedNode != null) - { - isLockedNode.InnerText = "true"; - } + isLockedNode = episodeXml.CreateElement("locked"); + episodeXml.DocumentElement?.AppendChild(isLockedNode); + isLockedNode.InnerText = "true"; } if (isCompletedNode != null) @@ -571,12 +584,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry } else { - tvXml.CreateElement("completed"); - isCompletedNode = tvXml.SelectSingleNode("//completed"); - if (isCompletedNode != null) - { - isCompletedNode.InnerText = "true"; - } + isCompletedNode = episodeXml.CreateElement("completed"); + episodeXml.DocumentElement?.AppendChild(isCompletedNode); + isCompletedNode.InnerText = "true"; } // 保存 diff --git a/src/WebApi/Controllers/JobTriggerController.cs b/src/WebApi/Controllers/JobTriggerController.cs index ddb5a16..9e929e0 100644 --- a/src/WebApi/Controllers/JobTriggerController.cs +++ b/src/WebApi/Controllers/JobTriggerController.cs @@ -133,6 +133,20 @@ public class JobTriggerController : BaseController return "OK"; } + + [HttpGet] + public string ConvertChineseNfoByPath( + string path, + string? seasonNumber = null, + string? episodeNumber = null, + bool ignoreLocked = true, + bool ignoreCompleted = true) + { + _chineseNfoRegistry.Job(path: path, seasonNumber: seasonNumber, episodeNumber: episodeNumber, ignoreLocked: ignoreLocked, ignoreCompleted: ignoreCompleted); + + return "OK"; + } + [HttpGet] public string DiskMonitor() {