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);
}