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