From 0832c6d8992dde30b5114ca2dda57e93b81fd634 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 26 Aug 2024 20:30:47 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=BC=82=E5=B8=B8=E7=9A=84=E9=A6=96=E9=A1=B5=E6=8E=A8?= =?UTF-8?q?=E8=8D=90=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/ViewModels/Home/RecommendPageViewModel.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/BiliLite.UWP/ViewModels/Home/RecommendPageViewModel.cs b/src/BiliLite.UWP/ViewModels/Home/RecommendPageViewModel.cs index 97a9289c..7dc606bb 100644 --- a/src/BiliLite.UWP/ViewModels/Home/RecommendPageViewModel.cs +++ b/src/BiliLite.UWP/ViewModels/Home/RecommendPageViewModel.cs @@ -161,6 +161,13 @@ public async Task GetRecommend(string idx = "0") recommendItems.Remove(recommendItems[i]); continue; } + + if (recommendItems[i].AdInfo != null && recommendItems[i].AdInfo.CreativeContent == null) + { + recommendItems.Remove(recommendItems[i]); + continue; + } + var item = recommendItems[i]; if (item.ThreePointV2 != null && item.ThreePointV2.Count > 0 && item.CardGoto == "av") { From 8850b1aac5405b05475ebd0fc2a5b7e74bfcdac7 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 26 Aug 2024 20:31:32 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E7=A6=81=E7=94=A8=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E5=8F=B3=E4=BE=A7=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E8=AF=A6=E6=83=85Pivot=E4=BA=A4=E4=BA=92=E7=84=A6=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Pages/VideoDetailPage.xaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml index 757682bc..e0e04f2e 100644 --- a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml +++ b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml @@ -295,7 +295,8 @@ - + From 0926456c433069fafa69cd0b1241e233602a770f Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 26 Aug 2024 20:32:10 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E6=96=B9?= =?UTF-8?q?=E5=90=91=E9=94=AE=E6=98=BE=E7=A4=BA=E4=B8=BA=E6=96=B9=E5=90=91?= =?UTF-8?q?=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Models/Functions/InputKey.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/BiliLite.UWP/Models/Functions/InputKey.cs b/src/BiliLite.UWP/Models/Functions/InputKey.cs index bfec7b67..9a2f56c6 100644 --- a/src/BiliLite.UWP/Models/Functions/InputKey.cs +++ b/src/BiliLite.UWP/Models/Functions/InputKey.cs @@ -16,7 +16,11 @@ public class InputKey { 220, "\\" }, { 221, "]" }, { 219, "[" }, - { 192, "`" } + { 192, "`" }, + { 37, "←" }, + { 39, "→" }, + { 38, "↑" }, + { 40, "↓" } }; public VirtualKey BoardKey { get; set; } From 0b17a80f82479376e7c4b19de04f3295c25e2150 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 26 Aug 2024 20:34:34 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=9C=80=E5=A4=A7=E9=9F=B3=E8=B4=A8=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E6=89=BE=E5=88=B0=E6=8C=87=E5=AE=9A=E9=9F=B3=E8=B4=A8?= =?UTF-8?q?=E6=97=B6=E9=BB=98=E8=AE=A4=E9=9F=B3=E8=B4=A8=E6=94=B9=E4=B8=BA?= =?UTF-8?q?192K?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Settings/PlaySettingsControl.xaml | 8 ++++++ .../Settings/PlaySettingsControl.xaml.cs | 10 +++++++ .../Models/Common/SettingConstants.cs | 12 ++++++++ .../Common/Video/SoundQualityDictionary.cs | 28 +++++++++++++++++++ .../Player/Playurl/BiliPlayUrlRequest.cs | 4 +-- 5 files changed, 60 insertions(+), 2 deletions(-) diff --git a/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml b/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml index e2e28d4f..8f1af6ee 100644 --- a/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml +++ b/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml @@ -100,6 +100,14 @@ + + + + + + + diff --git a/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml.cs b/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml.cs index 0469d217..be3d96dc 100644 --- a/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml.cs +++ b/src/BiliLite.UWP/Controls/Settings/PlaySettingsControl.xaml.cs @@ -103,6 +103,16 @@ private void LoadPlayer() SettingService.SetValue(SettingConstants.Player.AUTO_FULL_WINDOW, swPlayerSettingAutoFullWindows.IsOn); }); }); + //默认最大音质 + SwitchEnableDefaultMaxSoundQuality.IsOn = SettingService.GetValue(SettingConstants.Player.ENABLE_DEFAULT_MAX_SOUND_QUALITY, + SettingConstants.Player.DEFAULT_ENABLE_DEFAULT_MAX_SOUND_QUALITY); + SwitchEnableDefaultMaxSoundQuality.Loaded += (sender, e) => + { + SwitchEnableDefaultMaxSoundQuality.Toggled += (obj, args) => + { + SettingService.SetValue(SettingConstants.Player.ENABLE_DEFAULT_MAX_SOUND_QUALITY, SwitchEnableDefaultMaxSoundQuality.IsOn); + }; + }; //自动全屏 swPlayerSettingAutoFullScreen.IsOn = SettingService.GetValue(SettingConstants.Player.AUTO_FULL_SCREEN, false); swPlayerSettingAutoFullScreen.Loaded += new RoutedEventHandler((sender, e) => diff --git a/src/BiliLite.UWP/Models/Common/SettingConstants.cs b/src/BiliLite.UWP/Models/Common/SettingConstants.cs index ace111ba..10384d88 100644 --- a/src/BiliLite.UWP/Models/Common/SettingConstants.cs +++ b/src/BiliLite.UWP/Models/Common/SettingConstants.cs @@ -606,6 +606,18 @@ public class Player [SettingKey(typeof(int))] public const string DEFAULT_SOUND_QUALITY = "PlayerDefaultSoundQuality"; + /// + /// 启用默认最大音质 + /// + [SettingKey(typeof(bool))] + public const string ENABLE_DEFAULT_MAX_SOUND_QUALITY = "PlayerEnableDefaultMaxSoundQuality"; + + /// + /// 默认不启用默认最大音质 + /// + [SettingDefaultValue] + public const bool DEFAULT_ENABLE_DEFAULT_MAX_SOUND_QUALITY = false; + /// /// 比例 int /// diff --git a/src/BiliLite.UWP/Models/Common/Video/SoundQualityDictionary.cs b/src/BiliLite.UWP/Models/Common/Video/SoundQualityDictionary.cs index b3da2410..249de070 100644 --- a/src/BiliLite.UWP/Models/Common/Video/SoundQualityDictionary.cs +++ b/src/BiliLite.UWP/Models/Common/Video/SoundQualityDictionary.cs @@ -1,9 +1,16 @@ using System.Collections.Generic; +using System.Linq; +using BiliLite.Models.Common.Video.PlayUrlInfos; +using BiliLite.Services; namespace BiliLite.Models.Common.Video { public static class SoundQualityConstants { + /// + /// 音质Id,音质名称 + /// 根据音质大小从低到高排序 + /// private static Dictionary m_dictionary = new Dictionary() { {30216,"64K" }, @@ -20,5 +27,26 @@ public static Dictionary Dictionary return m_dictionary; } } + + public static BiliDashAudioPlayUrlInfo GetDefaultAudio(List audios) + { + var enableMaxQuality = SettingService.GetValue( + SettingConstants.Player.ENABLE_DEFAULT_MAX_SOUND_QUALITY, + SettingConstants.Player.DEFAULT_ENABLE_DEFAULT_MAX_SOUND_QUALITY + ); + + var preferredQualityIds = enableMaxQuality + ? new[] { 30251, 30250, 30280, 30232, 30216 } + : new[] { 30280, 30232, 30216, 30251, 30250 }; + + foreach (var qualityId in preferredQualityIds) + { + var audio = audios.FirstOrDefault(x => x.QualityID == qualityId); + if (audio != null) + return audio; + } + + return audios.FirstOrDefault(); + } } } diff --git a/src/BiliLite.UWP/Modules/Player/Playurl/BiliPlayUrlRequest.cs b/src/BiliLite.UWP/Modules/Player/Playurl/BiliPlayUrlRequest.cs index 76fd0930..57fcbe0a 100644 --- a/src/BiliLite.UWP/Modules/Player/Playurl/BiliPlayUrlRequest.cs +++ b/src/BiliLite.UWP/Modules/Player/Playurl/BiliPlayUrlRequest.cs @@ -218,8 +218,8 @@ private async Task ParseBiliPlayUrlInfoAudioDash(BiliPlayUrlQualit if (audios.Any()) { var audioQuality = info.AudioQualites.FirstOrDefault(x => x.QualityID == soundQualityId); - var defaultAudio = qn > 64 ? audios.LastOrDefault() : audios.FirstOrDefault(); - info.CurrentAudioQuality = audioQuality ?? info.AudioQualites.FirstOrDefault(x => x.QualityID == defaultAudio.id); + var defaultAudio = SoundQualityConstants.GetDefaultAudio(info.AudioQualites); + info.CurrentAudioQuality = audioQuality ?? defaultAudio; currentAudio = info.CurrentAudioQuality.Audio; } return currentAudio; From 5243acba4c478f5403b92defc9b4cdab81adb5bf Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Tue, 27 Aug 2024 22:54:22 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E5=89=A7=E9=9B=86=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=BB=E8=B4=A8=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs index a89c55cc..537e1043 100644 --- a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs +++ b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs @@ -24,7 +24,7 @@ public ApiModel VideoPlayUrl(string aid, string cid, int qn, bool dash, bool pro need_cookie = true, }; api.parameter += "&fourk=1&fnver=0&fnval=4048"; - + if (proxy) { api.parameter += $"&area={area}"; @@ -49,7 +49,7 @@ public ApiModel SeasonPlayUrl(string aid, string cid, string ep_id, int qn, int { api.parameter += $"&access_key={SettingService.Account.AccessKey}&mid={SettingService.Account.Profile.mid}"; } - api.parameter += "&fourk=1&fnver=0&fnval=4048"; + api.parameter += "&fourk=1&fnver=0&fnval=12240"; api.parameter += ApiHelper.GetSign(api.parameter, AppKey); if (proxy) From 71f79f53976d1f492a7c2da9346823e2760afde7 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Tue, 27 Aug 2024 22:55:02 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E5=8F=B3=E4=BE=A7=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Pages/VideoDetailPage.xaml | 3 +-- src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml index e0e04f2e..e30e007b 100644 --- a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml +++ b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml @@ -295,8 +295,7 @@ - + diff --git a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs index 29abd483..6150c002 100644 --- a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs +++ b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs @@ -752,5 +752,12 @@ private async void BtnFav_OnClick(object sender, RoutedEventArgs e) await m_viewModel.UpdateFav(m_viewModel.VideoInfo.Aid, true); } } + + private void Pivot_OnPreviewKeyDown(object sender, KeyRoutedEventArgs e) + { + if ((e.Key == VirtualKey.Right || e.Key == VirtualKey.Left) && + e.OriginalSource.GetType() != typeof(TextBox)) + e.Handled = true; + } } } From db606b734892f57c06641aaf7421f0556403f19c Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Tue, 27 Aug 2024 22:55:54 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8DCDN=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E6=B5=8B=E8=AF=95=E5=BB=B6=E8=BF=9F=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Settings/PlaySettingsControlViewModel.cs | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/BiliLite.UWP/ViewModels/Settings/PlaySettingsControlViewModel.cs b/src/BiliLite.UWP/ViewModels/Settings/PlaySettingsControlViewModel.cs index 8fd68bd3..e158222d 100644 --- a/src/BiliLite.UWP/ViewModels/Settings/PlaySettingsControlViewModel.cs +++ b/src/BiliLite.UWP/ViewModels/Settings/PlaySettingsControlViewModel.cs @@ -44,17 +44,28 @@ private async Task GetDelay(string server) //随便整个链接 var testUrl = $"https://{server}/upgcxcode/76/62/729206276/729206276_nb2-1-30112.m4s"; + Stopwatch sw = Stopwatch.StartNew(); try { - Stopwatch sw = Stopwatch.StartNew(); - var res = await testUrl.WithTimeout(2).GetAsync(); - sw.Stop(); - return sw.ElapsedMilliseconds; + var res = await testUrl.WithHeader( + "user-agent", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36") + .WithTimeout(2).GetAsync(); } - catch (Exception) + catch (FlurlHttpException ex) + { + if (ex.StatusCode != 959 && ex.StatusCode != 403) + { + return -1; + } + } + catch (Exception ex) { return -1; } + + sw.Stop(); + return sw.ElapsedMilliseconds; } // UWP不支持ping,后续更新WindowsAppSDK再考虑启用 From 43f2a9507d9629a32bf0515d1b19a674780974af Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 29 Aug 2024 19:25:09 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E8=AE=B0=E5=BD=95httpResults=E7=9A=84jso?= =?UTF-8?q?n=E8=A7=A3=E6=9E=90=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Extensions/HttpResultsExtensions.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/BiliLite.UWP/Extensions/HttpResultsExtensions.cs b/src/BiliLite.UWP/Extensions/HttpResultsExtensions.cs index 6140b867..1233b0e4 100644 --- a/src/BiliLite.UWP/Extensions/HttpResultsExtensions.cs +++ b/src/BiliLite.UWP/Extensions/HttpResultsExtensions.cs @@ -4,11 +4,14 @@ using Newtonsoft.Json.Linq; using System; using System.Threading.Tasks; +using BiliLite.Services; namespace BiliLite.Extensions { public static class HttpResultsExtensions { + private static readonly ILogger _logger = GlobalLogger.FromCurrentType(); + public static async Task GetJson(this HttpResults httpResults) { return await Task.Run(() => @@ -36,8 +39,9 @@ public static async Task> GetData(this HttpResults httpResult { return await GetJson>(httpResults); } - catch (Exception) + catch (Exception ex) { + _logger.Error(ex.Message, ex); return null; } } From 74600133d6f4718f018161aafa5d907d700bc081 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 29 Aug 2024 19:26:39 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=92=E5=8A=A8?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E7=9A=84cid=E9=95=BF=E5=BA=A6=E8=B6=8A?= =?UTF-8?q?=E7=95=8Cint=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Modules/Player/InteractionVideoVM.cs | 4 ++-- src/BiliLite.UWP/Modules/Player/PlayerVM.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BiliLite.UWP/Modules/Player/InteractionVideoVM.cs b/src/BiliLite.UWP/Modules/Player/InteractionVideoVM.cs index 4f566f0d..314462e8 100644 --- a/src/BiliLite.UWP/Modules/Player/InteractionVideoVM.cs +++ b/src/BiliLite.UWP/Modules/Player/InteractionVideoVM.cs @@ -115,7 +115,7 @@ public class InteractionEdgeInfoStoryListModel public int node_id { get; set; } public int edge_id { get; set; } public string title { get; set; } - public int cid { get; set; } + public long cid { get; set; } public int start_pos { get; set; } public string cover { get; set; } public int cursor { get; set; } @@ -129,7 +129,7 @@ public class InteractionEdgeInfoChoiceModel public string platform_action { get; set; } public string native_action { get; set; } public string condition { get; set; } - public int cid { get; set; } + public long cid { get; set; } public string option { get; set; } public int is_default { get; set; } public string cover { get; set; } diff --git a/src/BiliLite.UWP/Modules/Player/PlayerVM.cs b/src/BiliLite.UWP/Modules/Player/PlayerVM.cs index 6ddf21b6..9d05b143 100644 --- a/src/BiliLite.UWP/Modules/Player/PlayerVM.cs +++ b/src/BiliLite.UWP/Modules/Player/PlayerVM.cs @@ -295,7 +295,7 @@ public class InteractionHistoryNodeModel { public int node_id { get; set; } public string title { get; set; } - public int cid { get; set; } + public long cid { get; set; } } public class InteractionModel From a8b86425ae2e77da9e19a09c574df860d0f60374 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 29 Aug 2024 19:32:10 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E6=92=AD=E6=94=BE=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E8=AF=B7=E6=B1=82=E5=9C=B0=E5=9D=80=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0referer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs index 537e1043..e8be0aa6 100644 --- a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs +++ b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs @@ -55,6 +55,10 @@ public ApiModel SeasonPlayUrl(string aid, string cid, string ep_id, int qn, int if (proxy) { api.parameter += $"&area={area}"; + api.headers = new Dictionary() + { + {"referer","https://www.bilibili.com"} + }; } return api; } From efe2478ae4a8ecb33483cd9de704da0f1627db87 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 29 Aug 2024 20:07:06 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dusing=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs index e8be0aa6..49768196 100644 --- a/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs +++ b/src/BiliLite.UWP/Models/Requests/Api/PlayerAPI.cs @@ -2,6 +2,7 @@ using BiliLite.Models.Common; using BiliLite.Services; using System; +using System.Collections.Generic; using System.Threading.Tasks; namespace BiliLite.Models.Requests.Api From 6997df60bfeebdf5aed1e3ae625936cfb6268673 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Sat, 31 Aug 2024 11:11:50 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BF=AB=E9=80=9F?= =?UTF-8?q?=E6=94=B6=E8=97=8F=E8=AE=BE=E7=BD=AE=E9=A1=B9=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs index 6150c002..d65abb6a 100644 --- a/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs +++ b/src/BiliLite.UWP/Pages/VideoDetailPage.xaml.cs @@ -747,7 +747,8 @@ private async void FavList_OnPointerPressed(object sender, PointerRoutedEventArg private async void BtnFav_OnClick(object sender, RoutedEventArgs e) { - if (m_viewModel.VideoInfo.ReqUser.Favorite != 1) + if (SettingService.GetValue(SettingConstants.UI.QUICK_DO_FAV, SettingConstants.UI.DEFAULT_QUICK_DO_FAV) && + m_viewModel.VideoInfo.ReqUser.Favorite != 1) { await m_viewModel.UpdateFav(m_viewModel.VideoInfo.Aid, true); } From d4d08038e12f8ab8af19f0b984fef09340dd9828 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 5 Sep 2024 19:32:18 +0800 Subject: [PATCH 13/19] =?UTF-8?q?#795=20#788=20=E5=8D=95=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=A8=A1=E5=BC=8FScrollViewer=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Pages/Home/DynamicPage.xaml | 60 ++++---- src/BiliLite.UWP/Pages/Home/HotPage.xaml | 136 +++++++++--------- .../Pages/Home/RecommendPage.xaml | 82 +++++------ 3 files changed, 142 insertions(+), 136 deletions(-) diff --git a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml index 8d907a72..c8c5715e 100644 --- a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml @@ -122,36 +122,38 @@ - - - - + + + + + - - - - 加载更多 - - - - - + + + + 加载更多 + + + + + + diff --git a/src/BiliLite.UWP/Pages/Home/HotPage.xaml b/src/BiliLite.UWP/Pages/Home/HotPage.xaml index acf449fd..b2fe4611 100644 --- a/src/BiliLite.UWP/Pages/Home/HotPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/HotPage.xaml @@ -16,7 +16,8 @@ - + - - - + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + 加载更多 + + - - - - - - - - - - - - - - - - - - - - - 加载更多 - - - - - + + + diff --git a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml index 627b6106..1ade911e 100644 --- a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml @@ -164,48 +164,50 @@ - + - - - - - - - - - - - - - - - - - - - - 加载更多 - - - - - + + + + + + + + + + + + + + + + + + + 加载更多 + + + + + + From 1bd8c65659c71d97f65419e68a5a649b68e79316 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Thu, 5 Sep 2024 19:33:34 +0800 Subject: [PATCH 14/19] =?UTF-8?q?#799=20=E8=B6=85=E8=BF=87100=E5=88=86p?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E5=99=A8=E4=B8=AD=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Controls/PlayerControl.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BiliLite.UWP/Controls/PlayerControl.xaml b/src/BiliLite.UWP/Controls/PlayerControl.xaml index 97dedd97..47ff1489 100644 --- a/src/BiliLite.UWP/Controls/PlayerControl.xaml +++ b/src/BiliLite.UWP/Controls/PlayerControl.xaml @@ -302,12 +302,12 @@ - + + MinWidth="25"> Date: Fri, 6 Sep 2024 20:05:24 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E7=94=B1=E4=BA=8E=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=97=A0=E9=99=90=E7=BF=BB=E9=A1=B5bug=EF=BC=8C=E6=92=A4?= =?UTF-8?q?=E5=9B=9Ed4d0803=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Pages/Home/DynamicPage.xaml | 32 ++--- src/BiliLite.UWP/Pages/Home/HotPage.xaml | 136 +++++++++--------- .../Pages/Home/RecommendPage.xaml | 58 ++++---- 3 files changed, 110 insertions(+), 116 deletions(-) diff --git a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml index c8c5715e..53c2de3d 100644 --- a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml @@ -122,8 +122,7 @@ - - - - - + + + - - - - 加载更多 - - - - - - + + + + 加载更多 + + + + + diff --git a/src/BiliLite.UWP/Pages/Home/HotPage.xaml b/src/BiliLite.UWP/Pages/Home/HotPage.xaml index b2fe4611..dd4ea514 100644 --- a/src/BiliLite.UWP/Pages/Home/HotPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/HotPage.xaml @@ -16,8 +16,7 @@ - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - 加载更多 - - + - - - + + + + + + + + + + + + + + + + + + + + + 加载更多 + + + + + diff --git a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml index 1ade911e..88b36b9b 100644 --- a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml @@ -164,8 +164,7 @@ - - - - - - - - - - - - - - - - - - - - - - 加载更多 - - - - - - + + + + + + + + + + + + + + + + + + + 加载更多 + + + + + From 2253015afe49312958248cc6c4e07b3a37db1444 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 9 Sep 2024 20:05:48 +0800 Subject: [PATCH 16/19] =?UTF-8?q?#795=20#788=20=E5=8D=95=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E6=BB=9A=E5=8A=A8=E5=AE=9A=E4=BD=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/BiliLite.UWP.csproj | 1 + src/BiliLite.UWP/BiliLite.UWP.csproj.native | 1 + src/BiliLite.UWP/Controls/MyAdaptiveGridView.cs | 14 ++++++++++++++ src/BiliLite.UWP/NoTabMainPage.xaml.cs | 4 ++++ src/BiliLite.UWP/Pages/Home/DynamicPage.xaml | 1 + src/BiliLite.UWP/Pages/Home/DynamicPage.xaml.cs | 7 ++++++- src/BiliLite.UWP/Pages/Home/HotPage.xaml | 1 + src/BiliLite.UWP/Pages/Home/HotPage.xaml.cs | 7 ++++++- src/BiliLite.UWP/Pages/Home/RecommendPage.xaml.cs | 7 ++++++- src/BiliLite.UWP/Pages/HomePage.xaml.cs | 10 +++++++++- src/BiliLite.UWP/Pages/IScrollRecorablePage.cs | 13 +++++++++++++ 11 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/BiliLite.UWP/Pages/IScrollRecorablePage.cs diff --git a/src/BiliLite.UWP/BiliLite.UWP.csproj b/src/BiliLite.UWP/BiliLite.UWP.csproj index 12dc6b85..ec8ba788 100644 --- a/src/BiliLite.UWP/BiliLite.UWP.csproj +++ b/src/BiliLite.UWP/BiliLite.UWP.csproj @@ -257,6 +257,7 @@ + diff --git a/src/BiliLite.UWP/BiliLite.UWP.csproj.native b/src/BiliLite.UWP/BiliLite.UWP.csproj.native index 08cbb32c..7ae34d0f 100644 --- a/src/BiliLite.UWP/BiliLite.UWP.csproj.native +++ b/src/BiliLite.UWP/BiliLite.UWP.csproj.native @@ -256,6 +256,7 @@ + diff --git a/src/BiliLite.UWP/Controls/MyAdaptiveGridView.cs b/src/BiliLite.UWP/Controls/MyAdaptiveGridView.cs index a461c848..a5eaba68 100644 --- a/src/BiliLite.UWP/Controls/MyAdaptiveGridView.cs +++ b/src/BiliLite.UWP/Controls/MyAdaptiveGridView.cs @@ -23,6 +23,8 @@ public ICommand LoadMoreCommand } public bool CanLoadMore { get; set; } = false; + public double ScrollPosition => scrollViewer.VerticalOffset; + public double LoadMoreBottomOffset { get { return Convert.ToDouble(GetValue(LoadMoreBottomOffsetProperty)); } @@ -88,5 +90,17 @@ private void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEven } } + + public void ScrollTo(double offset) + { + scrollViewer.ScrollToVerticalOffset(offset); + } + + public async Task ScrollRecover() + { + var position = ScrollPosition; + await Task.Delay(50); + ScrollTo(position); + } } } diff --git a/src/BiliLite.UWP/NoTabMainPage.xaml.cs b/src/BiliLite.UWP/NoTabMainPage.xaml.cs index 23320ecd..1472b9ea 100644 --- a/src/BiliLite.UWP/NoTabMainPage.xaml.cs +++ b/src/BiliLite.UWP/NoTabMainPage.xaml.cs @@ -172,6 +172,10 @@ private void btnBack_Click(object sender, RoutedEventArgs e) { frame.GoBack(); BackTitle(); + if (frame.Content is IScrollRecoverablePage page) + { + page.ScrollRecover(); + } } } diff --git a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml index 53c2de3d..ea94f823 100644 --- a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml @@ -132,6 +132,7 @@ SelectionMode="None" IsItemClickEnabled="True" ItemsSource="{x:Bind Path=m_viewModel.Items,Mode=OneWay}" + x:Name="DynGridView" ItemClick="AdaptiveGridView_ItemClick" PointerPressed="AdaptiveGridView_PointerPressed" ItemTemplateSelector="{x:Bind Path=m_viewModel.DynamicItemDataTemplateSelector,Mode=OneWay}" diff --git a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml.cs b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml.cs index 15cc4a90..51b5dae5 100644 --- a/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml.cs +++ b/src/BiliLite.UWP/Pages/Home/DynamicPage.xaml.cs @@ -17,7 +17,7 @@ namespace BiliLite.Pages.Home /// /// 可用于自身或导航至 Frame 内部的空白页。 /// - public sealed partial class DynamicPage : Page, IRefreshablePage + public sealed partial class DynamicPage : Page, IRefreshablePage, IScrollRecoverablePage { private readonly DynamicPageViewModel m_viewModel; @@ -118,5 +118,10 @@ private void AddToWatchLater_Click(object sender, RoutedEventArgs e) var data = (sender as MenuFlyoutItem).DataContext as DynamicItemModel; Modules.User.WatchLaterVM.Instance.AddToWatchlater(data.Video.Aid); } + + public async void ScrollRecover() + { + await DynGridView.ScrollRecover(); + } } } diff --git a/src/BiliLite.UWP/Pages/Home/HotPage.xaml b/src/BiliLite.UWP/Pages/Home/HotPage.xaml index dd4ea514..12ce322b 100644 --- a/src/BiliLite.UWP/Pages/Home/HotPage.xaml +++ b/src/BiliLite.UWP/Pages/Home/HotPage.xaml @@ -17,6 +17,7 @@ /// 可用于自身或导航至 Frame 内部的空白页。 /// - public sealed partial class HotPage : Page, IRefreshablePage + public sealed partial class HotPage : Page, IRefreshablePage, IScrollRecoverablePage { HotVM hotVM; public HotPage() @@ -105,5 +105,10 @@ public async Task Refresh() { hotVM.Refresh(); } + + public async void ScrollRecover() + { + await HotGridView.ScrollRecover(); + } } } diff --git a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml.cs b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml.cs index 2981b658..d6d54d10 100644 --- a/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml.cs +++ b/src/BiliLite.UWP/Pages/Home/RecommendPage.xaml.cs @@ -21,7 +21,7 @@ namespace BiliLite.Pages.Home /// /// 可用于自身或导航至 Frame 内部的空白页。 /// - public sealed partial class RecommendPage : Page, IRefreshablePage + public sealed partial class RecommendPage : Page, IRefreshablePage, IScrollRecoverablePage { #region Fields @@ -49,6 +49,11 @@ public async Task Refresh() m_viewModel.Refresh(); } + public async void ScrollRecover() + { + await RecommendGridView.ScrollRecover(); + } + #endregion #region Protected Methods diff --git a/src/BiliLite.UWP/Pages/HomePage.xaml.cs b/src/BiliLite.UWP/Pages/HomePage.xaml.cs index ac99a0e8..4f1c6b8c 100644 --- a/src/BiliLite.UWP/Pages/HomePage.xaml.cs +++ b/src/BiliLite.UWP/Pages/HomePage.xaml.cs @@ -19,7 +19,7 @@ namespace BiliLite.Pages /// /// 可用于自身或导航至 Frame 内部的空白页。 /// - public sealed partial class HomePage : Page, IRefreshablePage + public sealed partial class HomePage : Page, IRefreshablePage, IScrollRecoverablePage { private static readonly ILogger logger = GlobalLogger.FromCurrentType(); @@ -339,5 +339,13 @@ private async void SearchBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTe m_viewModel.SuggestSearchContents.ReplaceRange(suggestSearchContents); } } + + public void ScrollRecover() + { + if (frame.Content is IScrollRecoverablePage page) + { + page.ScrollRecover(); + } + } } } diff --git a/src/BiliLite.UWP/Pages/IScrollRecorablePage.cs b/src/BiliLite.UWP/Pages/IScrollRecorablePage.cs new file mode 100644 index 00000000..8d1763ab --- /dev/null +++ b/src/BiliLite.UWP/Pages/IScrollRecorablePage.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BiliLite.Pages +{ + public interface IScrollRecoverablePage + { + public void ScrollRecover(); + } +} From d41c806af315a566874423b1a0431a0cfb8caa57 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Mon, 9 Sep 2024 20:06:46 +0800 Subject: [PATCH 17/19] =?UTF-8?q?#796=20=E5=BF=AB=E9=80=9F=E6=94=B6?= =?UTF-8?q?=E8=97=8F=E9=BB=98=E8=AE=A4=E6=94=B6=E8=97=8F=E5=A4=B9=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/Settings/UISettingsControl.xaml | 14 ++++++++++---- .../Controls/Settings/UISettingsControl.xaml.cs | 10 ++++++++++ src/BiliLite.UWP/Models/Common/SettingConstants.cs | 12 ++++++++++++ .../ViewModels/Video/VideoDetailPageViewModel.cs | 4 +++- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml b/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml index 64740268..67f861e6 100644 --- a/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml +++ b/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml @@ -291,14 +291,20 @@ - - + - + - + + + + + + + diff --git a/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml.cs b/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml.cs index e99a345b..fcb763cb 100644 --- a/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml.cs +++ b/src/BiliLite.UWP/Controls/Settings/UISettingsControl.xaml.cs @@ -195,6 +195,16 @@ private void LoadUI() }; }; + // 默认收藏夹 + DefaultUseFav.Text = SettingService.GetValue(SettingConstants.UI.DEFAULT_USE_FAV, SettingConstants.UI.DEFAULT_USE_FAV_VALUE); + DefaultUseFav.Loaded += (sender, e) => + { + DefaultUseFav.TextChanged += (obj, args) => + { + SettingService.SetValue(SettingConstants.UI.DEFAULT_USE_FAV, DefaultUseFav.Text); + }; + }; + //动态显示 cbDetailDisplay.SelectedIndex = SettingService.GetValue(SettingConstants.UI.DETAIL_DISPLAY, 0); cbDetailDisplay.Loaded += new RoutedEventHandler((sender, e) => diff --git a/src/BiliLite.UWP/Models/Common/SettingConstants.cs b/src/BiliLite.UWP/Models/Common/SettingConstants.cs index 10384d88..820fccf2 100644 --- a/src/BiliLite.UWP/Models/Common/SettingConstants.cs +++ b/src/BiliLite.UWP/Models/Common/SettingConstants.cs @@ -129,6 +129,18 @@ public class UI [SettingDefaultValue] public const bool DEFAULT_QUICK_DO_FAV = true; + /// + /// 默认收藏夹 + /// + [SettingKey(typeof(string))] + public const string DEFAULT_USE_FAV = "DefaultUseFav"; + + /// + /// 默认收藏夹值 + /// + [SettingDefaultValue] + public const string DEFAULT_USE_FAV_VALUE = "默认收藏夹"; + /// /// 隐藏赞助按钮 /// diff --git a/src/BiliLite.UWP/ViewModels/Video/VideoDetailPageViewModel.cs b/src/BiliLite.UWP/ViewModels/Video/VideoDetailPageViewModel.cs index f663bdab..b89bc2ca 100644 --- a/src/BiliLite.UWP/ViewModels/Video/VideoDetailPageViewModel.cs +++ b/src/BiliLite.UWP/ViewModels/Video/VideoDetailPageViewModel.cs @@ -620,10 +620,12 @@ public async Task UpdateFav(string avid, bool favDefault = false) { var newIdList = new List(); + var defaultUseFav = SettingService.GetValue(SettingConstants.UI.DEFAULT_USE_FAV, + SettingConstants.UI.DEFAULT_USE_FAV_VALUE); if (!favDefault) newIdList = MyFavorite.Where(x => x.IsFav).Select(x => x.Id).ToList(); else - newIdList.Add(MyFavorite.First(x => x.Title == "默认收藏夹").Id); + newIdList.Add(MyFavorite.First(x => x.Title == defaultUseFav).Id); var delIdList = ExistFavIdList.Except(newIdList).ToList(); var addIdList = newIdList.Except(ExistFavIdList).ToList(); From 540ee106be88e986396ec7872dc32b30cc1f0592 Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Tue, 10 Sep 2024 22:09:11 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E8=A2=AB=E9=A3=8E=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BiliLite.UWP/Models/Requests/Api/User/UserDetailAPI.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/BiliLite.UWP/Models/Requests/Api/User/UserDetailAPI.cs b/src/BiliLite.UWP/Models/Requests/Api/User/UserDetailAPI.cs index 617888c8..a2850d0b 100644 --- a/src/BiliLite.UWP/Models/Requests/Api/User/UserDetailAPI.cs +++ b/src/BiliLite.UWP/Models/Requests/Api/User/UserDetailAPI.cs @@ -26,7 +26,8 @@ public async Task UserInfo(string mid) { method = RestSharp.Method.Get, baseUrl = $"{ApiHelper.API_BASE_URL}/x/space/wbi/acc/info", - parameter = ApiHelper.MustParameter(AppKey, needAccesskey: true) + $"&mid={mid}", + parameter = $"mid={mid}", + need_cookie = true }; api.parameter = await ApiHelper.GetWbiSign(api.parameter); return api; From 6ea4e7b83fd74d53e38293e621578e1ec59c2c9d Mon Sep 17 00:00:00 2001 From: ywmoyue Date: Sun, 15 Sep 2024 16:22:06 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=95=99=E7=A8=8B=E5=92=8C=E9=B8=A3=E8=B0=A2=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- document/_img/contributors.png | Bin 17323 -> 58851 bytes document/install-readme.md | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/document/_img/contributors.png b/document/_img/contributors.png index 839b886b84f27b97b362f0cad63a21870fc134ef..31b2f04e987c5d0c85f5d2fa23fe53fdae7df3a2 100644 GIT binary patch literal 58851 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 literal 17323 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�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 dX_|Ii{tuNq7Oql} # Biliuwp-lite安装教程 -- [Windows10 安装教程](install-readme.md#Windows10) -- [Windows11 安装教程](install-readme.md#Windows11) +- [Windows10 安装教程(脚本安装方式)](install-readme.md#Windows10) +- [Windows11 安装教程(Appx直接安装方式/不推荐)](install-readme.md#Windows11) - [常见问题](install-readme.md#其他问题) - [网络/代理问题](install-readme.md#网络代理问题) ## 安装要求系统版本信息 - Windows10 1903及以上 - +- 4.6.x 版本更新 4.7.x, 需要卸载并重启系统后使用脚本方式安装 +- 4.7.x第一次安装需要使用脚本方式安装 ## Windows10