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>";//匹配找到歌词个数的正则表达式
string matchLrcid = @"<lrcid>(?<id>\d+)</lrcid>";//匹配歌词加密文件名的正则表达式
int songCount = 0;//找到歌词个数
int lrcid = 0;//歌词加密文件名
Regex regex = new Regex(matchCount);
Match songInfo= regex.Match(content);
songCount=Convert.ToInt32(songInfo.Groups["count"].Value);
if (songCount == 0)
{
return "没有找到歌词";//搜索到的歌词数为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>
/// 获取远程网页内容
/// </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;
}
}
}
示例调用:
DownLoadGeCi download = new DownLoadGeCi();
richTxtContent.Text= download.getSongWord("遇","aimini");
C#在线获取歌词(转)相关推荐
- html获取qq头像代码,jQuery在线获取QQ名称和头像
正文 昨天群里有人问到dux主题的评论处输入QQ号直接获取名称和头像是怎么实现的,我看了一下dux主题,发现并没有集成这个功能,倒是emlog的dux主题内置了这个功能,本来想移植过来wordpres ...
- 在线获取今天是今年的第周几
在线获取今天是今年的第周几 平年365天,即52周余一天,闰年366天,即52周余二天,如果按周次表来计的话,当年的第一周如果不是在星期日开始的话,也就是说,这一年的第一周不是满7天的话,那么这一周也 ...
- 在线获取访客QQ号码的原理及实现方法
原文地址:http://www.piaoyi.org/network/get-qq-haoma-js.html 正 文: 最近,飘易收到不少在线获取网站访客QQ号码的促销推广邮件,有不少商用网站挖掘了 ...
- 免费获取歌词API 可下载歌词
简介 歌词迷API提供了多种方式获取歌词文件: 根据歌曲名获取歌词 根据歌曲名和歌手名获取歌词 根据歌曲编号获取歌词URL 根据专辑编号获取专辑封面URL 此接口采集自这里 . 接口类型 HTTP(G ...
- 关于NodeJS版网易云API,获取歌词对象不完整问题的解决方案
在参考了开源项目NeteaseCloudMusicApi中调用网易云API获取歌词方式后,我发现其提供的API链接存在获取对象不完整的问题,如下图所示: 下图是开源项目中部署的路由代码: 在经过自己查 ...
- Android获取歌词汇总
Android获取歌词汇总 一.目标 二.网易云音乐 三.酷狗音乐 四.过程回顾 五.接下来 六.Finally 经历了几个开发阶段 Android实现歌词笔记构思 Android获取歌曲详细信息 A ...
- 歌词迷API——免费获取歌词
简介 歌词迷API提供了多种方式获取歌词文件: 根据歌曲名获取歌词 根据歌曲名和歌手名获取歌词 根据歌曲编号获取歌词URL 根据专辑编号获取专辑封面URL 此接口采集自这里 . 接口类型 HTTP(G ...
- confluence 编辑器这次没有加载_一个在线 lrc 歌词生成/编辑器
前言 虽然有在用 React Native 做项目,但好像没有怎么用 React 做过除了官方 Demo 之外的东西,心里总有种本末倒置的不安违和感. 恰好最近迷上了给网易云音乐上传日语歌的歌词,在连 ...
- JavaWeb音乐网站开发:Ajax异步获取歌词文件并显示,以及实现音频与歌词对应同步的方法
在开发音乐网站或APP的时候,都必须要面对这一个问题:如何让正在播放的歌曲的歌词与音频对应?也就是歌曲正在唱哪一句对应显示这一句的歌词?这便是今天这篇博客主要谈论的主题,先抛开爬虫爬取这一说,今天讲的 ...
最新文章
- 成为顶级CIO ,应该怎么做?
- 测试在强电磁场下基于HALL的电流传感器 ACS712-5A是否会有到影响?
- css 实现app图标样式_界面按钮样式丑?不可能!16款css实现炫酷按钮
- 在Visual Studio 2010中创建多项目(解决方案)模板之关键步骤【四】
- 采用HttpModules来重写URLs(原理篇)转
- 在java中实现日期类型和字符串类型的转换大全(Date String Timestamp Datetime)
- leetcode 只出现一次的数字
- sbt笔记二 Running
- android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
- oracle查询最近十条数据_Oracle-查询最近更新的前10条数据
- shiro学习笔记:remeberMe,多次登录锁死账号
- C#常见算法题目(面试准备)
- POJ1328Radar Installation
- 本地环境测试二级域名
- 2021-04-03
- python里的平方_python中的平方
- C++ 学习记录(18) NVI
- 面试吹牛B,入职就倒霉了
- java最简单的代码
- Head First Java学习笔记(17):包、jar存档文件和部署