private async void BangumiListGridView_ItemClick(object sender, ItemClickEventArgs e) { var info = e.ClickedItem as BangumiViewModel; if (info.SeasonId == 0) { var list = BangumiListGridView.ItemsSource as ObservableCollection <BangumiViewModel>; var count = list.Count - 1; async Task NoticeNoMore() { var dialog = new NoticeDialog("提示", "已经没有更多了"); await dialog.ShowAsync(); } if ((count < 15) || (count % 15 != 0)) { await NoticeNoMore(); return; } var newList = await BiliFavHelper.GetFavBangumiMasterListAsync((count / 15) + 1, Settings.Uid, Settings.SESSDATA); if (newList == null) { await NoticeNoMore(); return; } var toAddList = new List <BangumiViewModel>(); list.Remove(list.Last()); foreach (var bangumi in newList) { var model = new BangumiViewModel() { Title = bangumi.Title, SeasonId = bangumi.SeasonId }; try { model.CoverImg = new BitmapImage(new Uri(bangumi.CoverUrl)); } catch (Exception ex) { _logger.Info(ex, ex.Message); } toAddList.Add(model); } toAddList.ForEach(b => list.Add(b)); list.Add(new BangumiViewModel() { Title = "加载更多", SeasonId = 0, //CoverImg = ??? }); } else { var master = await BiliBangumiHelper.GetBangumiMasterAsync(info.SeasonId, Settings.SESSDATA); NavigationHelper.NavigateToPage(ContentPage.Search); SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(master); } }
private async void SearchBtn_Click(object sender, RoutedEventArgs e) { var searchContent = SearchTextBox.Text; if (string.IsNullOrWhiteSpace(searchContent)) { return; } var result = AnalyzeUrl(searchContent); if (string.IsNullOrWhiteSpace(result.Item2))//输入了无效的url { ShowNoticeFlyout("输入了无效的url"); return; } SearchProgress(); try { switch (result.Item1) { case UrlType.Bv: var video1 = await BiliVideoHelper.GetVideoMasterAsync(result.Item2, Settings.SESSDATA); SearchPage.Current.HandleMaster <BiliVideoMasterResultPage, BiliVideoMaster>(video1); Reset(); break; case UrlType.Av: var video2 = await BiliVideoHelper.GetVideoMasterAsync(long.Parse(result.Item2), Settings.SESSDATA); SearchPage.Current.HandleMaster <BiliVideoMasterResultPage, BiliVideoMaster>(video2); Reset(); break; case UrlType.Ep: var bangumi1 = await BiliBangumiHelper.GetBangumiMasterAsync(long.Parse(result.Item2), Settings.SESSDATA, null); SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(bangumi1); Reset(); break; case UrlType.Ss: var bangumi2 = await BiliBangumiHelper.GetBangumiMasterAsync(long.Parse(result.Item2), Settings.SESSDATA); SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(bangumi2); Reset(); break; case UrlType.Mc: var manga = await BiliMangaHelper.GetMangaMasterAsync(long.Parse(result.Item2), Settings.SESSDATA); SearchPage.Current.HandleMaster <BiliMangaMasterResultPage, BiliMangaMaster>(manga); Reset(); break; case UrlType.Error: Reset(); break; default: Reset(); break; } } catch (Exception ex) { Reset(); if (ex is VideoNotFoundException or ArgumentException or UnauthorizedAccessException or ParsingVideoException) { ShowNoticeFlyout(ex.Message); }