From 74e576de936c4a4d12e574240dd95db8ba97093a Mon Sep 17 00:00:00 2001 From: Meiam <91270@qq.com> Date: Sun, 10 Apr 2022 14:21:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E9=80=BB=E8=BE=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Emby.MeiamSub.Shooter/ShooterProvider.cs | 33 +++++---- .../Model/SubtitleResponseRoot.cs | 4 - Emby.MeiamSub.Thunder/ThunderProvider.cs | 34 +++++---- Jellyfin.MeiamSub.Shooter/ShooterProvider.cs | 74 ++++++++++--------- .../Model/DownloadSubInfo.cs | 1 - .../Model/SubtitleResponseRoot.cs | 4 - Jellyfin.MeiamSub.Thunder/ThunderProvider.cs | 46 ++++++------ 7 files changed, 101 insertions(+), 95 deletions(-) diff --git a/Emby.MeiamSub.Shooter/ShooterProvider.cs b/Emby.MeiamSub.Shooter/ShooterProvider.cs index 3e9bdff..1dc4581 100644 --- a/Emby.MeiamSub.Shooter/ShooterProvider.cs +++ b/Emby.MeiamSub.Shooter/ShooterProvider.cs @@ -47,6 +47,7 @@ namespace Emby.MeiamSub.Shooter _logger = logger; _jsonSerializer = jsonSerializer; _httpClient = httpClient; + _logger.Info($"{Name} Init"); } #endregion @@ -60,7 +61,7 @@ namespace Emby.MeiamSub.Shooter /// public async Task> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { - _logger.Debug($"MeiamSub.Shooter Search | Request -> { _jsonSerializer.SerializeToString(request) }"); + _logger.Info($"{Name} Search | SubtitleSearchRequest -> { _jsonSerializer.SerializeToString(request) }"); var subtitles = await SearchSubtitlesAsync(request); @@ -86,7 +87,7 @@ namespace Emby.MeiamSub.Shooter HttpRequestOptions options = new HttpRequestOptions { Url = $"http://www.shooter.cn/api/subapi.php", - UserAgent = "Emby.MeiamSub.Shooter", + UserAgent = $"{Name}", TimeoutMs = 30000, AcceptHeader = "*/*", }; @@ -99,11 +100,11 @@ namespace Emby.MeiamSub.Shooter { "lang",request.Language == "chi" ? "chn" : "eng"} }); - _logger.Debug($"MeiamSub.Shooter Search | Request -> { _jsonSerializer.SerializeToString(options) }"); + _logger.Info($"{Name} Search | Request -> { _jsonSerializer.SerializeToString(options) }"); var response = await _httpClient.Post(options); - _logger.Debug($"MeiamSub.Shooter Search | Response -> { _jsonSerializer.SerializeToString(response) }"); + _logger.Info($"{Name} Search | Response -> { _jsonSerializer.SerializeToString(response) }"); if (response.StatusCode == HttpStatusCode.OK && response.ContentType.Contains("application/json")) { @@ -111,7 +112,7 @@ namespace Emby.MeiamSub.Shooter if (subtitleResponse != null) { - _logger.Debug($"MeiamSub.Shooter Search | Response -> { _jsonSerializer.SerializeToString(subtitleResponse) }"); + _logger.Info($"{Name} Search | Response -> { _jsonSerializer.SerializeToString(subtitleResponse) }"); var remoteSubtitleInfos = new List(); @@ -131,20 +132,20 @@ namespace Emby.MeiamSub.Shooter })), Name = $"[MEIAMSUB] { Path.GetFileName(request.MediaPath) } | {request.TwoLetterISOLanguageName} | 射手", Author = "Meiam ", - ProviderName = "MeiamSub.Shooter", + ProviderName = $"{Name}", Format = subFile.Ext, Comment = $"Format : { ExtractFormat(subFile.Ext)}" }); } } - _logger.Debug($"MeiamSub.Shooter Search | Summary -> Get { remoteSubtitleInfos.Count } Subtitles"); + _logger.Info($"{Name} Search | Summary -> Get { remoteSubtitleInfos.Count } Subtitles"); return remoteSubtitleInfos; } } - _logger.Debug($"MeiamSub.Shooter Search | Summary -> Get 0 Subtitles"); + _logger.Info($"{Name} Search | Summary -> Get 0 Subtitles"); return Array.Empty(); } @@ -159,10 +160,7 @@ namespace Emby.MeiamSub.Shooter /// public async Task GetSubtitles(string id, CancellationToken cancellationToken) { - await Task.Run(() => - { - _logger.Debug($"MeiamSub.Shooter DownloadSub | Request -> {id}"); - }); + _logger.Info($"{Name} DownloadSub | Request -> {id}"); return await DownloadSubAsync(id); } @@ -176,20 +174,25 @@ namespace Emby.MeiamSub.Shooter { var downloadSub = _jsonSerializer.DeserializeFromString(Base64Decode(info)); + if (downloadSub == null) + { + return new SubtitleResponse(); + } + downloadSub.Url = downloadSub.Url.Replace("https://www.shooter.cn", "http://www.shooter.cn"); - _logger.Debug($"MeiamSub.Shooter DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); + _logger.Info($"{Name} DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); var response = await _httpClient.GetResponse(new HttpRequestOptions { Url = downloadSub.Url, - UserAgent = "Emby.MeiamSub.Shooter", + UserAgent = $"{Name}", TimeoutMs = 30000, AcceptHeader = "*/*", }); - _logger.Debug($"MeiamSub.Shooter DownloadSub | Response -> { response.StatusCode }"); + _logger.Info($"{Name} DownloadSub | Response -> { response.StatusCode }"); if (response.StatusCode == HttpStatusCode.OK) { diff --git a/Emby.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs b/Emby.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs index e22059a..49b7bf5 100644 --- a/Emby.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs +++ b/Emby.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs @@ -28,10 +28,6 @@ namespace Emby.MeiamSub.Thunder.Model /// /// public int svote { get; set; } - /// - /// - /// - public int roffset { get; set; } } public class SubtitleResponseRoot diff --git a/Emby.MeiamSub.Thunder/ThunderProvider.cs b/Emby.MeiamSub.Thunder/ThunderProvider.cs index a4faec4..86dc22d 100644 --- a/Emby.MeiamSub.Thunder/ThunderProvider.cs +++ b/Emby.MeiamSub.Thunder/ThunderProvider.cs @@ -47,6 +47,7 @@ namespace Emby.MeiamSub.Thunder _logger = logger; _jsonSerializer = jsonSerializer; _httpClient = httpClient; + _logger.Info($"{Name} Init"); } #endregion @@ -60,7 +61,7 @@ namespace Emby.MeiamSub.Thunder /// public async Task> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { - _logger.Debug($"MeiamSub.Thunder Search | Request -> { _jsonSerializer.SerializeToString(request) }"); + _logger.Info($"{Name} Search | SubtitleSearchRequest -> { _jsonSerializer.SerializeToString(request) }"); var subtitles = await SearchSubtitlesAsync(request); @@ -83,13 +84,14 @@ namespace Emby.MeiamSub.Thunder var response = await _httpClient.GetResponse(new HttpRequestOptions { - Url = $"http://sub.xmp.sandai.net:8000/subxl/{cid}.json", - UserAgent = "Emby.MeiamSub.Thunder", + //Url = $"http://sub.xmp.sandai.net:8000/subxl/{cid}.json", + Url = $"http://subtitle.kankan.xunlei.com:8000/subxl/{cid}.json", + UserAgent = $"{Name}", TimeoutMs = 30000, AcceptHeader = "*/*", }); - _logger.Debug($"MeiamSub.Thunder Search | Response -> { _jsonSerializer.SerializeToString(response) }"); + _logger.Info($"{Name} Search | Response -> { _jsonSerializer.SerializeToString(response) }"); if (response.StatusCode == HttpStatusCode.OK) { @@ -97,13 +99,13 @@ namespace Emby.MeiamSub.Thunder if (subtitleResponse != null) { - _logger.Debug($"MeiamSub.Thunder Search | Response -> { _jsonSerializer.SerializeToString(subtitleResponse) }"); + _logger.Info($"{Name} Search | Response -> { _jsonSerializer.SerializeToString(subtitleResponse) }"); var subtitles = subtitleResponse.sublist.Where(m => !string.IsNullOrEmpty(m.sname)); if (subtitles.Count() > 0) { - _logger.Debug($"MeiamSub.Thunder Search | Summary -> Get { subtitles.Count() } Subtitles"); + _logger.Info($"{Name} Search | Summary -> Get { subtitles.Count() } Subtitles"); return subtitles.Select(m => new RemoteSubtitleInfo() { @@ -118,7 +120,7 @@ namespace Emby.MeiamSub.Thunder Name = $"[MEIAMSUB] { Path.GetFileName(request.MediaPath) } | {request.TwoLetterISOLanguageName} | 迅雷", Author = "Meiam ", CommunityRating = Convert.ToSingle(m.rate), - ProviderName = "MeiamSub.Thunder", + ProviderName = $"{Name}", Format = ExtractFormat(m.sname), Comment = $"Format : { ExtractFormat(m.sname)} - Rate : { m.rate }" }).OrderByDescending(m => m.CommunityRating); @@ -126,7 +128,7 @@ namespace Emby.MeiamSub.Thunder } } - _logger.Debug($"MeiamSub.Thunder Search | Summary -> Get 0 Subtitles"); + _logger.Info($"{Name} Search | Summary -> Get 0 Subtitles"); return Array.Empty(); } @@ -141,10 +143,7 @@ namespace Emby.MeiamSub.Thunder /// public async Task GetSubtitles(string id, CancellationToken cancellationToken) { - await Task.Run(() => - { - _logger.Debug($"MeiamSub.Thunder DownloadSub | Request -> {id}"); - }); + _logger.Info($"{Name} DownloadSub | Request -> {id}"); return await DownloadSubAsync(id); } @@ -158,17 +157,22 @@ namespace Emby.MeiamSub.Thunder { var downloadSub = _jsonSerializer.DeserializeFromString(Base64Decode(info)); - _logger.Debug($"MeiamSub.Thunder DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); + if (downloadSub == null) + { + return new SubtitleResponse(); + } + + _logger.Info($"{Name} DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); var response = await _httpClient.GetResponse(new HttpRequestOptions { Url = downloadSub.Url, - UserAgent = "Emby.MeiamSub.Thunder", + UserAgent = $"{Name}", TimeoutMs = 30000, AcceptHeader = "*/*", }); - _logger.Debug($"MeiamSub.Thunder DownloadSub | Response -> { response.StatusCode }"); + _logger.Info($"{Name} DownloadSub | Response -> { response.StatusCode }"); if (response.StatusCode == HttpStatusCode.OK) { diff --git a/Jellyfin.MeiamSub.Shooter/ShooterProvider.cs b/Jellyfin.MeiamSub.Shooter/ShooterProvider.cs index d469d5c..393de59 100644 --- a/Jellyfin.MeiamSub.Shooter/ShooterProvider.cs +++ b/Jellyfin.MeiamSub.Shooter/ShooterProvider.cs @@ -15,6 +15,7 @@ using System.Text; using System.Text.Json; using System.Threading; using System.Threading.Tasks; +using System.Web; namespace Jellyfin.MeiamSub.Shooter { @@ -45,7 +46,7 @@ namespace Jellyfin.MeiamSub.Shooter { _logger = logger; _httpClient.Timeout = TimeSpan.FromSeconds(30); - _logger.LogDebug("MeiamSub.Shooter Init"); + _logger.LogInformation($"{Name} Init"); } #endregion @@ -59,7 +60,7 @@ namespace Jellyfin.MeiamSub.Shooter /// public async Task> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { - _logger.LogDebug($"MeiamSub.Shooter Search | Request -> { JsonSerializer.Serialize(request) }"); + _logger.LogInformation($"{Name} Search | SubtitleSearchRequest -> { JsonSerializer.Serialize(request) }"); var subtitles = await SearchSubtitlesAsync(request); @@ -78,45 +79,45 @@ namespace Jellyfin.MeiamSub.Shooter return Array.Empty(); } - FileInfo fileInfo = new FileInfo(request.MediaPath); + FileInfo fileInfo = new(request.MediaPath); var hash = ComputeFileHash(fileInfo); - HttpContent content = new FormUrlEncodedContent(new[] + var content = new StringContent(JsonSerializer.Serialize(new { - new KeyValuePair("filehash", hash), - new KeyValuePair("pathinfo", request.MediaPath), - new KeyValuePair("format", "json"), - new KeyValuePair("lang", request.Language == "chi" ? "chn" : "eng"), - }); + filehash = HttpUtility.UrlEncode(hash), + pathinfo = HttpUtility.UrlEncode(request.MediaPath), + format = "json", + lang = request.Language == "chi" ? "chn" : "eng" + }), Encoding.UTF8, "application/json"); - using var options = new HttpRequestMessage + + var options = new HttpRequestMessage { Method = HttpMethod.Post, - RequestUri = new Uri("http://www.shooter.cn/api/subapi.php"), + RequestUri = new Uri($"http://www.shooter.cn/api/subapi.php"), Content = content, Headers = - { - UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue("Jellyfin.MeiamSub.Shooter")) }, - Accept = { new MediaTypeWithQualityHeaderValue("*/*") } - } + { + UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue($"{Name}")) }, + Accept = { new MediaTypeWithQualityHeaderValue("*/*") } + } }; - _logger.LogDebug($"MeiamSub.Shooter Search | Request -> { JsonSerializer.Serialize(options) }"); + _logger.LogInformation($"{Name} Search | Request -> { JsonSerializer.Serialize(options) }"); - var response = await _httpClient.SendAsync(options).ConfigureAwait(false); + var response = await _httpClient.SendAsync(options); - - _logger.LogDebug($"MeiamSub.Shooter Search | Response -> { JsonSerializer.Serialize(response) }"); + _logger.LogInformation($"{Name} Search | Response -> { JsonSerializer.Serialize(response) }"); if (response.StatusCode == HttpStatusCode.OK && response.Headers.Any(m => m.Value.Contains("application/json"))) { - var subtitleResponse = JsonSerializer.Deserialize>(await response.Content.ReadAsStringAsync().ConfigureAwait(false)); + var subtitleResponse = JsonSerializer.Deserialize>(await response.Content.ReadAsStringAsync()); if (subtitleResponse != null) { - _logger.LogDebug($"MeiamSub.Shooter Search | Response -> { JsonSerializer.Serialize(subtitleResponse) }"); + _logger.LogInformation($"{Name} Search | Response -> { JsonSerializer.Serialize(subtitleResponse) }"); var remoteSubtitleInfos = new List(); @@ -131,24 +132,25 @@ namespace Jellyfin.MeiamSub.Shooter Url = subFile.Link, Format = subFile.Ext, Language = request.Language, - TwoLetterISOLanguageName = request.TwoLetterISOLanguageName + TwoLetterISOLanguageName = request.TwoLetterISOLanguageName, })), Name = $"[MEIAMSUB] { Path.GetFileName(request.MediaPath) } | {request.TwoLetterISOLanguageName} | 射手", Author = "Meiam ", - ProviderName = "MeiamSub.Shooter", + ProviderName = $"{Name}", Format = subFile.Ext, Comment = $"Format : { ExtractFormat(subFile.Ext)}" }); } } - _logger.LogDebug($"MeiamSub.Shooter Search | Summary -> Get { remoteSubtitleInfos.Count } Subtitles"); + _logger.LogInformation($"{Name} Search | Summary -> Get { remoteSubtitleInfos.Count } Subtitles"); return remoteSubtitleInfos; } } - _logger.LogDebug($"MeiamSub.Shooter Search | Summary -> Get 0 Subtitles"); + _logger.LogInformation($"{Name} Search | Summary -> Get 0 Subtitles"); + return Array.Empty(); } @@ -163,10 +165,7 @@ namespace Jellyfin.MeiamSub.Shooter /// public async Task GetSubtitles(string id, CancellationToken cancellationToken) { - await Task.Run(() => - { - _logger.LogDebug($"MeiamSub.Shooter DownloadSub | Request -> {id}"); - }); + _logger.LogInformation($"{Name} DownloadSub | Request -> {id}"); return await DownloadSubAsync(id); } @@ -180,10 +179,14 @@ namespace Jellyfin.MeiamSub.Shooter { var downloadSub = JsonSerializer.Deserialize(Base64Decode(info)); + if (downloadSub == null) + { + return new SubtitleResponse(); + } + downloadSub.Url = downloadSub.Url.Replace("https://www.shooter.cn", "http://www.shooter.cn"); - _logger.LogDebug($"MeiamSub.Shooter DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); - + _logger.LogInformation($"{Name} DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); using var options = new HttpRequestMessage { @@ -191,24 +194,25 @@ namespace Jellyfin.MeiamSub.Shooter RequestUri = new Uri(downloadSub.Url), Headers = { - UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue("Emby.MeiamSub.Shooter")) }, + UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue($"{Name}")) }, Accept = { new MediaTypeWithQualityHeaderValue("*/*") } } }; - var response = await _httpClient.SendAsync(options).ConfigureAwait(false); + var response = await _httpClient.SendAsync(options); - _logger.LogDebug($"MeiamSub.Shooter DownloadSub | Response -> { response.StatusCode }"); + _logger.LogInformation($"{Name} DownloadSub | Response -> { response.StatusCode }"); if (response.StatusCode == HttpStatusCode.OK) { + var stream = await response.Content.ReadAsStreamAsync(); return new SubtitleResponse() { Language = downloadSub.Language, IsForced = false, Format = downloadSub.Format, - Stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false), + Stream = stream, }; } diff --git a/Jellyfin.MeiamSub.Thunder/Model/DownloadSubInfo.cs b/Jellyfin.MeiamSub.Thunder/Model/DownloadSubInfo.cs index 86b3d53..274aff4 100644 --- a/Jellyfin.MeiamSub.Thunder/Model/DownloadSubInfo.cs +++ b/Jellyfin.MeiamSub.Thunder/Model/DownloadSubInfo.cs @@ -10,6 +10,5 @@ namespace Jellyfin.MeiamSub.Thunder.Model public string Format { get; set; } public string Language { get; set; } public string TwoLetterISOLanguageName { get; set; } - public bool? IsForced { get; set; } } } diff --git a/Jellyfin.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs b/Jellyfin.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs index 4c86b99..0ec6e99 100644 --- a/Jellyfin.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs +++ b/Jellyfin.MeiamSub.Thunder/Model/SubtitleResponseRoot.cs @@ -28,10 +28,6 @@ namespace Jellyfin.MeiamSub.Thunder.Model /// /// public int svote { get; set; } - /// - /// - /// - public int roffset { get; set; } } public class SubtitleResponseRoot diff --git a/Jellyfin.MeiamSub.Thunder/ThunderProvider.cs b/Jellyfin.MeiamSub.Thunder/ThunderProvider.cs index d4efa37..011a60c 100644 --- a/Jellyfin.MeiamSub.Thunder/ThunderProvider.cs +++ b/Jellyfin.MeiamSub.Thunder/ThunderProvider.cs @@ -45,7 +45,7 @@ namespace Jellyfin.MeiamSub.Thunder { _logger = logger; _httpClient.Timeout = TimeSpan.FromSeconds(30); - _logger.LogDebug("MeiamSub.Thunder Init"); + _logger.LogInformation($"{Name} Init"); } #endregion @@ -59,7 +59,7 @@ namespace Jellyfin.MeiamSub.Thunder /// public async Task> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { - _logger.LogDebug($"MeiamSub.Thunder Search | Request -> { JsonSerializer.Serialize(request) }"); + _logger.LogInformation($"{Name} Search | SubtitleSearchRequest -> { JsonSerializer.Serialize(request) }"); var subtitles = await SearchSubtitlesAsync(request); @@ -83,31 +83,32 @@ namespace Jellyfin.MeiamSub.Thunder using var options = new HttpRequestMessage { Method = HttpMethod.Get, - RequestUri = new Uri($"http://sub.xmp.sandai.net:8000/subxl/{cid}.json"), + //RequestUri = new Uri($"http://sub.xmp.sandai.net:8000/subxl/{cid}.json"), + RequestUri = new Uri($"http://subtitle.kankan.xunlei.com:8000/subxl/{cid}.json"), Headers = { - UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue("Jellyfin.MeiamSub.Thunder")) }, - Accept = { new MediaTypeWithQualityHeaderValue("*/*") } + UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue($"{Name}")) }, + Accept = { new MediaTypeWithQualityHeaderValue("*/*") }, } }; - var response = await _httpClient.SendAsync(options).ConfigureAwait(false); + var response = await _httpClient.SendAsync(options); - _logger.LogDebug($"MeiamSub.Thunder Search | Response -> { JsonSerializer.Serialize(response) }"); + _logger.LogInformation($"{Name} Search | Response -> { JsonSerializer.Serialize(response) }"); if (response.StatusCode == HttpStatusCode.OK) { - var subtitleResponse = JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync().ConfigureAwait(false)); + var subtitleResponse = JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync()); if (subtitleResponse != null) { - _logger.LogDebug($"MeiamSub.Thunder Search | Response -> { JsonSerializer.Serialize(subtitleResponse) }"); + _logger.LogInformation($"{Name} Search | Response -> { JsonSerializer.Serialize(subtitleResponse) }"); var subtitles = subtitleResponse.sublist.Where(m => !string.IsNullOrEmpty(m.sname)); if (subtitles.Count() > 0) { - _logger.LogDebug($"MeiamSub.Thunder Search | Summary -> Get { subtitles.Count() } Subtitles"); + _logger.LogInformation($"{Name} Search | Summary -> Get { subtitles.Count() } Subtitles"); return subtitles.Select(m => new RemoteSubtitleInfo() { @@ -121,7 +122,7 @@ namespace Jellyfin.MeiamSub.Thunder Name = $"[MEIAMSUB] { Path.GetFileName(request.MediaPath) } | {request.TwoLetterISOLanguageName} | 迅雷", Author = "Meiam ", CommunityRating = Convert.ToSingle(m.rate), - ProviderName = "MeiamSub.Thunder", + ProviderName = $"{Name}", Format = ExtractFormat(m.sname), Comment = $"Format : { ExtractFormat(m.sname)} - Rate : { m.rate }" }).OrderByDescending(m => m.CommunityRating); @@ -129,7 +130,7 @@ namespace Jellyfin.MeiamSub.Thunder } } - _logger.LogDebug($"MeiamSub.Thunder Search | Summary -> Get 0 Subtitles"); + _logger.LogInformation($"{Name} Search | Summary -> Get 0 Subtitles"); return Array.Empty(); } @@ -144,10 +145,7 @@ namespace Jellyfin.MeiamSub.Thunder /// public async Task GetSubtitles(string id, CancellationToken cancellationToken) { - await Task.Run(() => - { - _logger.LogDebug($"MeiamSub.Thunder DownloadSub | Request -> {id}"); - }); + _logger.LogInformation($"{Name} DownloadSub | Request -> {id}"); return await DownloadSubAsync(id); } @@ -161,7 +159,12 @@ namespace Jellyfin.MeiamSub.Thunder { var downloadSub = JsonSerializer.Deserialize(Base64Decode(info)); - _logger.LogDebug($"MeiamSub.Thunder DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); + if (downloadSub == null) + { + return new SubtitleResponse(); + } + + _logger.LogInformation($"{Name} DownloadSub | Url -> { downloadSub.Url } | Format -> { downloadSub.Format } | Language -> { downloadSub.Language } "); using var options = new HttpRequestMessage { @@ -169,24 +172,25 @@ namespace Jellyfin.MeiamSub.Thunder RequestUri = new Uri(downloadSub.Url), Headers = { - UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue("Jellyfin.MeiamSub.Thunder")) }, + UserAgent = { new ProductInfoHeaderValue(new ProductHeaderValue($"{Name}")) }, Accept = { new MediaTypeWithQualityHeaderValue("*/*") } } }; - var response = await _httpClient.SendAsync(options).ConfigureAwait(false); + var response = await _httpClient.SendAsync(options); - _logger.LogDebug($"MeiamSub.Thunder DownloadSub | Response -> { response.StatusCode }"); + _logger.LogInformation($"{Name} DownloadSub | Response -> { response.StatusCode }"); if (response.StatusCode == HttpStatusCode.OK) { + var stream = await response.Content.ReadAsStreamAsync(); return new SubtitleResponse() { Language = downloadSub.Language, IsForced = false, Format = downloadSub.Format, - Stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false), + Stream = stream, }; }