diff --git a/src/Desktop/BiliCopilot.UI.Models/Constants/SettingNames.cs b/src/Desktop/BiliCopilot.UI.Models/Constants/SettingNames.cs index 72059c85..2c298f8d 100644 --- a/src/Desktop/BiliCopilot.UI.Models/Constants/SettingNames.cs +++ b/src/Desktop/BiliCopilot.UI.Models/Constants/SettingNames.cs @@ -102,4 +102,5 @@ public enum SettingNames IsTopNavBarShown, MTCBehavior, IsAIStreamingResponse, + UseWebPlayerWhenLive, } diff --git a/src/Desktop/BiliCopilot.UI/Controls/Settings/PlayerBehaviorSettingControl.xaml b/src/Desktop/BiliCopilot.UI/Controls/Settings/PlayerBehaviorSettingControl.xaml index dd98894c..4585ca6e 100644 --- a/src/Desktop/BiliCopilot.UI/Controls/Settings/PlayerBehaviorSettingControl.xaml +++ b/src/Desktop/BiliCopilot.UI/Controls/Settings/PlayerBehaviorSettingControl.xaml @@ -100,6 +100,9 @@ + + + diff --git a/src/Desktop/BiliCopilot.UI/Forms/PlayerWindow.xaml.cs b/src/Desktop/BiliCopilot.UI/Forms/PlayerWindow.xaml.cs index 11f690fd..8bb5e6e5 100644 --- a/src/Desktop/BiliCopilot.UI/Forms/PlayerWindow.xaml.cs +++ b/src/Desktop/BiliCopilot.UI/Forms/PlayerWindow.xaml.cs @@ -102,7 +102,8 @@ public void OpenLive(MediaIdentifier room) { Activate(); var preferPlayer = SettingsToolkit.ReadLocalSetting(SettingNames.PlayerType, PlayerType.Island); - if (preferPlayer == PlayerType.Web) + var useWebPlayer = SettingsToolkit.ReadLocalSetting(SettingNames.UseWebPlayerWhenLive, false); + if (preferPlayer == PlayerType.Web || useWebPlayer) { MainFrame.Navigate(typeof(WebPlayerPage), $"https://live.bilibili.com/{room.Id}"); return; diff --git a/src/Desktop/BiliCopilot.UI/Resources/zh-Hans-CN/Resources.resw b/src/Desktop/BiliCopilot.UI/Resources/zh-Hans-CN/Resources.resw index 913ae0ea..834b1edf 100644 --- a/src/Desktop/BiliCopilot.UI/Resources/zh-Hans-CN/Resources.resw +++ b/src/Desktop/BiliCopilot.UI/Resources/zh-Hans-CN/Resources.resw @@ -2738,4 +2738,10 @@ MPV 用户请参考 mpv.io 的说明进行自定义配置 + + 使用网页播放器观看直播 + + + 如果本机观看直播体验不佳,请打开此选项在网页中观看 + \ No newline at end of file diff --git a/src/Desktop/BiliCopilot.UI/ViewModels/Items/LiveItemViewModel/LiveItemViewModel.cs b/src/Desktop/BiliCopilot.UI/ViewModels/Items/LiveItemViewModel/LiveItemViewModel.cs index fe024194..f652169f 100644 --- a/src/Desktop/BiliCopilot.UI/ViewModels/Items/LiveItemViewModel/LiveItemViewModel.cs +++ b/src/Desktop/BiliCopilot.UI/ViewModels/Items/LiveItemViewModel/LiveItemViewModel.cs @@ -61,7 +61,8 @@ private void Play() } var preferPlayer = SettingsToolkit.ReadLocalSetting(SettingNames.PlayerType, PlayerType.Island); - if (preferPlayer == PlayerType.Web) + var useWebPlayer = SettingsToolkit.ReadLocalSetting(SettingNames.UseWebPlayerWhenLive, false); + if (preferPlayer == PlayerType.Web || useWebPlayer) { this.Get().NavigateToOver(typeof(WebPlayerPage), GetWebUrl()); return; diff --git a/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.Properties.cs b/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.Properties.cs index 196fee3b..8f582532 100644 --- a/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.Properties.cs +++ b/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.Properties.cs @@ -163,6 +163,9 @@ public sealed partial class SettingsPageViewModel [ObservableProperty] private List _mTCBehaviorCollection; + [ObservableProperty] + private bool _useWebPlayerWhenLive; + /// /// WebDav 配置. /// diff --git a/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.cs b/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.cs index fd91ea52..d9cfb793 100644 --- a/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.cs +++ b/src/Desktop/BiliCopilot.UI/ViewModels/View/SettingsPageViewModel/SettingsPageViewModel.cs @@ -95,6 +95,7 @@ private void Initialize() OpenFolderAfterDownload = SettingsToolkit.ReadLocalSetting(SettingNames.OpenFolderAfterDownload, true); DownloadWithDanmaku = SettingsToolkit.ReadLocalSetting(SettingNames.DownloadWithDanmaku, false); + UseWebPlayerWhenLive = SettingsToolkit.ReadLocalSetting(SettingNames.UseWebPlayerWhenLive, false); var copyrightTemplate = ResourceToolkit.GetLocalizedString(StringNames.Copyright); Copyright = string.Format(copyrightTemplate, 2024); @@ -289,4 +290,7 @@ partial void OnMTCBehaviorChanged(MTCBehavior value) partial void OnIsAIStreamingResponseChanged(bool value) => SettingsToolkit.WriteLocalSetting(SettingNames.IsAIStreamingResponse, value); + + partial void OnUseWebPlayerWhenLiveChanged(bool value) + => SettingsToolkit.WriteLocalSetting(SettingNames.UseWebPlayerWhenLive, value); }