示例#1
0
        private List <Suggest> GetSuggest(string text)
        {
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("highlight", "1");
            dic.Add("keyword", text);
            try
            {
                IJson json = BiliApi.GetJsonResult("https://app.bilibili.com/x/v2/search/suggest3", dic, true);

                if (json.GetValue("data").Contains("list"))
                {
                    List <Suggest> suggests = new List <Suggest>();
                    foreach (IJson i in json.GetValue("data").GetValue("list"))
                    {
                        if (!i.Contains("sug_type"))
                        {
                            Suggest suggest = new Suggest(i);
                            suggests.Add(suggest);
                        }
                        else if (i.GetValue("sug_type").ToString() == "pgc")
                        {
                            SeasonSuggest seasonSuggest = new SeasonSuggest(i);
                            suggests.Add(seasonSuggest);
                        }
                        else if (i.GetValue("sug_type").ToString() == "user")
                        {
                            UserSuggest userSuggest = new UserSuggest(i);
                            suggests.Add(userSuggest);
                        }
                        else
                        {
                            Suggest suggest = new Suggest(i);
                            suggests.Add(suggest);
                        }
                    }
                    suggests.Sort((x, y) => x.Position.CompareTo(y.Position));
                    return(suggests);
                }
                return(null);
            }
            catch (WebException)
            {
                return(null);
            }
        }
示例#2
0
        private async void InputBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (this.IsInitialized && InputBox.IsFocused)
            {
                List <Suggest> suggests = null;
                suggests = await GetSuggestAsync(InputBox.Text, SuggestDelay);

                SuggestList.Items.Clear();
                if (suggests != null)
                {
                    SuggestList.Visibility = Visibility.Visible;
                    foreach (Suggest suggest in suggests)
                    {
                        ListBoxItem listBoxItem = new ListBoxItem();
                        listBoxItem.VerticalAlignment = VerticalAlignment.Stretch;
                        if (suggest.GetType() == typeof(Suggest))
                        {
                            listBoxItem.Content = new SuggestItem(suggest);
                            listBoxItem.Tag     = Regex.Unescape(suggest.Keyword);
                        }
                        else if (suggest.GetType() == typeof(SeasonSuggest))
                        {
                            SeasonSuggest seasonSuggest = (SeasonSuggest)suggest;
                            listBoxItem.Content = new SuggestItemSeason(seasonSuggest);
                            listBoxItem.Tag     = Regex.Unescape(seasonSuggest.Keyword);
                        }
                        else if (suggest.GetType() == typeof(UserSuggest))
                        {
                            UserSuggest userSuggest = (UserSuggest)suggest;
                            listBoxItem.Content = new SuggestItemUser(userSuggest);
                            listBoxItem.Tag     = Regex.Unescape(userSuggest.Keyword);
                        }
                        SuggestList.Items.Add(listBoxItem);
                    }
                }
                else
                {
                    SuggestList.Visibility = Visibility.Hidden;
                }
            }
            else
            {
                SuggestList.Visibility = Visibility.Hidden;
            }
        }