zoukankan      html  css  js  c++  java
  • 百度音乐搜索API介绍

    百度音乐搜索API的请求地址如下:

     

    1. 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均可)。例如,要搜索歌曲零点乐队的“相信自己”,可以像下面这样:

     

    1. // GB2312编码的音乐搜索链接  
    2. 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$$$$  
    3. // UTF-8编码的音乐搜索链接  
    4. 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数据:

     

    1. <result>  
    2.     <count>1</count>  
    3.     <url>  
    4.         <encode>  
    5.             <![CDATA[http://zhangmenshiting.baidu.com/data2/music/44277542/ZWZla2xra2pfn6NndK6ap5WXcJVob5puZ2trbWprmnBjZ2xolpeZa2drZmWZmZmdl2hjZWhvnWlpYmRtZmltcGplZFqin5t1YWBobW5qcGxia2NmZ2twbzE$]]>  
    6.         </encode>  
    7.         <decode>  
    8.             <![CDATA[44277542.mp3?xcode=a39c6698955c82594aab36931dcbef60139f180191368931&mid=0.59949419022597]]>  
    9.         </decode>  
    10.         <type>8</type>  
    11.         <lrcid>64644</lrcid>  
    12.         <flag>1</flag>  
    13.     </url>  
    14.     <durl>  
    15.         <encode>  
    16.             <![CDATA[http://zhangmenshiting2.baidu.com/data2/music/44277530/ZWZla2xramhfn6NndK6ap5WXcJVob5puZ2trbWprmnBjZ2xolpeZa2drZmWZmZmdl2hjaGhvnZ5qlGRpbpedamJla1qin5t1YWBobW5qcGxia2NmZ2twbzE$]]>  
    17.         </encode>  
    18.         <decode>  
    19.             <![CDATA[44277530.mp3?xcode=a39c6698955c82594aab36931dcbef60439ff9b159af2138&mid=0.59949419022597]]>  
    20.         </decode>  
    21.         <type>8</type>  
    22.         <lrcid>64644</lrcid>  
    23.         <flag>1</flag>  
    24.     </durl>  
    25.     <p2p>  
    26.         <hash>022bc0fbf66cd19bea96db49634419dc2600393f</hash>  
    27.         <url>  
    28.             <![CDATA[ ]]>  
    29.         </url>  
    30.         <type>mp3</type>  
    31.         <size>5236902</size>  
    32.         <bitrate>192</bitrate>  
    33.     </p2p>  
    34. </result>  

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

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

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

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

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

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

     

    1. 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拼接起来是高品质音乐的链接。也就是说,普通品质和高品质的音乐链接如下:

     

    1. // 普通品质音乐链接  
    2. http://zhangmenshiting.baidu.com/data2/music/44277542/44277542.mp3?xcode=a39c6698955c82594aab36931dcbef60139f180191368931  
    3. // 高品质音乐链接  
    4. 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有效的前提下,通过浏览器访问上面的音乐链接,会提示下载音乐。

  • 相关阅读:
    存储过程的优缺点?
    springboot注解
    springboot处理事务
    索引面试问题
    剑指Offer编程题(Java实现)——替换空格
    剑指Offer编程题(Java实现)——二维数组中的查找
    Java集合概括总结及集合选用
    Java中获取大小:length、length()、size()
    解决MarkDown打开出现:awesomium web-brower framework This view has crashed
    Java集合:Collection、List、Set、Map、泛型
  • 原文地址:https://www.cnblogs.com/simadi/p/3515028.html
Copyright © 2011-2022 走看看