當你在百度去搜尋一首歌時,你會發現有種更簡單的方法,嘿嘿,安寧ヤ太天真告訴你個秘密,
百度有個不公開的API
http://box.zhangmen.baidu.com/x?op=12&count=1&title=大約在冬季$$齊秦$$$$
用上面的地址,紅色部分改成歌名與作者名,然後百度就會給你一個XML:
百度對其XML進行了更改:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<result>
<count>1</count>
<url>
<encode>
<![CDATA[
http://zhangmenshiting.baidu.com/data2/music/12762804/
YmRqamduZ2xfn6NndK6ap5WXcJaWbJppl2qYmWyYbpljlWxkmW2ZbJNrlGZsl5hrYZhkWqKfm3VhYGxpaW5wcGVoa2hrb29uMQ$$
]]>
</encode>
<decode>
<![CDATA[
12762804.mp3?xcode=ba6c1f8ee7b7a2c90d7b4b9a27aa30f1&mid=0.95489846846986
]]>
</decode>
<type>8</type>
<lrcid>14706</lrcid>
<flag>1</flag>
</url>
<durl>
<encode>
<![CDATA[
http://zhangmenshiting2.baidu.com/data2/music/7339015
/aGVmbWVnbGaeomZzrZmmnJZvlZVrmWieaZeYa5dtmGqUa2OYbJhrmmqTZWuWl2pol2NZoZ6adGhfa2hobW9vbGdqZ2pubm04
]]>
</encode>
<decode>
<![CDATA[
7339015.mp3?xcode=ba6c1f8ee7b7a2c90d7b4b9a27aa30f1&mid=0.95489846846986
]]>
</decode>
<type>8</type>
<lrcid>14706</lrcid>
<flag>1</flag>
</durl>
<p2p>
<hash>c95f9cfadb9ea0235369975d9efa06673228530b</hash>
<url>
<![CDATA[
http://zhangmenshiting.baidu.com/data2/music
/8453672/8453672.mp3?xcode=ba6c1f8ee7b7a2c90d7b4b9a27aa30f1
]]>
</url>
<type>mp3</type>
<size>3757804</size>
<bitrate>128</bitrate>
</p2p>
</result>
這就是你要的音樂地址http://zhangmenshiting.baidu.com/data2/music
/8453672/8453672.mp3?xcode=ba6c1f8ee7b7a2c90d7b4b9a27aa30f1
其中的count值為1是說返回的是一個,這個沒什麼用,接下來的東西就有用了,
encode裡的值是歌曲加密後的地址,
加密只是對檔案名稱加密 的,我們需要的只是前面的路徑,也就是 http://song.feifa-radio.com/Q/20050701
/jingxuan/
這部分,然後複製decode 的值: 1.Wma 與前面的相拼就是正確的:
http://song.feifa-radio.com/Q/20050701/jingxuan/1.Wma 後面的type的值為2
表示此歌曲檔案類型是wma的,其它的:
1表示rm,0表示MP3,通常我們下的類型都是MP3或WMA的,
所以只要有2或0的lrcid這個的值是百度伺服器上這首歌的歌詞檔案的檔案名稱
,這個檔案的路徑是:
http://box.zhangmen.baidu.com/bdlrc/496/49684.lrc
這個位址解析下:
http://box.zhangmen.baidu.com/bdlrc/ 這個是百度lrc歌詞存放地址,
後面的496是一個的不定的,民就是說歌曲不同那個目錄名也不同,
它的演算法是拿歌詞檔案名稱(也就是上面說的 49684)
除以一百,然後取小於等於其結果的最大整數,如上面的:
49684/100 =496.84 取小於等於496.84 的最大整數就是496,於是這首歌完整的歌詞地址就出來了:
http://box.zhangmen.baidu.com/bdlrc/496 /49684.lrc
安寧ヤ太天真似乎說得複雜了了,呵呵,希望對大家有用
Java代碼
<appSettings>
<!--搜搜音樂地址 http://cgi.music.soso.com/fcgi-bin/m.q?w=[歌名/歌手名]&p=[頁數]&t=[格式]-->
<!--格式: -1-全部 0-MP3 1-RM ,2-WMA-->
<add key="SosoUrl" value=
"http://cgi.music.soso.com/fcgi-bin/m.q?w={0}&p=1&t={1}"/>
<!--百度音樂地址 http://mp3.baidu.com /m?f=ms&rf=idx&tn=baidump3&ct=
134217728&lf=&rn=& word=[歌名/歌手名]&lm=[格式]&pg=[頁數]-->
<!---格式:-1-全部 0-MP3 1-RM ,2-WMA-->
<add key="BaiduUrl" value="http://mp3.baidu.com/m?f=ms&rf=idx&tn=baidump3&ct=
134217728&lf=&rn=&word={0}&lm={1}"/>
<!--百度音樂快搜地址 http://box.zhangmen.baidu.com/x?op=12&count=1&title=[歌名]$$[歌手名]$$$$-->
<add key="BaiduQuickUrl" value="http://box.zhangmen.baidu.com/x?op=12&count=1&title={0}$${1}$$$$"/>
<!--千千靜聽歌詞資訊地址 http://ttlrcct.qianqian.com/dll/lyricsvr.dll?sh?Artist=[歌手名]&Title=[歌名]-->
<add key="TTLrcListUrl" value="http://ttlrcct.qianqian.com/dll/lyricsvr.dll?sh?Artist={0}&Title={1}"/>
<!--千千靜聽歌詞地址 http://ttlrccnc.qianqian.com /dll/lyricsvr.dll?dl?Id=[歌曲ID]&Code=[title和artist]&uid=03&
mac=002421585787&hds=WD-WMAV22344505"-->
<add key="TTLrcUrl" value="http://ttlrccnc.qianqian.com/dll/lyricsvr.dll?
dl?Id={0}&Code={1}&uid=03&mac=002421585787&hds=WD-WMAV22344505"/>
</appSettings>