当你在百度去搜索一首歌时,你会发现有种更简单的方法。

http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$作者$$$$

例如:

http://box.zhangmen.baidu.com/x?op=12&count=1&title=传奇$$李健$$$$

百度返回一个XML:

<result>
<count>1</count>
<url>
<encode>
<![CDATA[
http://zhangmenshiting.baidu.com/data2/music/51574053/ZmNoa2lmbGtfn6NndK6ap5WXcG1sl2qZYmtml2abcG6Tl5mVZ5dobpRpaWVlm5yak5WZl25tcGpiZZZnmJudaZNpY1qin5t1YWBraGtmb3BqamtlamlpbTE$
]]>
</encode>
<decode>
<![CDATA[
51574053.mp3?xcode=97a3a193c1e96befa2a16c7610eebbcfc979213c3cef1b70&mid=0.84608898815325
]]>
</decode>
<type>8</type>
<lrcid>170260</lrcid>
<flag>1</flag>
</url>
<durl>
<encode>
<![CDATA[
http://zhangmenshiting2.baidu.com/data2/music/121014239/YmRkZGZqaWtqYKCkaHWvm6CWmHFubZhrkmNsZ5hnnHFnlJiaZmpubGFrbGRlZmtpkmNoa2lmbWljlmZmZmmZb2NrZmxbo6CcbmJhbGlsZ3Bpa2tsZmtqamYy
]]>
</encode>
<decode>
<![CDATA[
121014239.mp3?xcode=97a3a193c1e96bef147409900041a15740612d3213b72938&mid=0.84608898815325
]]>
</decode>
<type>8</type>
<lrcid>170260</lrcid>
<flag>1</flag>
</durl>
<p2p>
<hash>218ad872a73061cfb5e4f40a6583f4ca98e739a4</hash>
<url>
<![CDATA[ ]]>
</url>
<type>mp3</type>
<size>7173146</size>
<bitrate>192</bitrate>
</p2p>
</result>

count :1代表查找成功且返回结果 0代表失败

url与durl分别对应不同质量的音频文件下载地址。

一下针对url里的内容分析,durl一样。

encode里的值是歌曲加密后的地址,加密只是对文件名加密的,我们需要的只是前面的路径,也就是
http://zhangmenshiting.baidu.com/data2/music/51574053/ 这部分,

然后复制decode 的值: 51574053.mp3?xcode=9baace62869d2dba935993ec0dabf034c979213c3cef1b70&mid=0.19874044629948

与前面的相拼就是正确的下载地址: 

http://zhangmenshiting.baidu.com/data2/music/51574053/51574053.mp3?xcode=9baace62869d2dba935993ec0dabf034c979213c3cef1b70&mid=0.19874044629948

http://zhangmenshiting.baidu.com/data2/music/51574053/51574053.mp3
不加参数则提示登录。

lrcid这个的值是百度服务器上这首歌的歌词文件的文件名,这个文件的路径是:http://box.zhangmen.baidu.com/bdlrc/1702/170260.lrc

这个地址解释下: 

http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址。后面的1702是一个的不定的数,也就是说歌曲不同那个目录名也不同,它的算法是拿歌词文件名(也就是上面说的170260)
除以一百,然后取小于等于其结果的最大整数,如上面的:170260/100
=1702.60 取小于等于1702.60 的最大整数就是1702,于是这首歌完整的歌词地址就出来了:http://box.zhangmen.baidu.com/bdlrc/1702/170260.lrc

