更新 ChineseNfoRegistry 类,增加季节 NFO 文件创建逻辑;更新 JobTriggerController 类,新增根据路径转换中文 NFO 的方法,支持季号和集号参数。
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 14s
Docker Build & Deploy / Deploy to Production (push) Successful in 4s

This commit is contained in:
孙诚
2025-04-21 13:23:42 +08:00
parent 84357b7f31
commit 8ceb88846c
2 changed files with 60 additions and 36 deletions

View File

@@ -118,6 +118,34 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
var seasonNfos = Directory.GetFiles(Path.GetDirectoryName(tv) ?? string.Empty, "season.nfo", SearchOption.AllDirectories); 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(
"""
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<season>
<plot></plot>
<outline></outline>
<lockdata></lockdata>
<seasonnumber>{0}</seasonnumber>
</season>
"""
, seasonNumber)
);
seasonNfos = seasonNfos.Append(seasonNfo).ToArray();
}
}
foreach (var season in seasonNfos) foreach (var season in seasonNfos)
{ {
try try
@@ -255,12 +283,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("locked"); isLockedNode = tvXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); tvXml.DocumentElement?.AppendChild(isLockedNode);
if (isLockedNode != null) isLockedNode.InnerText = "true";
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -269,12 +294,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("completed"); isCompletedNode = tvXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); tvXml.DocumentElement?.AppendChild(isCompletedNode);
if (isCompletedNode != null) isCompletedNode.InnerText = "true";
{
isCompletedNode.InnerText = "true";
}
} }
// 保存 // 保存
@@ -395,12 +417,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("locked"); isLockedNode = seasonXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); seasonXml.DocumentElement?.AppendChild(isLockedNode);
if (isLockedNode != null) isLockedNode.InnerText = "true";
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -409,12 +428,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("completed"); isCompletedNode = seasonXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); seasonXml.DocumentElement?.AppendChild(isCompletedNode);
if (isCompletedNode != null) isCompletedNode.InnerText = "true";
{
isCompletedNode.InnerText = "true";
}
} }
seasonXml.Save(seasonNfo); seasonXml.Save(seasonNfo);
@@ -557,12 +573,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("locked"); isLockedNode = episodeXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); episodeXml.DocumentElement?.AppendChild(isLockedNode);
if (isLockedNode != null) isLockedNode.InnerText = "true";
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -571,12 +584,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
else else
{ {
tvXml.CreateElement("completed"); isCompletedNode = episodeXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); episodeXml.DocumentElement?.AppendChild(isCompletedNode);
if (isCompletedNode != null) isCompletedNode.InnerText = "true";
{
isCompletedNode.InnerText = "true";
}
} }
// 保存 // 保存

View File

@@ -133,6 +133,20 @@ public class JobTriggerController : BaseController
return "OK"; 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] [HttpGet]
public string DiskMonitor() public string DiskMonitor()
{ {