From 96f93818d01df2b7bc4ea12543ad5f96d95e3551 Mon Sep 17 00:00:00 2001 From: Meiam <91270@qq.com> Date: Mon, 22 Dec 2025 14:25:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20Emby=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E6=97=A5=E5=BF=97=E5=88=86=E7=BA=A7=E4=B8=8E?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E6=98=A0=E5=B0=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 补充提交:提交之前遗漏的 Emby 插件核心逻辑优化。 - 优化:细化日志级别,将 API 响应体记录降级为 Debug。 - 重构:使用 NormalizeLanguage 统一处理语言代码转换。 --- Emby.MeiamSub.Shooter/ShooterProvider.cs | 44 ++++++++++++++++-------- Emby.MeiamSub.Thunder/ThunderProvider.cs | 37 +++++++++++++++----- 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/Emby.MeiamSub.Shooter/ShooterProvider.cs b/Emby.MeiamSub.Shooter/ShooterProvider.cs index a9246ce..b5dbd22 100644 --- a/Emby.MeiamSub.Shooter/ShooterProvider.cs +++ b/Emby.MeiamSub.Shooter/ShooterProvider.cs @@ -84,15 +84,9 @@ namespace Emby.MeiamSub.Shooter try { - if (request.Language == "zh-CN" || request.Language == "zh-TW" || request.Language == "zh-HK") - { - request.Language = "chi"; - } - if (request.Language == "en") - { - request.Language = "eng"; - } - if (request.Language != "chi" && request.Language != "eng") + var language = NormalizeLanguage(request.Language); + + if (language != "chi" && language != "eng") { return Array.Empty(); } @@ -116,14 +110,14 @@ namespace Emby.MeiamSub.Shooter { "filehash", HttpUtility.UrlEncode(hash)}, { "pathinfo", HttpUtility.UrlEncode(request.MediaPath)}, { "format", "json"}, - { "lang",request.Language == "chi" ? "chn" : "eng"} + { "lang", language == "chi" ? "chn" : "eng"} }); _logger.Info("{0} Search | Request -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(options) }); var response = await _httpClient.Post(options); - _logger.Info("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(response) }); + _logger.Debug("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(response) }); if (response.StatusCode == HttpStatusCode.OK && response.ContentType.Contains("application/json")) { @@ -131,7 +125,7 @@ namespace Emby.MeiamSub.Shooter if (subtitleResponse != null) { - _logger.Info("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(subtitleResponse) }); + _logger.Debug("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(subtitleResponse) }); var remoteSubtitles = new List(); @@ -145,10 +139,10 @@ namespace Emby.MeiamSub.Shooter { Url = subFile.Link, Format = subFile.Ext, - Language = request.Language, + Language = language, IsForced = request.IsForced })), - Name = $"[MEIAMSUB] {Path.GetFileName(request.MediaPath)} | {request.Language} | 射手", + Name = $"[MEIAMSUB] {Path.GetFileName(request.MediaPath)} | {language} | 射手", Author = "Meiam ", ProviderName = $"{Name}", Format = subFile.Ext, @@ -290,6 +284,28 @@ namespace Emby.MeiamSub.Shooter return null; } + /// + /// 规范化语言代码 + /// + /// + /// + private static string NormalizeLanguage(string language) + { + if (string.IsNullOrEmpty(language)) return language; + + if (language.Equals("zh-CN", StringComparison.OrdinalIgnoreCase) || + language.Equals("zh-TW", StringComparison.OrdinalIgnoreCase) || + language.Equals("zh-HK", StringComparison.OrdinalIgnoreCase)) + { + return "chi"; + } + if (language.Equals("en", StringComparison.OrdinalIgnoreCase)) + { + return "eng"; + } + return language; + } + /// /// 异步计算文件 Hash (射手网专用算法) /// 修改人: Meiam diff --git a/Emby.MeiamSub.Thunder/ThunderProvider.cs b/Emby.MeiamSub.Thunder/ThunderProvider.cs index de134d0..9d3d0dc 100644 --- a/Emby.MeiamSub.Thunder/ThunderProvider.cs +++ b/Emby.MeiamSub.Thunder/ThunderProvider.cs @@ -86,11 +86,9 @@ namespace Emby.MeiamSub.Thunder try { - if (request.Language == "zh-CN" || request.Language == "zh-TW" || request.Language == "zh-HK") - { - request.Language = "chi"; - } - if (request.Language != "chi") + var language = NormalizeLanguage(request.Language); + + if (language != "chi") { return Array.Empty(); } @@ -109,7 +107,7 @@ namespace Emby.MeiamSub.Thunder }; var response = await _httpClient.GetResponse(options); - _logger.Info("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(response) }); + _logger.Debug("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(response) }); if (response.StatusCode == HttpStatusCode.OK) { @@ -117,7 +115,7 @@ namespace Emby.MeiamSub.Thunder if (subtitleResponse.Code == 0) { - _logger.Info("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(subtitleResponse) }); + _logger.Debug("{0} Search | Response -> {1}", new object[2] { Name, _jsonSerializer.SerializeToString(subtitleResponse) }); var subtitles = subtitleResponse.Data.Where(m => !string.IsNullOrEmpty(m.Name)); @@ -133,7 +131,7 @@ namespace Emby.MeiamSub.Thunder { Url = item.Url, Format = item.Ext, - Language = request.Language, + Language = language, IsForced = request.IsForced })), Name = $"[MEIAMSUB] {item.Name} | {(item.Langs == string.Empty ? "未知" : item.Langs)} | 迅雷", @@ -277,6 +275,29 @@ namespace Emby.MeiamSub.Thunder return null; } + /// + /// 规范化语言代码 + /// + /// + /// + private static string NormalizeLanguage(string language) + { + if (string.IsNullOrEmpty(language)) return language; + + if (language.Equals("zh-CN", StringComparison.OrdinalIgnoreCase) || + language.Equals("zh-TW", StringComparison.OrdinalIgnoreCase) || + language.Equals("zh-HK", StringComparison.OrdinalIgnoreCase)) + { + return "chi"; + } + // 迅雷可能只支持 chi,这里为了保持逻辑一致,也可以处理 eng,虽然 SearchSubtitlesAsync 会过滤掉 + if (language.Equals("en", StringComparison.OrdinalIgnoreCase)) + { + return "eng"; + } + return language; + } + /// /// 异步计算文件 CID (迅雷专用算法) /// 修改人: Meiam