diff --git a/Emby.MeiamSub.Thunder/Plugin.cs b/Emby.MeiamSub.Thunder/Plugin.cs index d3dcd92..ab05b74 100644 --- a/Emby.MeiamSub.Thunder/Plugin.cs +++ b/Emby.MeiamSub.Thunder/Plugin.cs @@ -1,9 +1,13 @@ -using MediaBrowser.Common; +using Emby.Web.GenericEdit; +using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using System; +using System.ComponentModel; using System.IO; namespace Emby.MeiamSub.Thunder @@ -12,10 +16,10 @@ namespace Emby.MeiamSub.Thunder /// /// 插件入口 /// - public class Plugin : BasePlugin, IHasThumbImage + public class Plugin : BasePluginSimpleUI, IHasThumbImage { - public Plugin(IApplicationPaths applicationPaths) + public Plugin(IApplicationPaths applicationPaths, IApplicationHost applicationHost) : base(applicationHost) { Instance = this; } @@ -40,6 +44,10 @@ namespace Emby.MeiamSub.Thunder /// public ImageFormat ThumbImageFormat => ImageFormat.Gif; + /// + /// 获取插件选项 + /// + public PluginConfiguration Options => this.GetOptions(); public static Plugin Instance { get; private set; } @@ -64,4 +72,21 @@ namespace Emby.MeiamSub.Thunder return stream; } } + + /// + /// 插件配置类 + /// + public class PluginConfiguration : EditableOptionsBase + { + public override string EditorTitle => "MeiamSub Thunder Options"; + + [Description("勾选此项后,使用元数据中的剧集名称和季集编号搜索字幕")] + public bool EnableUseMetadata { get; set; } + + public PluginConfiguration() + { + // 默认值 + EnableUseMetadata = false; + } + } } diff --git a/Emby.MeiamSub.Thunder/ThunderProvider.cs b/Emby.MeiamSub.Thunder/ThunderProvider.cs index 80829f0..a0e95a5 100644 --- a/Emby.MeiamSub.Thunder/ThunderProvider.cs +++ b/Emby.MeiamSub.Thunder/ThunderProvider.cs @@ -1,16 +1,20 @@ using Emby.MeiamSub.Thunder.Model; +using MediaBrowser.Common; using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Base; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Subtitles; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.System; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; +using System.Net.Http; using System.Security.Cryptography; using System.Text; using System.Threading; @@ -34,6 +38,9 @@ namespace Emby.MeiamSub.Thunder protected readonly ILogger _logger; private readonly IJsonSerializer _jsonSerializer; private readonly IHttpClient _httpClient; + private readonly IServiceRoot _serviceRoot; + + private Plugin MainPlugin { get; set; } public int Order => 100; @@ -46,11 +53,14 @@ namespace Emby.MeiamSub.Thunder #endregion #region 构造函数 - public ThunderProvider(ILogManager logManager, IJsonSerializer jsonSerializer, IHttpClient httpClient) + public ThunderProvider(ILogManager logManager, IJsonSerializer jsonSerializer, IHttpClient httpClient, IApplicationHost applicationHost) { _logger = logManager.GetLogger(GetType().Name); _jsonSerializer = jsonSerializer; _httpClient = httpClient; + _serviceRoot = new ServiceRoot(applicationHost); + MainPlugin = _serviceRoot.GetService().Plugins.OfType().FirstOrDefault(); + _logger.Info("{0} Init", new object[1] { Name }); } #endregion @@ -80,6 +90,30 @@ namespace Emby.MeiamSub.Thunder /// private async Task> SearchSubtitlesAsync(SubtitleSearchRequest request) { + // 修改人:Mayfly777w + // 修改时间:2026-01-01 + // 备注:如果勾选采用元数据中的剧集名来作为字幕搜索匹配,则使用,否则默认用文件名 + string MovieName; + if (MainPlugin.Options.EnableUseMetadata) + { + if (request.ContentType == VideoContentType.Episode) + { + MovieName = $"{request.SeriesName} S{request.ParentIndexNumber}E{request.IndexNumber}"; + } + else if (request.ContentType == VideoContentType.Movie) + { + MovieName = request.Name; + } + else + { + MovieName = Path.GetFileName(request.MediaPath); + } + } + else + { + MovieName = Path.GetFileName(request.MediaPath); + } + // 修改人: Meiam // 修改时间: 2025-12-22 // 备注: 增加异常处理 @@ -88,7 +122,7 @@ namespace Emby.MeiamSub.Thunder { var language = NormalizeLanguage(request.Language); - _logger.Info("{0} Search | Target -> {1} | Language -> {2}", Name, Path.GetFileName(request.MediaPath), language); + _logger.Info("{0} Search | Target -> {1} | Language -> {2}", Name, MovieName, language); if (language != "chi") { @@ -105,7 +139,7 @@ namespace Emby.MeiamSub.Thunder HttpRequestOptions options = new HttpRequestOptions { - Url = $"https://api-shoulei-ssl.xunlei.com/oracle/subtitle?name={Path.GetFileName(request.MediaPath)}", + Url = $"https://api-shoulei-ssl.xunlei.com/oracle/subtitle?name={MovieName}", UserAgent = $"{Name}", TimeoutMs = 30000, AcceptHeader = "*/*",