Compare commits

...

2 Commits

Author SHA1 Message Date
孙诚
6773efb842 更新 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
2025-04-17 19:00:56 +08:00
孙诚
25ace6703f 更新 JobTriggerController 中的 ConvertChineseNfo 方法,默认参数改为忽略锁定和已完成的任务。 2025-04-17 18:48:56 +08:00
3 changed files with 54 additions and 12 deletions

View File

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

View File

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

View File

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