百度有一个公开的歌词下载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#在线获取歌词(转)相关推荐

  1. html获取qq头像代码,jQuery在线获取QQ名称和头像

    正文 昨天群里有人问到dux主题的评论处输入QQ号直接获取名称和头像是怎么实现的,我看了一下dux主题,发现并没有集成这个功能,倒是emlog的dux主题内置了这个功能,本来想移植过来wordpres ...

  2. 在线获取今天是今年的第周几

    在线获取今天是今年的第周几 平年365天,即52周余一天,闰年366天,即52周余二天,如果按周次表来计的话,当年的第一周如果不是在星期日开始的话,也就是说,这一年的第一周不是满7天的话,那么这一周也 ...

  3. 在线获取访客QQ号码的原理及实现方法

    原文地址:http://www.piaoyi.org/network/get-qq-haoma-js.html 正 文: 最近,飘易收到不少在线获取网站访客QQ号码的促销推广邮件,有不少商用网站挖掘了 ...

  4. 免费获取歌词API 可下载歌词

    简介 歌词迷API提供了多种方式获取歌词文件: 根据歌曲名获取歌词 根据歌曲名和歌手名获取歌词 根据歌曲编号获取歌词URL 根据专辑编号获取专辑封面URL 此接口采集自这里 . 接口类型 HTTP(G ...

  5. 关于NodeJS版网易云API,获取歌词对象不完整问题的解决方案

    在参考了开源项目NeteaseCloudMusicApi中调用网易云API获取歌词方式后,我发现其提供的API链接存在获取对象不完整的问题,如下图所示: 下图是开源项目中部署的路由代码: 在经过自己查 ...

  6. Android获取歌词汇总

    Android获取歌词汇总 一.目标 二.网易云音乐 三.酷狗音乐 四.过程回顾 五.接下来 六.Finally 经历了几个开发阶段 Android实现歌词笔记构思 Android获取歌曲详细信息 A ...

  7. 歌词迷API——免费获取歌词

    简介 歌词迷API提供了多种方式获取歌词文件: 根据歌曲名获取歌词 根据歌曲名和歌手名获取歌词 根据歌曲编号获取歌词URL 根据专辑编号获取专辑封面URL 此接口采集自这里 . 接口类型 HTTP(G ...

  8. confluence 编辑器这次没有加载_一个在线 lrc 歌词生成/编辑器

    前言 虽然有在用 React Native 做项目,但好像没有怎么用 React 做过除了官方 Demo 之外的东西,心里总有种本末倒置的不安违和感. 恰好最近迷上了给网易云音乐上传日语歌的歌词,在连 ...

  9. JavaWeb音乐网站开发:Ajax异步获取歌词文件并显示,以及实现音频与歌词对应同步的方法

    在开发音乐网站或APP的时候,都必须要面对这一个问题:如何让正在播放的歌曲的歌词与音频对应?也就是歌曲正在唱哪一句对应显示这一句的歌词?这便是今天这篇博客主要谈论的主题,先抛开爬虫爬取这一说,今天讲的 ...

最新文章

  1. 成为顶级CIO ,应该怎么做?
  2. 测试在强电磁场下基于HALL的电流传感器 ACS712-5A是否会有到影响?
  3. css 实现app图标样式_界面按钮样式丑?不可能!16款css实现炫酷按钮
  4. 在Visual Studio 2010中创建多项目(解决方案)模板之关键步骤【四】
  5. 采用HttpModules来重写URLs(原理篇)转
  6. 在java中实现日期类型和字符串类型的转换大全(Date String Timestamp Datetime)
  7. leetcode 只出现一次的数字
  8. sbt笔记二 Running
  9. android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
  10. oracle查询最近十条数据_Oracle-查询最近更新的前10条数据
  11. shiro学习笔记:remeberMe,多次登录锁死账号
  12. C#常见算法题目(面试准备)
  13. POJ1328Radar Installation
  14. 本地环境测试二级域名
  15. 2021-04-03
  16. python里的平方_python中的平方
  17. C++ 学习记录(18) NVI
  18. 面试吹牛B,入职就倒霉了
  19. java最简单的代码
  20. Head First Java学习笔记(17):包、jar存档文件和部署

热门文章

  1. 当年只会C# 所以写C++就成这样了! log4cplus - log4net
  2. ECShop的数据操作类文件
  3. equals 与==的不同
  4. 付费会员制,如何赋能产品?
  5. 微信的公众号为什么不做分类?
  6. vue中如何深度监听一个对象?
  7. 使用阿里云ACM简化你的Spring Cloud微服务环境配置管理 1
  8. Apache按天截断日志工具,无法生成访问日志
  9. 给刚入职开发人员的几句心里话
  10. Spring——依赖注入类型