mirror of
https://github.com/91270/MeiamSubtitles.git
synced 2026-02-02 18:19:50 +08:00
fix: 兼容 Jellyfin zho 语言代码并增强搜索日志
- 修复:优化 NormalizeLanguage 逻辑,增加对 zho, zh, chi 等多种语言代码映射的支持,解决 Jellyfin 10.11+ 搜索失效问题。 - 增强:在搜索日志中显式输出目标文件名和语言。 - 监控:引入 Stopwatch 记录并输出文件哈希计算耗时,便于排查性能瓶颈。 - 诊断:在日志中记录完整的异常类型信息。 - 日志:恢复字幕接口原始返回内容的 Info 级别记录,方便问题排查。
This commit is contained in:
@@ -7,6 +7,7 @@ using MediaBrowser.Model.Providers;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
@@ -92,16 +93,21 @@ namespace Jellyfin.MeiamSub.Shooter
|
||||
{
|
||||
var language = NormalizeLanguage(request.Language);
|
||||
|
||||
_logger.LogInformation("{Provider} Search | Target -> {File} | Language -> {Lang}", Name, Path.GetFileName(request.MediaPath), language);
|
||||
|
||||
if (language != "chi" && language != "eng")
|
||||
{
|
||||
_logger.LogInformation("{Provider} Search | Summary -> Language not supported, skip search.", Name);
|
||||
return Array.Empty<RemoteSubtitleInfo>();
|
||||
}
|
||||
|
||||
FileInfo fileInfo = new(request.MediaPath);
|
||||
|
||||
var stopWatch = Stopwatch.StartNew();
|
||||
var hash = await ComputeFileHashAsync(fileInfo);
|
||||
stopWatch.Stop();
|
||||
|
||||
_logger.LogInformation($"{Name} Search | FileHash -> {hash}");
|
||||
_logger.LogInformation("{Provider} Search | FileHash -> {Hash} (Took {Elapsed}ms)", Name, hash, stopWatch.ElapsedMilliseconds);
|
||||
|
||||
var formData = new Dictionary<string, string>
|
||||
{
|
||||
@@ -121,18 +127,18 @@ namespace Jellyfin.MeiamSub.Shooter
|
||||
// 发送 POST 请求
|
||||
var response = await httpClient.PostAsync(ApiUrl, content);
|
||||
|
||||
_logger.LogDebug($"{Name} Search | Response -> {JsonSerializer.Serialize(response)}");
|
||||
_logger.LogInformation($"{Name} Search | Response -> {JsonSerializer.Serialize(response)}");
|
||||
|
||||
// 处理响应
|
||||
if (response.IsSuccessStatusCode && response.Content.Headers.Any(m => m.Value.Contains("application/json; charset=utf-8")))
|
||||
{
|
||||
var responseBody = await response.Content.ReadAsStringAsync();
|
||||
|
||||
_logger.LogDebug($"{Name} Search | ResponseBody -> {responseBody} ");
|
||||
_logger.LogInformation($"{Name} Search | ResponseBody -> {responseBody} ");
|
||||
|
||||
var subtitles = JsonSerializer.Deserialize<List<SubtitleResponseRoot>>(responseBody);
|
||||
|
||||
_logger.LogDebug($"{Name} Search | Response -> {JsonSerializer.Serialize(subtitles)}");
|
||||
_logger.LogInformation($"{Name} Search | Response -> {JsonSerializer.Serialize(subtitles)}");
|
||||
|
||||
if (subtitles != null)
|
||||
{
|
||||
@@ -171,7 +177,7 @@ namespace Jellyfin.MeiamSub.Shooter
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "{0} Search | Error -> {1}", Name, ex.Message);
|
||||
_logger.LogError(ex, "{Provider} Search | Exception -> [{Type}] {Message}", Name, ex.GetType().Name, ex.Message);
|
||||
}
|
||||
|
||||
_logger.LogInformation($"{Name} Search | Summary -> Get 0 Subtitles");
|
||||
@@ -307,11 +313,15 @@ namespace Jellyfin.MeiamSub.Shooter
|
||||
|
||||
if (language.Equals("zh-CN", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("zh-TW", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("zh-HK", StringComparison.OrdinalIgnoreCase))
|
||||
language.Equals("zh-HK", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("zh", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("zho", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("chi", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "chi";
|
||||
}
|
||||
if (language.Equals("en", StringComparison.OrdinalIgnoreCase))
|
||||
if (language.Equals("en", StringComparison.OrdinalIgnoreCase) ||
|
||||
language.Equals("eng", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return "eng";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user