百度MP3音乐API接口及应用的更多相关文章

  1. [转]百度MP3音乐API接口及应用

    当你在百度去搜索一首歌时,你会发现有种更简单的方法,嘿嘿,告诉你个秘密,百度有个不公开的API http://box.zhangmen.baidu.com/x?op=12&count=1&am ...

  2. 在线音乐播放器-----酷狗音乐api接口抓取

    首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...

  3. 百度地图的API接口----多地址查询和经纬度

    最近看了百度地图的API的接口,正想自己做点小东西,主要是多地址查询和经纬度坐标跟踪, 下面的代码直接另存为html就可以了,目前测试Chrome和360浏览器可以正常使用. <!DOCTYPE ...

  4. 使用百度翻译的API接口

    http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...

  5. 酷狗音乐API接口大全(40+个)

    歌单分类部分 获取精选专区所有分类 http://mobilecdnbj.kugou.com/api/v3/tag/list?pid=0&apiver=2&plat=0 获取热门推荐分 ...

  6. 百度音乐API抓取

    百度音乐API抓取 前段时间做了一个本地音乐的播放器 github地址,想实现在线播放的功能,于是到处寻找API,很遗憾,不是歌曲不全就是质量不高.在网上发现这么一个APIMRASONG博客,有“获取 ...

  7. 关于网易云音乐爬虫的api接口?

    抓包能力有限,分析了一下网易云音乐的一些api接口,但是关于它很多post请求都是加了密,没有弄太明白.之前在知乎看到过一个豆瓣工程师写的教程,但是被投诉删掉了,请问有网友fork了的吗?因为我觉得他 ...

  8. C#百度图片识别API调用返回数据包解析

    百度图片识别api接口 public static JObject GeneralBasic(string apikey,string secretkey,string path) { var cli ...

  9. 百度乐播音乐真实地址查找api接口

    1.百度乐播官网:http://lebo.baidu.com: 随便点击进去一个音乐界面,如:http://lebo.baidu.com/album/9036366 2.chrome浏览器右击'检查' ...

随机推荐

  1. Windows远程桌面管理--功能强大的远程批量管理工具【转】

    曾经,我想着要是有一款绿色小巧,功能实用的远程桌面管理工具,其界面简洁,操作便捷,能够同时远程操作多台服务器,并且多台服务器间可以自由切换,适用于网站管理人员使用的工具该有多好,苍天不负有心人,终于出 ...

  2. JVM探秘:GC日志收集与分析

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 收集GC日志 不同的垃圾收集器,输出的日志格式各不相同,但也有一些相同的特征.熟悉各个 ...

  3. CAP理论的理解

    CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance ...

  4. 兄弟们,你们天天吊打面试官,面试官很难受啊。 metasploit免S客户端

    metasploit生成的exe文件很小,但是免杀效果不行, 找了很多资料, 只有生成c语言shellcode,然后c#重新编译, 这种免杀效果,挺让人满意的 首先需要生成客户端,客户端使用了ngro ...

  5. Vue.js项目在apache服务器部署后,刷新404的问题

    原因是vue-router 使用了路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. const router = n ...

  6. 计算n的阶乘

    题目描述 定义一个函数,传入一个整数n,打印n!的值比如:传入3打印:6  <====1*2*3 输入 整数n    输出 整数n的阶乘 样例输入 Copy 3 样例输出 Copy 6 x=in ...

  7. js提取JSON数据中需要的那部分数据

    var data =[ { name: "程咬金",sex:"1",age:26 }, { name: "程才",sex:"0&q ...

  8. python 多进程处理图像,充分利用CPU

    默认情况下,Python程序使用一个CPU以单个进程运行.不过如果你是在最近几年配置的电脑,通常都是四核处理器,也就是有8个CPU.这就意味着在你苦苦等待Python脚本完成数据处理工作时,你的电脑其 ...

  9. python认识及环境变量

    什么是python? python是一种脚本语言,是高级语言.计算机只能识别机器语言,在机器语言上是汇编语言,再往上是高级语言.高级语言的基础是C语言. python语言较为简单,易入门. pytho ...

  10. [分块][bitset][RMQ]区间

    源自 ditoly 大爷的 FJ 省队集训模拟赛题 Statement 给定一个长度为 \(n\) 的序列 \(a\) ,有 \(m\) 次询问 每次询问给出一个 \(k\) ,再给出 \(k\) 个 ...