C#在线获取歌词(转)
百度有一個公開的歌詞下載API,具體介紹可以去看看這位帥哥的日志http://blog.163.com/fengedkail/blog/static/586507602008101575730334/
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
? /// <summary>
? /// 歌詞下載類
? /// </summary>
? class DownLoadGeCi
? {
? string urlSongInfor = "http://box.zhangmen.baidu.com/x?op=12&count=1&title={0}$${1}$$$$";//獲取歌曲信息的地址
? string urlGeCi = "http://box.zhangmen.baidu.com/bdlrc/";//下載歌詞的不完全地址
? /// <summary>
? /// 獲取歌詞
? /// <param name="songName">歌曲名稱</param>
? /// <param name="singerName">演唱人</param>
? /// </summary>
? public string getSongWord(string songName,string singerName)
? {
? urlSongInfor = String.Format(urlSongInfor,songName,singerName);//url地址
? string content = getWebContent(urlSongInfor);//獲取歌曲信息
? string matchCount = @"<count>(?<count>\d+)</count>";//匹配找到歌詞個數(shù)的正則表達(dá)式
? string matchLrcid = @"<lrcid>(?<id>\d+)</lrcid>";//匹配歌詞加密文件名的正則表達(dá)式
? int songCount = 0;//找到歌詞個數(shù)
? int lrcid = 0;//歌詞加密文件名
? Regex regex = new Regex(matchCount);
? Match songInfo= regex.Match(content);
? songCount=Convert.ToInt32(songInfo.Groups["count"].Value);
? if (songCount == 0)
? {
? return "沒有找到歌詞";//搜索到的歌詞數(shù)為0
? }
? regex = new Regex(matchLrcid);??
? MatchCollection matchResult=regex.Matches(content);
? foreach (Match temp in matchResult)
? {
? lrcid = Convert.ToInt32(temp.Groups["id"].ToString());
? break;
? }
? int fileID = lrcid/ 100;//計算出加密后的歌詞文件名
? urlGeCi += fileID + "/" + lrcid + ".lrc";
? return getWebContent(urlGeCi);
? }
? /// <summary>
? /// 獲取遠(yuǎn)程網(wǎng)頁內(nèi)容
? /// </summary>
? /// <param name="url">url地址</param>
? /// <returns></returns>
? private string getWebContent(string url)
? {
? try
? {
? StringBuilder sb = new StringBuilder("");
? WebRequest request = WebRequest.Create(url);
? request.Timeout = 10000;//10秒請求超時
? StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding("GB2312"));
? while (sr.Peek() >= 0)
? {
? sb.Append(sr.ReadLine());
? }??
? return sb.ToString();
? }
? catch (WebException ex)
? {
? return ex.Message;
? }
? ??
? }
? }
示例調(diào)用:
DownLoadGeCi download = new DownLoadGeCi();
richTxtContent.Text= download.getSongWord("遇","aimini");
總結(jié)
以上是生活随笔為你收集整理的C#在线获取歌词(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu建立(apache+php+
- 下一篇: 鸡窝里飞出伪凤凰