Refactor ChineseNfoRegistry to use asynchronous file reading and improve logging for episode files
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-03-19 14:42:49 +08:00
parent cde3ada5a9
commit ac51d09bc0

View File

@@ -100,9 +100,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
seasonFiles = seasonFiles.Where(x => !x.EndsWith("tvshow.nfo")).ToArray(); seasonFiles = seasonFiles.Where(x => !x.EndsWith("tvshow.nfo")).ToArray();
foreach (var seasonFile in seasonFiles) foreach (var episodeFile in seasonFiles)
{ {
var episodeContent = File.ReadAllText(seasonFile); var episodeContent = await File.ReadAllTextAsync(episodeFile);
var episodeXml = new XmlDocument(); var episodeXml = new XmlDocument();
episodeXml.LoadXml(episodeContent); episodeXml.LoadXml(episodeContent);
@@ -111,7 +111,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (completedNode != null && ignoreCompleted == false) if (completedNode != null && ignoreCompleted == false)
{ {
skippedCount++; skippedCount++;
Console.WriteLine($"{seasonFile} & 已完成"); Console.WriteLine($"{episodeFile} & 已完成");
continue; continue;
} }
@@ -120,7 +120,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (lockedNode != null && lockedNode.InnerText == "true" && ignoreLocked == false) if (lockedNode != null && lockedNode.InnerText == "true" && ignoreLocked == false)
{ {
skippedCount++; skippedCount++;
Console.WriteLine($"{seasonFile} & 已锁定"); Console.WriteLine($"{episodeFile} & 已锁定");
continue; continue;
} }
@@ -129,7 +129,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (seasonNode == null) if (seasonNode == null)
{ {
failedCount++; failedCount++;
Console.WriteLine($"{seasonFile} & 未找到 season"); Console.WriteLine($"{episodeFile} & 未找到 season");
continue; continue;
} }
@@ -138,21 +138,21 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (episodeNode == null) if (episodeNode == null)
{ {
failedCount++; failedCount++;
Console.WriteLine($"{seasonFile} & 未找到 episode"); Console.WriteLine($"{episodeFile} & 未找到 episode");
continue; continue;
} }
if (!int.TryParse(seasonNode.InnerText, out var season)) if (!int.TryParse(seasonNode.InnerText, out var season))
{ {
failedCount++; failedCount++;
Console.WriteLine($"{seasonFile} & season 不是数字"); Console.WriteLine($"{episodeFile} & season 不是数字");
continue; continue;
} }
if (!int.TryParse(episodeNode.InnerText, out var episode)) if (!int.TryParse(episodeNode.InnerText, out var episode))
{ {
failedCount++; failedCount++;
Console.WriteLine($"{seasonFile} & episode 不是数字"); Console.WriteLine($"{episodeFile} & episode 不是数字");
continue; continue;
} }
@@ -161,7 +161,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (titleNode == null) if (titleNode == null)
{ {
failedCount++; failedCount++;
Console.WriteLine($"{seasonFile} & 未找到 title"); Console.WriteLine($"{episodeFile} & 未找到 title");
continue; continue;
} }
@@ -204,7 +204,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
if (!isUpdate) if (!isUpdate)
{ {
skippedCount++; skippedCount++;
Console.WriteLine($"{seasonFile} & 无更新"); Console.WriteLine($"{episodeFile} & 无更新");
continue; continue;
} }
@@ -231,9 +231,14 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
try try
{ {
// 尝试放开Linux文件的读写权限 // 尝试放开Linux文件的读写权限
File.SetAttributes(seasonFile, FileAttributes.Normal); var fileInfo = new FileInfo(episodeFile)
Console.WriteLine("Write to " + seasonFile); {
episodeXml.Save(seasonFile); Attributes = FileAttributes.Normal,
IsReadOnly = false
};
fileInfo.Refresh();
episodeXml.Save(episodeFile);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -241,7 +246,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
continue; continue;
} }
Console.WriteLine($"{seasonFile} & {title} & {overview}"); Console.WriteLine($"{episodeFile} & {title} & {overview}");
await Task.Delay(10000); await Task.Delay(10000);
} }