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() {