更新 IChineseNfoRegistry 和 ChineseNfoRegistry 类中的 Job 方法,将 tmdbId 参数更改为 path,并在 JobExecute 方法中增加路径、季号和集号的验证逻辑,改进日志记录以增强错误处理。
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 17s
Docker Build & Deploy / Deploy to Production (push) Successful in 4s

This commit is contained in:
孙诚
2025-04-17 19:00:56 +08:00
parent 25ace6703f
commit 6773efb842
3 changed files with 52 additions and 10 deletions

View File

@@ -3,7 +3,7 @@ namespace Interface.Jobs;
public interface IChineseNfoRegistry public interface IChineseNfoRegistry
{ {
void Job( void Job(
string? tmdbId = null, string? path = null,
string? seasonNumber = null, string? seasonNumber = null,
string? episodeNumber = null, string? episodeNumber = null,
bool ignoreLocked = false, bool ignoreLocked = false,

View File

@@ -49,7 +49,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
public async void Job( public async void Job(
string? tmdbId = null, string? path = null,
string? seasonNumber = null, string? seasonNumber = null,
string? episodeNumber = null, string? episodeNumber = null,
bool ignoreLocked = false, bool ignoreLocked = false,
@@ -58,7 +58,7 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
{ {
try try
{ {
await JobExecute(tmdbId, seasonNumber, episodeNumber, ignoreLocked, ignoreCompleted); await JobExecute(path, seasonNumber, episodeNumber, ignoreLocked, ignoreCompleted);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -67,9 +67,9 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
} }
private async Task JobExecute( private async Task JobExecute(
string? tmdbId = null, string? requestPath = null,
string? seasonNumber = null, string? requestSeasonNumber = null,
string? episodeNumber = null, string? requestEpisodeNumber = null,
bool ignoreLocked = false, bool ignoreLocked = false,
bool ignoreCompleted = false) bool ignoreCompleted = false)
{ {
@@ -95,8 +95,19 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
return; return;
} }
foreach (var tv in tvNfos) foreach (var tv in tvNfos)
{ {
if (!string.IsNullOrEmpty(requestPath))
{
if (!tv.Contains(requestPath))
{
_logger.LogInformation("ChineseNfoRegistry.Job() tv is not contains path");
continue;
}
}
try try
{ {
await HandleTv(tv); await HandleTv(tv);
@@ -326,6 +337,18 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
return; return;
} }
if (!string.IsNullOrEmpty(requestPath))
{
if (!string.IsNullOrEmpty(requestSeasonNumber))
{
if (seasonNumber != int.Parse(requestSeasonNumber))
{
_logger.LogInformation("ChineseNfoRegistry.Job() seasonNumber is not equal");
return;
}
}
}
var seasonInfo = await GetTmdbSeason(seasonNfo, tmdbId, seasonNumber); var seasonInfo = await GetTmdbSeason(seasonNfo, tmdbId, seasonNumber);
if (seasonInfo == null) if (seasonInfo == null)
@@ -473,6 +496,21 @@ public class ChineseNfoRegistry : Registry, IChineseNfoRegistry
return; return;
} }
if (!string.IsNullOrEmpty(requestPath))
{
if (!string.IsNullOrEmpty(requestSeasonNumber))
{
if (!string.IsNullOrEmpty(requestEpisodeNumber))
{
if (seasonNumber != int.Parse(requestSeasonNumber) || episodeNumber != int.Parse(requestEpisodeNumber))
{
_logger.LogInformation("ChineseNfoRegistry.Job() episodeNumber is not equal");
return;
}
}
}
}
var episodeInfo = await GetTmdbEpisode(episodeNfo, tmdbId, seasonNumber, episodeNumber); var episodeInfo = await GetTmdbEpisode(episodeNfo, tmdbId, seasonNumber, episodeNumber);
if (episodeInfo == null) if (episodeInfo == null)

View File

@@ -116,15 +116,19 @@ public class JobTriggerController : BaseController
var json = JsonNode.Parse(text); var json = JsonNode.Parse(text);
var eventType = json?["eventType"]?.ToString();
if (eventType != "Download")
{
return "OK";
}
var tmdbId = json?["series"]?["tmdbId"]?.ToString(); var tmdbId = json?["series"]?["tmdbId"]?.ToString();
var seasonNumber = json?["episodes"]?[0]?["seasonNumber"]?.ToString(); var seasonNumber = json?["episodes"]?[0]?["seasonNumber"]?.ToString();
var episodeNumber = json?["episodes"]?[0]?["episodeNumber"]?.ToString(); var episodeNumber = json?["episodes"]?[0]?["episodeNumber"]?.ToString();
var path = json?["series"]?["path"]?.ToString(); var path = json?["series"]?["path"]?.ToString();
var eventType = json?["eventType"]?.ToString();
await WxNotify.SendCommonAsync($"SonarrChangedConvertChineseNfo: {tmdbId}, {seasonNumber}, {episodeNumber}, {path}, {eventType}"); _chineseNfoRegistry.Job(path: path, seasonNumber: seasonNumber, episodeNumber: episodeNumber, ignoreLocked: true, ignoreCompleted: true);
_chineseNfoRegistry.Job(ignoreLocked: true, ignoreCompleted: true);
return "OK"; return "OK";
} }