Пример #1
0
        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}");
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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("该弹幕不存在");
        }