更新 ChineseNfoRegistry 类,增加季节 NFO 文件创建逻辑;更新 JobTriggerController 类,新增根据路径转换中文 NFO 的方法,支持季号和集号参数。
This commit is contained in:
@@ -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(
|
||||
"""
|
||||
<?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)
|
||||
{
|
||||
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";
|
||||
}
|
||||
|
||||
// 保存
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user