private void Worker_DoWork(object sender, DoWorkEventArgs e) { var xml = BiliBiliDanmakuCrawler.GetDanmakuXml(e.Argument.ToString()); var i = 0; var document = new XmlDocument(); ThreadPool.SetMinThreads(32, 32); ThreadPool.SetMinThreads(32, 32); document.LoadXml(xml); var nodes = document.GetElementsByTagName("d"); var size = nodes.Count; foreach (XmlNode documentNode in nodes) { var attr = documentNode.Attributes?["p"].Value; var hash = attr?.Split(',')[6]; try { _danmakuXml[documentNode.InnerText] = hash; } catch (Exception) { //ignored } _danmakuWorker.ReportProgress((int)Math.Round((double)++i / size * 100), $"{i}/{size}"); } }
private async void DanmakuList_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!UserNameBox.FontFamily.Equals(new FontFamily("Corbel Light")) || !DanmakuContentBox.FontFamily.Equals(new FontFamily("Corbel Light"))) { OnGotFocusFontChange(UserNameBox); OnGotFocusFontChange(DanmakuContentBox); } // ReSharper disable once AssignNullToNotNullAttribute if (DanmakuList.SelectedItem != null) { var user = DanmakuList.SelectedItem as User; var id = ""; await Task.Run(() => id = BiliBiliDanmakuCrawler.DecryptHash(user.Id)); var content = $"https://space.bilibili.com/{id}"; UserNameBox.Text = content; DanmakuContentBox.Text = user.DanmakuContent; } }
private async void SearchDanmakuButton_Click(object sender, RoutedEventArgs e) { var flag = _danmakuList.Select(t => t.DanmakuContent).Contains(DanmakuContentBox.Text); if (flag) { foreach (var t in _danmakuList) { if (t.DanmakuContent == DanmakuContentBox.Text) { var id = ""; await Task.Run(() => id = BiliBiliDanmakuCrawler.DecryptHash(t.Id)); UserNameBox.Text = $"http://space.bilibili.com/{id}"; } } return; } MessageBox.Show("该弹幕不存在"); }