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; } }
private bool tmpConvert(string filePath) { try { FileStream _rdfs = new FileStream(filePath, FileMode.Open); StreamReader _rdsr = new StreamReader(_rdfs); string _lrcData = _rdsr.ReadToEnd(); JObject _jsonLrc = JObject.Parse(_lrcData); List<string> _lrcItem = new List<string>(); // 判断是否有翻译歌词 if (!_jsonLrc["translateLyric"].ToString().Equals("")) { string _orglrc = _jsonLrc["lyric"].ToString(); Regex _orgReg = new Regex(@"\[\d+:\d+.\d+\].+"); var _orgResult = _orgReg.Matches(_orglrc); foreach (var item in _orgResult) { _lrcItem.Add(item.ToString()); } // 获得翻译歌词 string _transLrc = _jsonLrc["translateLyric"].ToString(); Regex _transReg = new Regex(@"\[\d+:\d+.\d+\].+"); var _transResult = _transReg.Matches(_transLrc); // 分割并且并入英文歌词当中 int _count = 0; foreach (var item in _transResult) { var _tmp = item.ToString(); string[] _lrcItemArray = _tmp.Split(']'); _lrcItem[_count] = string.Format("{0} {1}", _lrcItem[_count], _lrcItemArray[1]); _count++; } } else { string _orglrc = _jsonLrc["lyric"].ToString(); Regex _orgReg = new Regex(@"\[\d+:\d+.\d+\].+"); var _orgResult = _orgReg.Matches(_orglrc); foreach (var item in _orgResult) { _lrcItem.Add(item.ToString()); } } // 获得歌手信息与歌曲名称 NetUtils nt = new NetUtils(); string lrcresult = nt.Http_Get(string.Format("http://music.163.com/api/song/detail/?id={0}&ids=%5B{0}%5D", _jsonLrc["musicId"].ToString()), Encoding.UTF8, true); JObject _jsonMusic = JObject.Parse(lrcresult); JArray _jsonSongs = (JArray)_jsonMusic["songs"]; JArray _jsonArtists = (JArray)_jsonSongs[0]["artists"]; string _artist = _jsonArtists[0]["name"].ToString(); string _title = _jsonSongs[0]["name"].ToString(); // 构建文件名 string _fileName = string.Format("{0} - {1}", _artist, _title); // 关闭文件流 _rdsr.Close(); _rdfs.Close(); //构造歌词数据 StringBuilder _sb = new StringBuilder(); foreach (var item in _lrcItem) { _sb.Append(item + "\n"); } // 输出到文件 string path = Path.GetDirectoryName(filePath) + @"\" + _fileName + ".lrc"; FileStream _wrfs = new FileStream(path, FileMode.Create); byte[] _lrcbyte = Encoding.UTF8.GetBytes(_sb.ToString()); _wrfs.Write(_lrcbyte, 0, _lrcbyte.Length); _wrfs.Close(); return true; } catch (Exception ex) { return false; } }