chore: 完善部署与发布文档,准备发布 v1.0.13.0

This commit is contained in:
Meiam
2025-12-22 19:31:48 +08:00
parent 2b4068e8a9
commit df8ca3cbd7
9 changed files with 104 additions and 36 deletions

2
.gitignore vendored
View File

@@ -366,3 +366,5 @@ FodyWeavers.xsd
/TestServer
TestServer/
*.bat
*.md

View File

@@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyVersion>1.0.12.0</AssemblyVersion>
<FileVersion>1.0.12.0</FileVersion>
<Version>1.0.12.0</Version>
<AssemblyVersion>1.0.13.0</AssemblyVersion>
<FileVersion>1.0.13.0</FileVersion>
<Version>1.0.13.0</Version>
</PropertyGroup>
<PropertyGroup>

View File

@@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyVersion>1.0.12.0</AssemblyVersion>
<FileVersion>1.0.12.0</FileVersion>
<Version>1.0.12.0</Version>
<AssemblyVersion>1.0.13.0</AssemblyVersion>
<FileVersion>1.0.13.0</FileVersion>
<Version>1.0.13.0</Version>
</PropertyGroup>
<PropertyGroup>

View File

@@ -2,9 +2,9 @@
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Version>1.0.12.0</Version>
<AssemblyVersion>1.0.12.0</AssemblyVersion>
<FileVersion>1.0.12.0</FileVersion>
<Version>1.0.13.0</Version>
<AssemblyVersion>1.0.13.0</AssemblyVersion>
<FileVersion>1.0.13.0</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

View File

