Improve error handling and logging in ChineseNfoRegistry job methods; adjust delay duration for TMDB API calls
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 12s
Docker Build & Deploy / Deploy to Production (push) Successful in 4s

This commit is contained in:
孙诚
2025-04-16 18:54:25 +08:00
parent bf4faca1a7
commit ec3434da82

View File

@@ -93,24 +93,43 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
foreach (var tv in tvNfos) foreach (var tv in tvNfos)
{
try
{ {
await HandleTv(tv); await HandleTv(tv);
}
catch (Exception e)
{
_logger.LogError(e, "ChineseNfoRegistry.Job() HandleTv() error");
}
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);
foreach (var season in seasonNfos) foreach (var season in seasonNfos)
{
try
{ {
await HandleSeason(tv, season); await HandleSeason(tv, season);
}
catch (Exception e)
{
_logger.LogError(e, "ChineseNfoRegistry.Job() HandleSeason() error");
}
var episodeNfos = Directory var episodeNfos = Directory
.GetFiles(Path.GetDirectoryName(season) ?? string.Empty, "*.nfo", SearchOption.AllDirectories) .GetFiles(Path.GetDirectoryName(season) ?? string.Empty, "*.nfo", SearchOption.AllDirectories)
.Where(x => !x.EndsWith("season.nfo")) .Where(x => !x.EndsWith("season.nfo"))
.ToList(); .ToList();
foreach (var episode in episodeNfos) foreach (var episode in episodeNfos)
{
try
{ {
await HandleEpisode(tv, season, episode); await HandleEpisode(tv, season, episode);
} }
catch (Exception e)
{
_logger.LogError(e, "ChineseNfoRegistry.Job() episodeNfo is null or empty");
}
}
} }
} }
@@ -173,6 +192,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
sorttitleNode.InnerXml = $"<![CDATA[{tvInfo["name"]}]]>"; sorttitleNode.InnerXml = $"<![CDATA[{tvInfo["name"]}]]>";
} }
_logger.LogInformation("ChineseNfoRegistry.Job() tvInfo: {tvInfo}", tvInfo["name"]);
} }
if (tvInfo["overview"] != null) if (tvInfo["overview"] != null)
@@ -188,6 +209,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
outlineNode.InnerXml = $"<![CDATA[{tvInfo["overview"]}]]>"; outlineNode.InnerXml = $"<![CDATA[{tvInfo["overview"]}]]>";
} }
_logger.LogInformation("ChineseNfoRegistry.Job() tvInfo: {tvInfo}", tvInfo["overview"]);
} }
if (tvInfo["poster_path"] != null) if (tvInfo["poster_path"] != null)
@@ -220,7 +243,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("locked"); tvXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); isLockedNode = tvXml.SelectSingleNode("//locked");
isLockedNode!.InnerText = "true"; if (isLockedNode != null)
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -231,7 +257,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("completed"); tvXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); isCompletedNode = tvXml.SelectSingleNode("//completed");
isCompletedNode!.InnerText = "true"; if (isCompletedNode != null)
{
isCompletedNode.InnerText = "true";
}
} }
// 保存 // 保存
@@ -305,18 +334,21 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
var titleNode = seasonXml.SelectSingleNode("//sorttitle"); var titleNode = seasonXml.SelectSingleNode("//sorttitle");
if (titleNode != null && seasonInfo["name"] != null) if (titleNode != null && seasonInfo["name"] != null)
{ {
_logger.LogInformation("ChineseNfoRegistry.Job() seasonInfo: {seasonInfo}", seasonInfo["name"]);
titleNode.InnerXml = $"<![CDATA[{seasonInfo["name"]}]]>"; titleNode.InnerXml = $"<![CDATA[{seasonInfo["name"]}]]>";
} }
var plotNode = seasonXml.SelectSingleNode("//plot"); var plotNode = seasonXml.SelectSingleNode("//plot");
if (plotNode != null && seasonInfo["overview"] != null) if (plotNode != null && seasonInfo["overview"] != null)
{ {
_logger.LogInformation("ChineseNfoRegistry.Job() seasonInfo: {seasonInfo}", seasonInfo["overview"]);
plotNode.InnerXml = $"<![CDATA[{seasonInfo["overview"]}]]>"; plotNode.InnerXml = $"<![CDATA[{seasonInfo["overview"]}]]>";
} }
var outlineNode = seasonXml.SelectSingleNode("//outline"); var outlineNode = seasonXml.SelectSingleNode("//outline");
if (outlineNode != null && seasonInfo["overview"] != null) if (outlineNode != null && seasonInfo["overview"] != null)
{ {
_logger.LogInformation("ChineseNfoRegistry.Job() seasonInfo: {seasonInfo}", seasonInfo["overview"]);
outlineNode.InnerXml = $"<![CDATA[{seasonInfo["overview"]}]]>"; outlineNode.InnerXml = $"<![CDATA[{seasonInfo["overview"]}]]>";
} }
@@ -326,7 +358,6 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
var image = await GetTmdbImage(seasonNfo, poster_path); var image = await GetTmdbImage(seasonNfo, poster_path);
if (image != null) if (image != null)
{ {
// season01-poster.jpg
var imagePath = Path.Combine(Path.GetDirectoryName(tvNfo) ?? string.Empty, "season" + seasonNumber.ToString("D2") + "-poster" + Path.GetExtension(poster_path)); var imagePath = Path.Combine(Path.GetDirectoryName(tvNfo) ?? string.Empty, "season" + seasonNumber.ToString("D2") + "-poster" + Path.GetExtension(poster_path));
await File.WriteAllBytesAsync(imagePath, image); await File.WriteAllBytesAsync(imagePath, image);
} }
@@ -340,7 +371,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("locked"); tvXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); isLockedNode = tvXml.SelectSingleNode("//locked");
isLockedNode!.InnerText = "true"; if (isLockedNode != null)
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -351,7 +385,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("completed"); tvXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); isCompletedNode = tvXml.SelectSingleNode("//completed");
isCompletedNode!.InnerText = "true"; if (isCompletedNode != null)
{
isCompletedNode.InnerText = "true";
}
} }
seasonXml.Save(seasonNfo); seasonXml.Save(seasonNfo);
@@ -444,19 +481,21 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
var titleNode = episodeXml.SelectSingleNode("//title"); var titleNode = episodeXml.SelectSingleNode("//title");
if (titleNode != null && episodeInfo["name"] != null) if (titleNode != null && episodeInfo["name"] != null)
{ {
// 特殊符号保留 _logger.LogInformation("ChineseNfoRegistry.Job() episodeInfo: {episodeInfo}", episodeInfo["name"]);
titleNode.InnerXml = $"<![CDATA[{episodeInfo["name"]}]]>"; titleNode.InnerXml = $"<![CDATA[{episodeInfo["name"]}]]>";
} }
var plotNode = episodeXml.SelectSingleNode("//plot"); var plotNode = episodeXml.SelectSingleNode("//plot");
if (plotNode != null && episodeInfo["overview"] != null) if (plotNode != null && episodeInfo["overview"] != null)
{ {
_logger.LogInformation("ChineseNfoRegistry.Job() episodeInfo: {episodeInfo}", episodeInfo["overview"]);
plotNode.InnerXml = $"<![CDATA[{episodeInfo["overview"]}]]>"; plotNode.InnerXml = $"<![CDATA[{episodeInfo["overview"]}]]>";
} }
var outlineNode = episodeXml.SelectSingleNode("//outline"); var outlineNode = episodeXml.SelectSingleNode("//outline");
if (outlineNode != null && episodeInfo["overview"] != null) if (outlineNode != null && episodeInfo["overview"] != null)
{ {
_logger.LogInformation("ChineseNfoRegistry.Job() episodeInfo: {episodeInfo}", episodeInfo["overview"]);
outlineNode.InnerXml = $"<![CDATA[{episodeInfo["overview"]}]]>"; outlineNode.InnerXml = $"<![CDATA[{episodeInfo["overview"]}]]>";
} }
@@ -479,7 +518,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("locked"); tvXml.CreateElement("locked");
isLockedNode = tvXml.SelectSingleNode("//locked"); isLockedNode = tvXml.SelectSingleNode("//locked");
isLockedNode!.InnerText = "true"; if (isLockedNode != null)
{
isLockedNode.InnerText = "true";
}
} }
if (isCompletedNode != null) if (isCompletedNode != null)
@@ -490,7 +532,10 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
tvXml.CreateElement("completed"); tvXml.CreateElement("completed");
isCompletedNode = tvXml.SelectSingleNode("//completed"); isCompletedNode = tvXml.SelectSingleNode("//completed");
isCompletedNode!.InnerText = "true"; if (isCompletedNode != null)
{
isCompletedNode.InnerText = "true";
}
} }
// 保存 // 保存
@@ -551,6 +596,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
nameNode = actor.SelectSingleNode("name"); nameNode = actor.SelectSingleNode("name");
nameNode!.InnerXml = $"<![CDATA[{name}]]>"; nameNode!.InnerXml = $"<![CDATA[{name}]]>";
} }
_logger.LogInformation("ChineseNfoRegistry.Job() actor: {actor}", name);
} }
} }
} }
@@ -594,8 +641,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
record.Json = str; record.Json = str;
await _freeSql.Insert(record).ExecuteIdentityAsync(); await _freeSql.Insert(record).ExecuteIdentityAsync();
_logger.LogInformation("ChineseNfoRegistry.GetTmdbTv() 接口调用, 休眠 5S"); _logger.LogInformation("ChineseNfoRegistry.GetTmdbTv() 接口调用, 休眠 1S");
await Task.Delay(5000); await Task.Delay(1000);
return json; return json;
} }
@@ -646,8 +693,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
record.Json = str; record.Json = str;
await _freeSql.Insert(record).ExecuteIdentityAsync(); await _freeSql.Insert(record).ExecuteIdentityAsync();
_logger.LogInformation("ChineseNfoRegistry.GetTmdbPerson() 接口调用, 休眠 5S"); _logger.LogInformation("ChineseNfoRegistry.GetTmdbPerson() 接口调用, 休眠 1S");
await Task.Delay(5000); await Task.Delay(1000);
return json; return json;
} }
@@ -703,8 +750,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
record.Json = result.ToString(); record.Json = result.ToString();
await _freeSql.Insert(record).ExecuteIdentityAsync(); await _freeSql.Insert(record).ExecuteIdentityAsync();
_logger.LogInformation("ChineseNfoRegistry.GetTmdbPersonSearch() 接口调用, 休眠 5S"); _logger.LogInformation("ChineseNfoRegistry.GetTmdbPersonSearch() 接口调用, 休眠 1S");
await Task.Delay(5000); await Task.Delay(1000);
return result; return result;
} }
@@ -784,8 +831,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
record.Json = str; record.Json = str;
await _freeSql.Insert(record).ExecuteIdentityAsync(); await _freeSql.Insert(record).ExecuteIdentityAsync();
_logger.LogInformation("ChineseNfoRegistry.GetTmdbSeason() 接口调用, 休眠 5S"); _logger.LogInformation("ChineseNfoRegistry.GetTmdbSeason() 接口调用, 休眠 1S");
await Task.Delay(5000); await Task.Delay(1000);
return JObject.Parse(str); return JObject.Parse(str);
} }
@@ -837,8 +884,8 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
record.Json = str; record.Json = str;
await _freeSql.Insert(record).ExecuteIdentityAsync(); await _freeSql.Insert(record).ExecuteIdentityAsync();
_logger.LogInformation("ChineseNfoRegistry.GetTmdbEpisode() 接口调用, 休眠 5S"); _logger.LogInformation("ChineseNfoRegistry.GetTmdbEpisode() 接口调用, 休眠 1S");
await Task.Delay(5000); await Task.Delay(1000);
return JObject.Parse(str); return JObject.Parse(str);
} }