public bool Down(string filePath,ref byte[] lrcData,int iThread) { System.Net.ServicePointManager.DefaultConnectionLimit = iThread; string RequestURL = "http://www.cnlyric.com/search.php?k="; string ResponseURL = "http://www.cnlyric.com/"; var m_tools = new NetUtils(); var m_info = new MusicInfo(filePath, 0); string getURL = RequestURL + m_tools.URL_Encoding(m_info.Title, Encoding.GetEncoding("gb2312")) + "&t=s"; string lrcHtml = m_tools.Http_Get(getURL, Encoding.GetEncoding("gb2312")); if (lrcHtml.Equals("")) return false; Regex reg = new Regex(@"LrcDown/\d*/\d*.lrc"); try { string result = reg.Match(lrcHtml).ToString(); if (result.Equals("")) return false; byte[] gb2312Bytes = new WebClient().DownloadData(ResponseURL + result); // 编码统一转换为UTF-8 lrcData = Encoding.Convert(Encoding.GetEncoding("gb2312"), Encoding.UTF8, gb2312Bytes); return true; } catch (Exception exp) { return false; } }
public bool Down(string filePath, ref byte[] lrcData,int iThread) { System.Net.ServicePointManager.DefaultConnectionLimit = iThread; string RequestURL = "http://music.163.com/api/search/get/web?csrf_token="; string ResponseURL = "http://music.163.com/api/song/lyric?os=osx&id="; var m_tools = new NetUtils(); var m_info = new MusicInfo(filePath); try { string postStr = "&s=" + m_tools.URL_Encoding(m_info.Title, Encoding.UTF8) + "&type=1&offset=0&total=true&limit=5"; string resultJson = m_tools.Http_Post(RequestURL, postStr); if (resultJson.Equals("")) return false; // 获得歌曲ID JObject jsonSID = JObject.Parse(resultJson); JArray jsonArraySID = (JArray)jsonSID["result"]["songs"]; string sid = null; // 二级匹配 bool flag = false; foreach (var item in jsonArraySID) { if (item["artists"][0]["name"].ToString() == m_info.Singer) { sid = item["id"].ToString(); flag = true; } } if(!flag) sid = jsonArraySID[0]["id"].ToString(); string lrcUrl = ResponseURL + sid + "&lv=-1&kv=-1&tv=-1"; string lrcString = m_tools.Http_Get(lrcUrl, Encoding.UTF8, true); // 从Json当中分析歌词信息 JObject lrcObject = JObject.Parse(lrcString); string lrcDataString = lrcObject["lrc"]["lyric"].ToString(); if (lrcDataString.Equals("")) return false; // 去掉网易时间轴后一位 Regex reg = new Regex(@"\[\d+:\d+.\d+\]"); string deal_ok = reg.Replace(lrcDataString, new MatchEvaluator((Match machs)=> { string time = machs.ToString(); return time.Remove(time.Length - 2, 1); })); // 将字符串转换为字节流进行存储 lrcData = Encoding.UTF8.GetBytes(deal_ok); return true; } catch (Exception) { return false; } }
public bool Down(string filePath, ref byte[] lrcData, int iThread) { ServicePointManager.DefaultConnectionLimit = iThread; string mainDomain = @"http://www.lrcgc.com/"; var m_tools = new NetUtils(); try { // 获得歌词网页列表 string getPageLink = mainDomain + "so/?q=" + m_tools.URL_Encoding(new MusicInfo(filePath,0).Title, Encoding.UTF8); string lrcHtml = m_tools.Http_Get(getPageLink, Encoding.UTF8); // 获得第一个歌词页面 if (lrcHtml.Equals("")) return false; Regex reg = new Regex(@"lyric-\d+-\d+.html"); string page = reg.Match(lrcHtml).ToString(); if (page.Equals("")) return false; // 筛选ID Regex regId = new Regex(@"\d+-\d+"); string id = regId.Match(page).ToString(); if (id.Equals("")) return false; // 获得歌词具体下载地址 string getPage = m_tools.Http_Get(mainDomain + page, Encoding.UTF8); Regex reg2 = new Regex(@"lrc-" + id + @"/.*.lrc\"">"); string lrcURL = reg2.Match(getPage).ToString(); // 下载歌词 if (lrcURL.Equals("")) return false; lrcData = new WebClient().DownloadData(mainDomain + lrcURL.Remove(lrcURL.Length - 2, 2)); return true; } catch (Exception) { return false; } }