public ResultVideo(ResultBox.Video video) { InitializeComponent(); Aid = video.Aid; Title = video.Title; TitleBox.Inlines.Clear(); MatchCollection mc = Regex.Matches(video.Title, "(\\<em.*?\\>(?<Word>.*?)\\</em\\>|.)"); foreach (Match m in mc) { Inline inline = new Run(m.Value); if (m.Value.StartsWith("<")) { inline = new Run(m.Groups["Word"].Value); inline.Foreground = new SolidColorBrush(Color.FromRgb(0xf2, 0x5d, 0x8e)); } else { inline = new Run(m.Value); } TitleBox.Inlines.Add(inline); } PlayBox.Text = BiliApi.FormatNum(video.Play, 1); PostdateBox.Text = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(video.Pubdate).ToString("yyyy-MM-dd"); AuthorBox.Text = video.Author; ImageBox.Source = new BitmapImage(new Uri(video.Pic)); }
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(); }
public ResultVideo(ResultBox.Video video) { InitializeComponent(); Aid = video.Aid; Title = video.Title; TitleBox.Inlines.Clear(); MatchCollection mc = Regex.Matches(video.Title, "(\\<em.*?\\>(?<Word>.*?)\\</em\\>|.)"); foreach (Match m in mc) { Inline inline = new Run(m.Value); if (m.Value.StartsWith("<")) { inline = new Run(m.Groups["Word"].Value); inline.Foreground = new SolidColorBrush(Color.FromRgb(0xf2, 0x5d, 0x8e)); } else { inline = new Run(m.Value); } TitleBox.Inlines.Add(inline); } PlayBox.Text = BiliApi.FormatNum(video.Play, 1); PostdateBox.Text = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(video.Pubdate).ToString("yyyy-MM-dd"); AuthorBox.Text = video.Author; this.Loaded += async delegate(object senderD, RoutedEventArgs eD) { System.Drawing.Bitmap bitmap = await video.GetPicAsync(); ImageBox.Source = BiliApi.BitmapToImageSource(bitmap); }; }