@@ -71,7 +71,7 @@ namespace Jellyfin.MeiamSub.Shooter
/// <returns>远程字幕信息列表</returns>
public async Task<IEnumerable<RemoteSubtitleInfo>> Search(SubtitleSearchRequest request, CancellationToken cancellationToken)
{
_logger.LogInformation($"{Name} Search | SubtitleSearchRequest -> {JsonSerializer.Serialize(request)}");
_logger.LogInformation("DEBUG: Received Search request for " + (request?.MediaPath ?? "NULL"));
var subtitles = await SearchSubtitlesAsync(request);
@@ -87,27 +87,49 @@ namespace Jellyfin.MeiamSub.Shooter
{
// 修改人: Meiam
// 修改时间: 2025-12-22
// 备注: 增加异常处理
// 备注: 增加极致探测日志,定位方法中断的具体位置
_logger.LogInformation("DEBUG: Entering SearchSubtitlesAsync");
try
{
var language = NormalizeLanguage(request.Language);
_logger.LogInformation("{Provider} Search | Target -> {File} | Language -> {Lang}", Name, Path.GetFileName(request.MediaPath), language);
if (language != "chi" && language != "eng")
if (request == null)
{
_logger.LogInformation("{Provider} Search | Summary -> Language not supported, skip search.", Name);
_logger.LogInformation("DEBUG: Request is null");
return Array.Empty<RemoteSubtitleInfo>();
}
FileInfo fileInfo = new(request.MediaPath);
var language = NormalizeLanguage(request.Language);
var fileName = string.Empty;
if (!string.IsNullOrEmpty(request.MediaPath))
{
fileName = Path.GetFileName(request.MediaPath);
}
_logger.LogInformation(Name + " Search | Target -> " + fileName + " | Language -> " + language);
if (language != "chi" && language != "eng")
{
_logger.LogInformation(Name + " Search | Summary -> Language not supported, skip search.");
return Array.Empty<RemoteSubtitleInfo>();
}
if (string.IsNullOrEmpty(request.MediaPath))
{
_logger.LogInformation(Name + " Search | Summary -> MediaPath is empty, skip search.");
return Array.Empty<RemoteSubtitleInfo>();
}
FileInfo fileInfo = new FileInfo(request.MediaPath);
_logger.LogInformation("DEBUG: Starting hash calculation for " + fileName);
var stopWatch = Stopwatch.StartNew();
var hash = await ComputeFileHashAsync(fileInfo);
stopWatch.Stop();
_logger.LogInformation("{Provider} Search | FileHash -> {Hash} (Took {Elapsed}ms)", Name, hash, stopWatch.ElapsedMilliseconds);
_logger.LogInformation(Name + " Search | FileHash -> " + hash + " (Took " + stopWatch.ElapsedMilliseconds + "ms)");
var formData = new Dictionary<string, string>
{
@@ -208,7 +230,7 @@ namespace Jellyfin.MeiamSub.Shooter
}
catch (Exception ex)
{
_logger.LogError(ex, "{Provider} Search | Exception -> [{Type}] {Message}", Name, ex.GetType().Name, ex.Message);
_logger.LogError(ex, $"{Name} Search | Exception -> {ex.Message}");
}
_logger.LogInformation($"{Name} Search | Summary -> Get 0 Subtitles");

View File

@@ -0,0 +1,12 @@
{
"category": "Subtitles",
"description": "Download subtitles from Shooter",
"guid": "038D37A2-7A1E-4C01-9B6D-AA215D29AB4C",
"name": "MeiamSub.Shooter",
"owner": "Meiam",
"targetAbi": "10.11.0.0",
"timestamp": "2025-12-22T10:00:00.0000000Z",
"version": "1.0.13.0",
"status": "Active",
"imagePath": "thumb.png"
}

View File

@@ -3,8 +3,8 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net9.0</TargetFramework>
<Version>1.0.12.0</Version>
<AssemblyVersion>1.0.12.0</AssemblyVersion>
<Version>1.0.13.0</Version>
<AssemblyVersion>1.0.13.0</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

View File

@@ -66,14 +66,14 @@ namespace Jellyfin.MeiamSub.Thunder
/// <param name="request">包含媒体路径、语言等信息的搜索请求对象</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>远程字幕信息列表</returns>
public async Task<IEnumerable<RemoteSubtitleInfo>> Search(SubtitleSearchRequest request, CancellationToken cancellationToken)
{
_logger.LogInformation($"{Name} Search | SubtitleSearchRequest -> {JsonSerializer.Serialize(request)}");
var subtitles = await SearchSubtitlesAsync(request);
return subtitles;
}
public async Task<IEnumerable<RemoteSubtitleInfo>> Search(SubtitleSearchRequest request, CancellationToken cancellationToken)
{
_logger.LogInformation("DEBUG: Received Search request for " + (request?.MediaPath ?? "NULL"));
var subtitles = await SearchSubtitlesAsync(request);
return subtitles;
}
/// <summary>
/// 查询字幕
@@ -84,17 +84,37 @@ namespace Jellyfin.MeiamSub.Thunder
{
// 修改人: Meiam
// 修改时间: 2025-12-22
// 备注: 增加异常处理
// 备注: 增加极致探测日志
_logger.LogInformation("DEBUG: Entering SearchSubtitlesAsync (Thunder)");
try
{
var language = NormalizeLanguage(request.Language);
if (request == null)
{
_logger.LogInformation("DEBUG: Request is null");
return Array.Empty<RemoteSubtitleInfo>();
}
_logger.LogInformation("{Provider} Search | Target -> {File} | Language -> {Lang}", Name, Path.GetFileName(request.MediaPath), language);
var language = NormalizeLanguage(request.Language);
var fileName = string.Empty;
if (!string.IsNullOrEmpty(request.MediaPath))
{
fileName = Path.GetFileName(request.MediaPath);
}
_logger.LogInformation(Name + " Search | Target -> " + fileName + " | Language -> " + language);
if (language != "chi")
{
_logger.LogInformation("{Provider} Search | Summary -> Language not supported, skip search.", Name);
_logger.LogInformation(Name + " Search | Summary -> Language not supported, skip search.");
return Array.Empty<RemoteSubtitleInfo>();
}
if (string.IsNullOrEmpty(request.MediaPath))
{
_logger.LogInformation(Name + " Search | Summary -> MediaPath is empty, skip search.");
return Array.Empty<RemoteSubtitleInfo>();
}
@@ -102,7 +122,7 @@ namespace Jellyfin.MeiamSub.Thunder
var cid = await GetCidByFileAsync(request.MediaPath);
stopWatch.Stop();
_logger.LogInformation("{Provider} Search | FileHash -> {Hash} (Took {Elapsed}ms)", Name, cid, stopWatch.ElapsedMilliseconds);
_logger.LogInformation(Name + " Search | FileHash -> " + cid + " (Took " + stopWatch.ElapsedMilliseconds + "ms)");
using var options = new HttpRequestMessage
{
@@ -159,7 +179,7 @@ namespace Jellyfin.MeiamSub.Thunder
}
catch (Exception ex)
{
_logger.LogError(ex, "{Provider} Search | Exception -> [{Type}] {Message}", Name, ex.GetType().Name, ex.Message);
_logger.LogError(ex, $"{Name} Search | Exception -> {ex.Message}");
}
_logger.LogInformation($"{Name} Search | Summary -> Get 0 Subtitles");

View File

@@ -0,0 +1,12 @@
{
"category": "Subtitles",
"description": "Download subtitles from Thunder XMP",
"guid": "E4CE9DA9-EF00-417C-96F2-861C512D45EB",
"name": "MeiamSub.Thunder",
"owner": "Meiam",
"targetAbi": "10.11.0.0",
"timestamp": "2025-12-22T10:00:00.0000000Z",
"version": "1.0.13.0",
"status": "Active",
"imagePath": "thumb.png"
}