public void LoadAsync(int mid, int page, bool init) { Mid = mid; if (cancellationTokenSource != null) { cancellationTokenSource.Cancel(); } ContentViewer.ScrollToHome(); ContentPanel.Children.Clear(); PagesBox.Visibility = Visibility.Hidden; cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token; LoadingPrompt.Visibility = Visibility.Visible; Task task = new Task(() => { Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("mid", mid.ToString()); dic.Add("ps", "30"); dic.Add("pn", page.ToString()); try { Json.Value json = BiliApi.GetJsonResult("https://api.bilibili.com/x/space/arc/search", dic, true); Dispatcher.Invoke(new Action(() => { foreach (Json.Value v in json["data"]["list"]["vlist"]) { ResultBox.Video video = new ResultBox.Video(v); ResultVideo resultVideo = new ResultVideo(video); resultVideo.PreviewMouseLeftButtonDown += ResultVideo_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultVideo); } if (init) { int pages = (int)Math.Ceiling((double)json["data"]["page"]["count"] / json["data"]["page"]["ps"]); PagesBox.SetPage(pages, 1, true); } PagesBox.Visibility = Visibility.Visible; LoadingPrompt.Visibility = Visibility.Hidden; })); } catch (Exception) { } Dispatcher.Invoke(new Action(() => { LoadingPrompt.Visibility = Visibility.Hidden; })); }, cancellationTokenSource.Token); task.Start(); }
public void LoadAsync(int mid, int page, bool init) { Mid = mid; if (cancellationTokenSource != null) { cancellationTokenSource.Cancel(); } ContentViewer.ScrollToHome(); ContentPanel.Children.Clear(); PagesBox.Visibility = Visibility.Hidden; cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token; LoadingPrompt.Visibility = Visibility.Visible; Task task = new Task(() => { Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("mid", mid.ToString()); dic.Add("pagesize", "30"); dic.Add("page", page.ToString()); try { IJson json = BiliApi.GetJsonResult("https://space.bilibili.com/ajax/member/getSubmitVideos", dic, true); Dispatcher.Invoke(new Action(() => { foreach (IJson v in json.GetValue("data").GetValue("vlist")) { ResultBox.Video video = new ResultBox.Video(v); ResultVideo resultVideo = new ResultVideo(video); resultVideo.PreviewMouseLeftButtonDown += ResultVideo_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultVideo); } if (init) { PagesBox.SetPage((int)json.GetValue("data").GetValue("pages").ToLong(), 1, true); } PagesBox.Visibility = Visibility.Visible; LoadingPrompt.Visibility = Visibility.Hidden; })); } catch (Exception) { } Dispatcher.Invoke(new Action(() => { LoadingPrompt.Visibility = Visibility.Hidden; })); }, cancellationTokenSource.Token); task.Start(); }
private void ResultUser_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { TypeBtn.IsChecked = false; if (cancellationTokenSource != null) { cancellationTokenSource.Cancel(); } cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token; ContentPanel.Children.Clear(); LoadingPrompt.Visibility = Visibility.Visible; Task task = new Task(() => { Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("mid", ((ResultUser)sender).Mid.ToString()); dic.Add("pagesize", "30"); dic.Add("page", "1"); try { IJson json = BiliApi.GetJsonResult("https://space.bilibili.com/ajax/member/getSubmitVideos", dic, true); Dispatcher.Invoke(new Action(() => { foreach (IJson v in json.GetValue("data").GetValue("vlist")) { Video video = new Video(v); ResultVideo resultVideo = new ResultVideo(video); resultVideo.PreviewMouseLeftButtonDown += ResultVideo_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultVideo); } LoadingPrompt.Visibility = Visibility.Hidden; })); } catch (Exception) { } }, cancellationTokenSource.Token); task.Start(); }
private async void ShowResult(IJson json, string type) { if (json.GetValue("code").ToLong() == 0 && json.GetValue("data").GetValue("numresults").ToLong() > 0) { switch (type) { case "video": foreach (IJson v in json.GetValue("data").GetValue("result")) { Video video = new Video(v); ResultVideo resultVideo = new ResultVideo(video); resultVideo.PreviewMouseLeftButtonDown += ResultVideo_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultVideo); } break; case "media_bangumi": StringBuilder stringBuilderBangumi = new StringBuilder(); foreach (IJson v in json.GetValue("data").GetValue("result")) { stringBuilderBangumi.Append(','); stringBuilderBangumi.Append(v.GetValue("season_id").ToString()); } Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("season_ids", stringBuilderBangumi.ToString().Substring(1)); try { IJson cardsJson = await BiliApi.GetJsonResultAsync("https://api.bilibili.com/pgc/web/season/cards", dic, true); foreach (IJson v in json.GetValue("data").GetValue("result")) { Season season = new Season(v, cardsJson); ResultSeason resultSeason = new ResultSeason(season); resultSeason.PreviewMouseLeftButtonDown += ResultSeason_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultSeason); } } catch (WebException) { } break; case "media_ft": StringBuilder stringBuilderFt = new StringBuilder(); foreach (IJson v in json.GetValue("data").GetValue("result")) { stringBuilderFt.Append(','); stringBuilderFt.Append(v.GetValue("season_id").ToString()); } Dictionary <string, string> dic1 = new Dictionary <string, string>(); dic1.Add("season_ids", stringBuilderFt.ToString().Substring(1)); try { IJson cardsJson1 = await BiliApi.GetJsonResultAsync("https://api.bilibili.com/pgc/web/season/cards", dic1, false); foreach (IJson v in json.GetValue("data").GetValue("result")) { Season season = new Season(v, cardsJson1); ResultSeason resultSeason = new ResultSeason(season); resultSeason.PreviewMouseLeftButtonDown += ResultSeason_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultSeason); } } catch (WebException) { } break; case "bili_user": foreach (IJson v in json.GetValue("data").GetValue("result")) { User user = new User(v); ResultUser resultUser = new ResultUser(user); resultUser.PreviewMouseLeftButtonDown += ResultUser_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultUser); } break; } } }
private async void ShowResult(Json.Value json, string type) { if (json["code"] == 0 && json["data"]["numResults"] > 0) { switch (type) { case "video": foreach (Json.Value v in json["data"]["result"]) { Video video = new Video(v); ResultVideo resultVideo = new ResultVideo(video); resultVideo.PreviewMouseLeftButtonDown += ResultVideo_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultVideo); } break; case "media_bangumi": case "media_ft": StringBuilder stringBuilderBangumi = new StringBuilder(); foreach (Json.Value v in json["data"]["result"]) { stringBuilderBangumi.Append(','); stringBuilderBangumi.Append(((uint)v["season_id"]).ToString()); } Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("season_ids", stringBuilderBangumi.ToString().Substring(1)); try { Json.Value cardsJson = await BiliApi.GetJsonResultAsync("https://api.bilibili.com/pgc/web/season/cards", dic, true); foreach (Json.Value v in json["data"]["result"]) { Season season = new Season(v, cardsJson); ResultSeason resultSeason = new ResultSeason(season); resultSeason.PreviewMouseLeftButtonDown += ResultSeason_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultSeason); } } catch (WebException) { } break; case "bili_user": foreach (Json.Value v in json["data"]["result"]) { User user = new User(v); ResultUser resultUser = new ResultUser(user); resultUser.PreviewMouseLeftButtonDown += ResultUser_PreviewMouseLeftButtonDown; ContentPanel.Children.Add(resultUser); } break; } ContentViewer.Visibility = Visibility.Visible; } else { NoMoreGrid.Visibility = Visibility.Visible; } }