Richasy / Bili.Copilot

B站第三方 Windows 桌面客户端,使用 Windows App SDK 构建的原生应用
GNU General Public License v3.0
3.4k stars 86 forks source link

[Bug] 弹幕字体未持久保存 #865

Open chenyiping1995 opened 3 weeks ago

chenyiping1995 commented 3 weeks ago

Bug 描述

在一个视频中修改弹幕字体,切换到另一个视频时,字体设置可能会回退至 Segoe UI。

复现问题的步骤

1. 打开一个视频。
2. 点击弹幕设置,将字体从默认的 "Segoe UI" 更换至其他任何字体。此处笔者使用 "vivo Sans"。
3. 退出至主界面后打开其他视频。
4. 概率性出现字体回退至 "Segoe UI" 且实际生效的弹幕字体被更改为 "Segoe UI"。

预期行为

字体设置在不同视频之间得以保留。

截图

No response

应用来源

其它来源

No response

系统版本

其它系统版本

No response

运行设备

桌面/台式机, 桌面/平板或笔记本

日志记录

点此查看完整日志记录 ``` 2024/10/26 18:52:19.509|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 18:54:17.874|Error|尝试加载搜索建议时出错.|Richasy.BiliKernel.KernelException: 未知错误:Call failed. The operation was canceled: POST https://grpc.biliapi.net/bilibili.app.interface.v1.Search/Suggest3 ---> Flurl.Http.FlurlHttpException: Call failed. The operation was canceled: POST https://grpc.biliapi.net/bilibili.app.interface.v1.Search/Suggest3 ---> System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Unable to read data from the transport connection: 由于线程退出或应用程序请求,已中止 I/O 操作。. ---> System.Net.Sockets.SocketException (995): 由于线程退出或应用程序请求,已中止 I/O 操作。 --- End of inner exception stack trace --- at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](Memory`1 buffer, CancellationToken cancellationToken) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext) at Polly.AsyncPolicy`1.ExecuteAsync(Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext) at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) --- End of inner exception stack trace --- at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts) at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Richasy.BiliKernel.Http.BiliHttpClient.SendAsync(IFlurlRequest request, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Richasy.BiliKernel.Http.BiliHttpClient.SendAsync(IFlurlRequest request, CancellationToken cancellationToken) at Richasy.BiliKernel.Services.Search.Core.SearchClient.GetSearchSuggestsAsync(String keyword, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Components.SearchBoxViewModel.ReloadSuggestionsAsync() 2024/10/26 18:54:24.275|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 19:31:02.362|Error|尝试加载搜索建议时出错.|Richasy.BiliKernel.KernelException: 未知错误:Call failed. The operation was canceled: POST https://grpc.biliapi.net/bilibili.app.interface.v1.Search/Suggest3 ---> Flurl.Http.FlurlHttpException: Call failed. The operation was canceled: POST https://grpc.biliapi.net/bilibili.app.interface.v1.Search/Suggest3 ---> System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Unable to read data from the transport connection: 由于线程退出或应用程序请求,已中止 I/O 操作。. ---> System.Net.Sockets.SocketException (995): 由于线程退出或应用程序请求,已中止 I/O 操作。 --- End of inner exception stack trace --- at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](Memory`1 buffer, CancellationToken cancellationToken) at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Http.HttpConnection.FillAsync(Boolean async) at System.Net.Http.HttpConnection.CopyToContentLengthAsync(Stream destination, Boolean async, UInt64 length, Int32 bufferSize, CancellationToken cancellationToken) at System.Net.Http.HttpConnection.ContentLengthReadStream.CompleteCopyToAsync(Task copyTask, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.HttpConnection.ContentLengthReadStream.CompleteCopyToAsync(Task copyTask, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionResponseContent.g__Impl|6_0(Stream stream, CancellationToken cancellationToken) at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer) at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) --- End of inner exception stack trace --- at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts) at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Richasy.BiliKernel.Http.BiliHttpClient.SendAsync(IFlurlRequest request, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Richasy.BiliKernel.Http.BiliHttpClient.SendAsync(IFlurlRequest request, CancellationToken cancellationToken) at Richasy.BiliKernel.Services.Search.Core.SearchClient.GetSearchSuggestsAsync(String keyword, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Components.SearchBoxViewModel.ReloadSuggestionsAsync() 2024/10/26 19:31:20.254|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 19:40:02.785|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 19:58:03.247|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 19:58:10.055|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:02:17.794|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:09:30.540|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:15:36.733|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:16:06.503|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:26:03.209|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() 2024/10/26 20:26:06.032|Error|加载 | 的弹幕失败,索引为 2|System.ArgumentNullException: Value cannot be null. (Parameter 'aid 或者 cid 不能为空') at Richasy.BiliKernel.Services.Media.Core.DanmakuClient.GetSegmentDanmakusAsync(String aid, String cid, Int32 segmentIndex, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.DanmakuViewModel.LoadDanmakusAsync(Int32 duration) 2024/10/26 20:26:12.909|Error|加载字幕元数据失败|Richasy.BiliKernel.KernelException: 获取字幕元数据失败 at Richasy.BiliKernel.Services.Media.Core.SubtitleClient.GetSubtitleMetasAsync(String aid, String cid, CancellationToken cancellationToken) at BiliCopilot.UI.ViewModels.Core.SubtitleViewModel.InitializeAsync() ``` ### 备注 _No response_ ### 人人为我,我为人人 我更擅长发现问题