百度音乐搜索API介绍

上面提到,给用户回复音乐消息最关键在于如何根据歌曲名称获得歌曲的链接,我们必须找一个现成的音乐搜索API,除非读者自己有音乐服务器,或者只 向用户回复固定的几首音乐。百度有一个非公开的音乐搜索API,之所以说非公开,是因为笔者没有在百度官网的任何地方看到有关该API的介绍,但这并不影 响读者对本例的学习,我们仍然可以调用它。百度音乐搜索API的请求地址如下:

http://box.zhangmen.baidu.com/x?op=12&count=1&title=TITLE$$AUTHOR$$$$

http://box.zhangmen.baidu.com为百度音乐盒的首页地址,上面的链接中不用管参数op和count,重点关注TITLE和AUTHOR,TITLE表示歌曲名称,AUTHOR表示演唱者,AUTHOR可以为空,参数TITLE和AUTHOR需要进行URL编码(UTF-8或GB2312均可)。例如,要搜索歌曲零点乐队的“相信自己”,可以像下面这样:

// GB2312编码的音乐搜索链接

http://box.zhangmen.baidu.com/x?op=12&count=1&title=%CF%E0%D0%C5%D7%D4%BC%BA$$%C1%E3%B5%E3%C0%D6%B6%D3$$$$

// UTF-8编码的音乐搜索链接

http://box.zhangmen.baidu.com/x?op=12&count=1&title=%E7%9B%B8%E4%BF%A1%E8%87%AA%E5%B7%B1$$%E9%9B%B6%E7%82%B9%E4%B9%90%E9%98%9F$$$$

通过浏览器访问上面的地址,返回的是如下格式的XML数据:

 <result>  <count>1</count>  <url>  <encode>  <![CDATA[http://zhangmenshiting.baidu.com/data2/music/44277542/ZWZla2xra2pfn6NndK6ap5WXcJVob5puZ2trbWprmnBjZ2xolpeZa2drZmWZmZmdl2hjZWhvnWlpYmRtZmltcGplZFqin5t1YWBobW5qcGxia2NmZ2twbzE$]]>  </encode>  <decode>  <![CDATA[44277542.mp3?xcode=a39c6698955c82594aab36931dcbef60139f180191368931&mid=0.59949419022597]]>  </decode>  <type>8</type>  <lrcid>64644</lrcid>  <flag>1</flag>  </url>  <durl>  <encode>  <![CDATA[http://zhangmenshiting2.baidu.com/data2/music/44277530/ZWZla2xramhfn6NndK6ap5WXcJVob5puZ2trbWprmnBjZ2xolpeZa2drZmWZmZmdl2hjaGhvnZ5qlGRpbpedamJla1qin5t1YWBobW5qcGxia2NmZ2twbzE$]]>  </encode>  <decode>  <![CDATA[44277530.mp3?xcode=a39c6698955c82594aab36931dcbef60439ff9b159af2138&mid=0.59949419022597]]>  </decode>  <type>8</type>  <lrcid>64644</lrcid>  <flag>1</flag>  </durl>  <p2p>  <hash>022bc0fbf66cd19bea96db49634419dc2600393f</hash>  <url>  <![CDATA[ ]]>  </url>  <type>mp3</type>  <size>5236902</size>  <bitrate>192</bitrate>  </p2p>
</result>

返回结果中的主要参数说明如下:

1)<count> 表示搜索到的音乐数;

2)<url>中包含了普通品质的音乐链接,<durl>中包含了高品质音乐的链接;

3)<encode> 中包含了加密后的音乐链接,实际上只是对音乐名称进行了加密,<decode>中包含了解密后的音乐名称。因此,要获取音乐的链接就需要重点 分析<encode>和<decode>中的内容,下面会专门为读者进行介绍。

4)<type>表示音乐文件的类型,如rm、wma、mp3等;

5)<lrcid>是歌词的ID,<url>中的歌词ID为64644,那么如何得到歌词呢?本例并不关心歌词,只是附带提一下。歌词的地址如下:

http://box.zhangmen.baidu.com/bdlrc/646/64644.lrc

其中,http://box.zhangmen.baidu.com/bdlrc/是固定值;646为歌词所在目录名,计算方法为歌词ID(64644)除以100,取整数部分;64644.lrc是歌词文件名。

下面来看如何从<encode>和<decode>中得到音乐链接。为了便于说明,笔者将上面搜索结果中的<url>和<durl>部分抽取出来,并进行了标注,如下图所示。

上图中,1和2拼接起来是普通品质音乐的链接,3和4拼接起来是高品质音乐的链接。也就是说,普通品质和高品质的音乐链接如下:

// 普通品质音乐链接

http://zhangmenshiting.baidu.com/data2/music/44277542/44277542.mp3?xcode=a39c6698955c82594aab36931dcbef60139f180191368931

// 高品质音乐链接

http://zhangmenshiting2.baidu.com/data2/music/44277530/44277530.mp3?xcode=a39c6698955c82594aab36931dcbef60439ff9b159af2138

