/// <summary> /// 在选中搜索结果时触发的方法 /// </summary> /// <param name="result"></param> public void OnChooseSearchResult(ImPlayer.FM.Models.SearchResult result) { if (result == null) { return; } var channel = new ImPlayer.FM.Models.Channel() { Id = 0, Name = result.Title, Context = result.Context }; this.CurrentChannel = channel; }
/// <summary> /// 获取搜索的结果 /// </summary> /// <returns></returns> private IEnumerable <ImPlayer.FM.Models.SearchResult> GetSearchItems(string file) { List <ImPlayer.FM.Models.SearchResult> items = new List <ImPlayer.FM.Models.SearchResult>(); try { bool isSearchFilterEnabled = true; //找出艺术家 MatchCollection mc = Regex.Matches(file, @"<div class=\""result-item musician\"".*?>.*?</h3>", RegexOptions.IgnoreCase | RegexOptions.Singleline); foreach (Match mm in mc) { string temp = mm.Groups[0].Value; string titleTemp = Regex.Match(temp, @"<a.*?class=\""nbg\"".*?/?>", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[0].Value; string title = Regex.Match(titleTemp, @".*?title=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; string link = Regex.Match(titleTemp, @".*?href=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; string pictureTemp = Regex.Match(temp, @"<img.*?class=\""answer_pic\"".*?/?>", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[0].Value; string picture = Regex.Match(pictureTemp, @".*?src=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; Match ma = Regex.Match(temp, @".*?href=\""http://douban\.fm/\?context=([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline); string context = null; if (ma != null) { context = ma.Groups[1].Value; } ImPlayer.FM.Models.SearchResult item = new ImPlayer.FM.Models.SearchResult(title, picture, link, null, true, context); if (!isSearchFilterEnabled || !string.IsNullOrEmpty(item.Context)) { items.Add(item); } } //找出专辑 mc = Regex.Matches(file, @"<tr.*?class=\""item\"">.*?</tr>", RegexOptions.IgnoreCase | RegexOptions.Singleline); foreach (Match mm in mc) { string temp = mm.Groups[0].Value; string titleTemp = Regex.Match(temp, @"<a.*?class=\""nbg\"".*?/?>", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[0].Value; string subject = Regex.Match(titleTemp, @"href=\"".*?subject/(\d+)", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; string title = Regex.Match(titleTemp, @".*?title=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; string link = Regex.Match(titleTemp, @".*?href=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; string pictureTemp = Regex.Match(temp, @"<img.*?/?>", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[0].Value; string picture = Regex.Match(pictureTemp, @".*?src=\""([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline).Groups[1].Value; Match ma = Regex.Match(temp, @".*?href=\""http://douban\.fm/\?context=([^\""]+)\""", RegexOptions.IgnoreCase | RegexOptions.Singleline); string context = null; if (ma != null && ma.Success) { context = ma.Groups[1].Value; } if (string.IsNullOrEmpty(context)) { context = MakeContext(subject); } ImPlayer.FM.Models.SearchResult item = new ImPlayer.FM.Models.SearchResult(title, picture, link, null, false, context); if (!isSearchFilterEnabled || !string.IsNullOrEmpty(item.Context)) { items.Add(item); } } } catch { } return(items); }