百度MP3音乐API接口及应用
当你在百度去搜索一首歌时,你会发现有种更简单的方法。
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接口及应用的更多相关文章
- [转]百度MP3音乐API接口及应用
当你在百度去搜索一首歌时,你会发现有种更简单的方法,嘿嘿,告诉你个秘密,百度有个不公开的API http://box.zhangmen.baidu.com/x?op=12&count=1&am ...
- 在线音乐播放器-----酷狗音乐api接口抓取
首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...
- 百度地图的API接口----多地址查询和经纬度
最近看了百度地图的API的接口,正想自己做点小东西,主要是多地址查询和经纬度坐标跟踪, 下面的代码直接另存为html就可以了,目前测试Chrome和360浏览器可以正常使用. <!DOCTYPE ...
- 使用百度翻译的API接口
http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...
- 酷狗音乐API接口大全(40+个)
歌单分类部分 获取精选专区所有分类 http://mobilecdnbj.kugou.com/api/v3/tag/list?pid=0&apiver=2&plat=0 获取热门推荐分 ...
- 百度音乐API抓取
百度音乐API抓取 前段时间做了一个本地音乐的播放器 github地址,想实现在线播放的功能,于是到处寻找API,很遗憾,不是歌曲不全就是质量不高.在网上发现这么一个APIMRASONG博客,有“获取 ...
- 关于网易云音乐爬虫的api接口?
抓包能力有限,分析了一下网易云音乐的一些api接口,但是关于它很多post请求都是加了密,没有弄太明白.之前在知乎看到过一个豆瓣工程师写的教程,但是被投诉删掉了,请问有网友fork了的吗?因为我觉得他 ...
- C#百度图片识别API调用返回数据包解析
百度图片识别api接口 public static JObject GeneralBasic(string apikey,string secretkey,string path) { var cli ...
- 百度乐播音乐真实地址查找api接口
1.百度乐播官网:http://lebo.baidu.com: 随便点击进去一个音乐界面,如:http://lebo.baidu.com/album/9036366 2.chrome浏览器右击'检查' ...
随机推荐
- 力扣142——环形链表 II
原题 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos ...
- 2020了你还不会Java8新特性?(五)收集器比较器用法详解及源码剖析
收集器用法详解与多级分组和分区 为什么在collectors类中定义一个静态内部类? static class CollectorImpl<T, A, R> implements Coll ...
- SpringBoot介绍与使用
SpringBoot介绍与使用 1.什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品: 我们可 ...
- Leetcode1296划分数组为连续数字的集合
解法1: 最暴力的方法,存每个数字出现的次数,排序之后,扫一遍,对于每个数字,看它后面连续的k-1个是否都存在. 耗时:404ms class Solution { public: bool isPo ...
- sqlserver 存储过程调Api接口
--开启Sql Server 通讯配置-- sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGURE; GO EXEC sp_co ...
- C++string中find,find_first_of和find_last_of的用法
1. size_t find (const string& str, size_t pos = 0) str.find(str1) 说明:从pos(默认是是0,即从头开始查找)开始查找,找到第 ...
- bootstrapValidator JS修改内容无法验证
需求: form表单输入中有坐标,坐标可以输入也可以从地图中获取,验证插件使用的是 bootstrapValidator 问题: 当输入错误的值时会触发验证,有错误提示.当在地图上选择坐标,通过js修 ...
- @RequestParam,@PathVariable,@RequestBody
@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @P ...
- python 打印乘法表
for i in range(1, 10): for j in range(1, i+1): print('%s * %s = %s' % (i, j, i*j), end=' ') print('' ...
- Java中整数值的4中表示方式u
Java中整数值有4中表示方式:十进制.二进制.八进制和十六进制,其中二进制的整数以0b或0B开头:八进制的整数以0开头: 十六进制的整数以0x或0X开头,其中10-15分别以a-f(此处的a-f不区 ...