参 数xcode可以理解为随机验证码,每次搜索得到的值都不一样,如果不带该参数会报未授权异常“401 Authorization Required”。需要注意的是,xcode是有时间限制的,超过限制再访问链接会报异常:{"Error": {"code":"2","Message":"object not exists","LogId":"3456414897"}}。在xcode有效的前提下,通过浏览器访问上面的音乐链接,会提示下载音乐。

转载于:https://blog.51cto.com/lxy2020/1571348

百度音乐非公开的api相关推荐

  1. python 下载百度音乐

    最近在学习python,恰巧手上有某位大神无聊写的从百度上下载音乐的脚本,拿来学习学习. 在学习这个脚本前,必须得了解的一点是,百度音乐有自己的API供我们调用的(开始看到这个脚本的时候真是没想到这点 ...

  2. 隐蔽的百度音乐API

    对于想用音乐做东西的人肯定会郁闷下,国内主流的音乐网站都没有公开的音乐API,如果自己建一个音乐库,似乎不是很现实,研究百度音乐一下午,终于找到了端倪 1.进入音乐首页http://music.bai ...

  3. [Linux C]百度音乐API实现在线搜歌

    最近在做科大讯飞的语音解析模块,主要用于语音控制播放.采集语音输入后,送给科大讯飞语音的SDK,云服务器返回JSON的数据,再解析拿到URL地址,最后送给播放器去播放.不知是否是尚未上线的produc ...

  4. Vue实现仿音乐播放器11-实现访问百度音乐API实现播放音乐功能

    场景 从今日推荐页面点击某首歌曲会将这首歌曲的songid通过路由传递到播放界面, 播放界面调用百度音乐接口实现数据的获取以及音乐的播放. 效果 实现 配置路由 首先在pages目录下新建musicp ...

  5. Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据

    前文 前面已经实现了音乐导航菜单的切换,现在要实现主页面的今日推荐功能. 效果 实现 实现首页重定向 当应用初始化时,默认进入主页面home页,所以在router下的index.js下配置: expo ...

  6. Vue实现访问百度音乐API实现播放音乐功能

    场景 从今日推荐页面点击某首歌曲会将这首歌曲的songid通过路由传递到播放界面, 播放界面调用百度音乐接口实现数据的获取以及音乐的播放. 效果 实现 配置路由 首先在pages目录下新建musicp ...

  7. 从实例入手学习使用vue+axios配置代理进行跨域访问百度音乐API

    场景 如果要使用axios直接进行跨域访问是不可以的,这是就需要配置代理了,为什么要配置代理呢? 原因就是因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的 ...

  8. 另一种绕过 Android P以上非公开API限制的办法

    去年发布的 Android P上引入了针对非公开API的限制,对开发者来说,这绝对是有史以来最重大的变化之一.前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加 ...

  9. 百度音乐api+c语言,百度音乐API全接口

    百度音乐API http://tingapi.ting.baidu.com/v1/restserver/ting 获取方式:GET 参数:format=json或xml&calback=&am ...

最新文章

  1. 不走寻常路 设计ASP.NET应用程序的七大绝招
  2. 布局欧洲,挺进南美,比特币现金(BCH)再度攻下4个新市场
  3. Spring 详解(二):IOC 和DI
  4. python笔记:正则表达式
  5. .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...
  6. R语言的自定义函数—字符组合
  7. 【转】Azure云存储及存储账户概述***
  8. python使用selenium_如何在python中使用selenium的示例
  9. 漫画:如何证明sleep不释放锁,而wait释放锁?
  10. html限定输入的内容,HTML中限制input 输入框输入内容
  11. CSS3 建立弹性盒布局 Flex布局
  12. 文本数据抽取经验总结
  13. 【网络流24题】餐巾计划问题(费用流)
  14. UNIX 高级环境编程 第10章 信号
  15. 拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!
  16. My97DatePicker日历实现开始日期小于结束日期验证
  17. 【BZOJ2109/2535】【NOI2010】航空管制(贪心)
  18. Softing为艾默生提供AMS设备管理系统的连接解决方案
  19. 用户获取pppd拨号状态_iPhone手机隐藏的拨号键代码,原来还能这么用,幸好钱没白花...
  20. 实施经理的工具箱--走出软件作坊:三五个人十来条枪 如何成为开发正规军(五)

热门文章

  1. 网站模板价格多少才合理呢?
  2. 输出大写英文字母PTA
  3. linux 电子表小程序,微信小程序Taro开发(3):canvas制作钟表
  4. 【Exploring and Thinking】——闵帆老师论文写作课程学习心得
  5. 提升产品运营力:用户运营常用数据分析指标汇总
  6. 关于15种前端安全检测及危害
  7. 08_心理咨询_微信小程序项目实战_关于我们页面静态效果实现
  8. caged系统pdf_介孔二氧化硅纳米粒子药物递送系统研究进展-中国药科大学学报!.PDF...
  9. QR码生成原理-QR Code(ISO 18004)编码方式
  10. 去繁就简,张弛有度,收发由心