百度音乐非公开的api
百度音乐搜索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相关推荐
- python 下载百度音乐
最近在学习python,恰巧手上有某位大神无聊写的从百度上下载音乐的脚本,拿来学习学习. 在学习这个脚本前,必须得了解的一点是,百度音乐有自己的API供我们调用的(开始看到这个脚本的时候真是没想到这点 ...
- 隐蔽的百度音乐API
对于想用音乐做东西的人肯定会郁闷下,国内主流的音乐网站都没有公开的音乐API,如果自己建一个音乐库,似乎不是很现实,研究百度音乐一下午,终于找到了端倪 1.进入音乐首页http://music.bai ...
- [Linux C]百度音乐API实现在线搜歌
最近在做科大讯飞的语音解析模块,主要用于语音控制播放.采集语音输入后,送给科大讯飞语音的SDK,云服务器返回JSON的数据,再解析拿到URL地址,最后送给播放器去播放.不知是否是尚未上线的produc ...
- Vue实现仿音乐播放器11-实现访问百度音乐API实现播放音乐功能
场景 从今日推荐页面点击某首歌曲会将这首歌曲的songid通过路由传递到播放界面, 播放界面调用百度音乐接口实现数据的获取以及音乐的播放. 效果 实现 配置路由 首先在pages目录下新建musicp ...
- Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据
前文 前面已经实现了音乐导航菜单的切换,现在要实现主页面的今日推荐功能. 效果 实现 实现首页重定向 当应用初始化时,默认进入主页面home页,所以在router下的index.js下配置: expo ...
- Vue实现访问百度音乐API实现播放音乐功能
场景 从今日推荐页面点击某首歌曲会将这首歌曲的songid通过路由传递到播放界面, 播放界面调用百度音乐接口实现数据的获取以及音乐的播放. 效果 实现 配置路由 首先在pages目录下新建musicp ...
- 从实例入手学习使用vue+axios配置代理进行跨域访问百度音乐API
场景 如果要使用axios直接进行跨域访问是不可以的,这是就需要配置代理了,为什么要配置代理呢? 原因就是因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的 ...
- 另一种绕过 Android P以上非公开API限制的办法
去年发布的 Android P上引入了针对非公开API的限制,对开发者来说,这绝对是有史以来最重大的变化之一.前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加 ...
- 百度音乐api+c语言,百度音乐API全接口
百度音乐API http://tingapi.ting.baidu.com/v1/restserver/ting 获取方式:GET 参数:format=json或xml&calback=&am ...
最新文章
- 不走寻常路 设计ASP.NET应用程序的七大绝招
- 布局欧洲,挺进南美,比特币现金(BCH)再度攻下4个新市场
- Spring 详解(二):IOC 和DI
- python笔记:正则表达式
- .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...
- R语言的自定义函数—字符组合
- 【转】Azure云存储及存储账户概述***
- python使用selenium_如何在python中使用selenium的示例
- 漫画:如何证明sleep不释放锁,而wait释放锁?
- html限定输入的内容,HTML中限制input 输入框输入内容
- CSS3 建立弹性盒布局 Flex布局
- 文本数据抽取经验总结
- 【网络流24题】餐巾计划问题(费用流)
- UNIX 高级环境编程 第10章 信号
- 拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!
- My97DatePicker日历实现开始日期小于结束日期验证
- 【BZOJ2109/2535】【NOI2010】航空管制(贪心)
- Softing为艾默生提供AMS设备管理系统的连接解决方案
- 用户获取pppd拨号状态_iPhone手机隐藏的拨号键代码,原来还能这么用,幸好钱没白花...
- 实施经理的工具箱--走出软件作坊:三五个人十来条枪 如何成为开发正规军(五)
热门文章
- 网站模板价格多少才合理呢?
- 输出大写英文字母PTA
- linux 电子表小程序,微信小程序Taro开发(3):canvas制作钟表
- 【Exploring and Thinking】——闵帆老师论文写作课程学习心得
- 提升产品运营力:用户运营常用数据分析指标汇总
- 关于15种前端安全检测及危害
- 08_心理咨询_微信小程序项目实战_关于我们页面静态效果实现
- caged系统pdf_介孔二氧化硅纳米粒子药物递送系统研究进展-中国药科大学学报!.PDF...
- QR码生成原理-QR Code(ISO 18004)编码方式
- 去繁就简,张弛有度,收发由心