diff --git a/DownKyi/DownKyi.csproj b/DownKyi/DownKyi.csproj index 3f8e5ca..d3f6769 100644 --- a/DownKyi/DownKyi.csproj +++ b/DownKyi/DownKyi.csproj @@ -93,6 +93,7 @@ + diff --git a/DownKyi/Services/SearchService.cs b/DownKyi/Services/SearchService.cs new file mode 100644 index 0000000..f1426da --- /dev/null +++ b/DownKyi/Services/SearchService.cs @@ -0,0 +1,104 @@ +using DownKyi.Core.BiliApi.BiliUtils; +using DownKyi.Utils; +using DownKyi.ViewModels; +using Prism.Events; + +namespace DownKyi.Services +{ + public class SearchService + { + /// + /// 解析支持的输入 + /// + /// + /// + /// + /// + public bool BiliInput(string input, string parentViewName, IEventAggregator eventAggregator) + { + // 视频 + if (ParseEntrance.IsAvId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, $"{ParseEntrance.VideoUrl}{input.ToLower()}"); + } + else if (ParseEntrance.IsAvUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + else if (ParseEntrance.IsBvId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, $"{ParseEntrance.VideoUrl}{input}"); + } + else if (ParseEntrance.IsBvUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + // 番剧(电影、电视剧) + else if (ParseEntrance.IsBangumiSeasonId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, $"{ParseEntrance.BangumiUrl}{input.ToLower()}"); + } + else if (ParseEntrance.IsBangumiSeasonUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + else if (ParseEntrance.IsBangumiEpisodeId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, $"{ParseEntrance.BangumiUrl}{input.ToLower()}"); + } + else if (ParseEntrance.IsBangumiEpisodeUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + else if (ParseEntrance.IsBangumiMediaId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, $"{ParseEntrance.BangumiMediaUrl}{input.ToLower()}"); + } + else if (ParseEntrance.IsBangumiMediaUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + // 课程 + else if (ParseEntrance.IsCheeseSeasonUrl(input) || ParseEntrance.IsCheeseEpisodeUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, parentViewName, input); + } + // 用户(参数传入mid) + else if (ParseEntrance.IsUserId(input)) + { + NavigateToView.NavigateToViewUserSpace(eventAggregator, ViewIndexViewModel.Tag, ParseEntrance.GetUserId(input)); + } + else if (ParseEntrance.IsUserUrl(input)) + { + NavigateToView.NavigateToViewUserSpace(eventAggregator, ViewIndexViewModel.Tag, ParseEntrance.GetUserId(input)); + } + // 收藏夹 + else if (ParseEntrance.IsFavoritesId(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, parentViewName, ParseEntrance.GetFavoritesId(input)); + } + else if (ParseEntrance.IsFavoritesUrl(input)) + { + NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, parentViewName, ParseEntrance.GetFavoritesId(input)); + } + else + { + return false; + } + return true; + } + + /// + /// 搜索关键词 + /// + /// + /// + /// + public void SearchKey(string key, string parentViewName, IEventAggregator eventAggregator) + { + // TODO + } + + + } +} diff --git a/DownKyi/ViewModels/MainWindowViewModel.cs b/DownKyi/ViewModels/MainWindowViewModel.cs index 5167f55..c806981 100644 --- a/DownKyi/ViewModels/MainWindowViewModel.cs +++ b/DownKyi/ViewModels/MainWindowViewModel.cs @@ -1,8 +1,8 @@ -using DownKyi.Core.BiliApi.BiliUtils; -using DownKyi.Core.Logging; +using DownKyi.Core.Logging; using DownKyi.Core.Settings; using DownKyi.Events; using DownKyi.Images; +using DownKyi.Services; using DownKyi.Utils; using Prism.Commands; using Prism.Events; @@ -353,71 +353,8 @@ namespace DownKyi.ViewModels return; } - // 视频 - if (ParseEntrance.IsAvId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, $"{ParseEntrance.VideoUrl}{input.ToLower()}"); - } - else if (ParseEntrance.IsAvUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - else if (ParseEntrance.IsBvId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, $"{ParseEntrance.VideoUrl}{input}"); - } - else if (ParseEntrance.IsBvUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - // 番剧(电影、电视剧) - else if (ParseEntrance.IsBangumiSeasonId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, $"{ParseEntrance.BangumiUrl}{input.ToLower()}"); - } - else if (ParseEntrance.IsBangumiSeasonUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - else if (ParseEntrance.IsBangumiEpisodeId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, $"{ParseEntrance.BangumiUrl}{input.ToLower()}"); - } - else if (ParseEntrance.IsBangumiEpisodeUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - else if (ParseEntrance.IsBangumiMediaId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, $"{ParseEntrance.BangumiMediaUrl}{input.ToLower()}"); - } - else if (ParseEntrance.IsBangumiMediaUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - // 课程 - else if (ParseEntrance.IsCheeseSeasonUrl(input) || ParseEntrance.IsCheeseEpisodeUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, ViewIndexViewModel.Tag, input); - } - // 用户(参数传入mid) - else if (ParseEntrance.IsUserId(input)) - { - NavigateToView.NavigateToViewUserSpace(eventAggregator, ViewIndexViewModel.Tag, ParseEntrance.GetUserId(input)); - } - else if (ParseEntrance.IsUserUrl(input)) - { - NavigateToView.NavigateToViewUserSpace(eventAggregator, ViewIndexViewModel.Tag, ParseEntrance.GetUserId(input)); - } - // 收藏夹 - else if (ParseEntrance.IsFavoritesId(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, ViewIndexViewModel.Tag, ParseEntrance.GetFavoritesId(input)); - } - else if (ParseEntrance.IsFavoritesUrl(input)) - { - NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, ViewIndexViewModel.Tag, ParseEntrance.GetFavoritesId(input)); - } + SearchService searchService = new SearchService(); + searchService.BiliInput(input, ViewIndexViewModel.Tag, eventAggregator); } #endregion diff --git a/DownKyi/ViewModels/ViewIndexViewModel.cs b/DownKyi/ViewModels/ViewIndexViewModel.cs index 7da23ea..c052ef1 100644 --- a/DownKyi/ViewModels/ViewIndexViewModel.cs +++ b/DownKyi/ViewModels/ViewIndexViewModel.cs @@ -1,10 +1,10 @@ -using DownKyi.Core.BiliApi.BiliUtils; -using DownKyi.Core.BiliApi.Users; +using DownKyi.Core.BiliApi.Users; using DownKyi.Core.Logging; using DownKyi.Core.Settings; using DownKyi.Core.Settings.Models; using DownKyi.Core.Storage; using DownKyi.Images; +using DownKyi.Services; using DownKyi.Utils; using Prism.Commands; using Prism.Events; @@ -222,74 +222,12 @@ namespace DownKyi.ViewModels LogManager.Debug(Tag, $"InputText: {InputText}"); - // 视频 - if (ParseEntrance.IsAvId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, $"{ParseEntrance.VideoUrl}{InputText.ToLower()}"); - } - else if (ParseEntrance.IsAvUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - else if (ParseEntrance.IsBvId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, $"{ParseEntrance.VideoUrl}{InputText}"); - } - else if (ParseEntrance.IsBvUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - // 番剧(电影、电视剧) - else if (ParseEntrance.IsBangumiSeasonId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, $"{ParseEntrance.BangumiUrl}{InputText.ToLower()}"); - } - else if (ParseEntrance.IsBangumiSeasonUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - else if (ParseEntrance.IsBangumiEpisodeId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, $"{ParseEntrance.BangumiUrl}{InputText.ToLower()}"); - } - else if (ParseEntrance.IsBangumiEpisodeUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - else if (ParseEntrance.IsBangumiMediaId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, $"{ParseEntrance.BangumiMediaUrl}{InputText.ToLower()}"); - } - else if (ParseEntrance.IsBangumiMediaUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - // 课程 - else if (ParseEntrance.IsCheeseSeasonUrl(InputText) || ParseEntrance.IsCheeseEpisodeUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewVideoDetailViewModel.Tag, Tag, InputText); - } - // 用户(参数传入mid) - else if (ParseEntrance.IsUserId(InputText)) - { - NavigateToView.NavigateToViewUserSpace(eventAggregator, Tag, ParseEntrance.GetUserId(InputText)); - } - else if (ParseEntrance.IsUserUrl(InputText)) - { - NavigateToView.NavigateToViewUserSpace(eventAggregator, Tag, ParseEntrance.GetUserId(InputText)); - } - // 收藏夹 - else if (ParseEntrance.IsFavoritesId(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, Tag, ParseEntrance.GetFavoritesId(InputText)); - } - else if (ParseEntrance.IsFavoritesUrl(InputText)) - { - NavigateToView.NavigationView(eventAggregator, ViewPublicFavoritesViewModel.Tag, Tag, ParseEntrance.GetFavoritesId(InputText)); - } - // TODO 关键词搜索 - else + SearchService searchService = new SearchService(); + bool isSupport = searchService.BiliInput(InputText, Tag, eventAggregator); + if (!isSupport) { + // 关键词搜索 + searchService.SearchKey(InputText, Tag, eventAggregator); } InputText = string.Empty;