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); } }
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; } }