更新 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);
|
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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
|
|||||||
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user