First, you must download the song via the following connection:
http://box.zhangmen.baidu.com/x?op=12&count=1&title={title}$${author}$$$$
The ability to get an XML file can be read to the address of the music download and the address of the lyrics download by parsing the XML file.
Part of the code:
String title = "Rain of June";
String singer = "Hu";
String url = "http://box.zhangmen.baidu.com/x?op=12&count=1&title={title}$${author}$$$$"
Url=url.replace ("{title}", Urlencoder.encode (title, "Utf-8"));
Transcode A String string
if (singer = = null) {
Url=url.replace ("$${author}$$$$", "" ");
}else {
Url=url.replace ("{author}", Urlencoder.encode (singer, "Utf-8"));
}
The following section is the code that downloads the XML file based on the URL address:
public static InputStream DownLoad (String urlstr) {Get input stream based on network address
InputStream inputstream = null;
try {
URL url = new URL (urlstr);
HttpURLConnection urlconn = (httpurlconnection) url.openconnection ();
Urlconn.setrequestmethod ("GET");
Urlconn.setconnecttimeout (10000);
Urlconn.setdooutput (TRUE);
Urlconn.setdoinput (TRUE);
Urlconn.setusecaches (TRUE);
Urlconn.connect ();
System.out.println ("Urlcode:" +urlconn.getresponsecode ());
if (Urlconn.getresponsecode ()! = HTTPURLCONNECTION.HTTP_OK) {
SYSTEM.OUT.PRINTLN ("request Failed");
}else {
SYSTEM.OUT.PRINTLN ("request succeeded");
}
InputStream = Urlconn.getinputstream ();
}catch (Exception e) {
E.printstacktrace ();
}
return inputstream;
}
public static string Downloadtextfile (string url) {
StringBuffer sb = new StringBuffer ();
BufferedReader buffer = null;
InputStream instream = null;
String Line=null;
try {
instream = downLoad (URL);
Buffer = new BufferedReader (new InputStreamReader (instream, "GB2312"));
while (line = Buffer.readline ()) = null) {
System.out.println (line);
Sb.append (line+ "\ n");
}
}catch (IOException e) {
E.printstacktrace ();
}finally {
try {
Buffer.close ();
Instream.close ();
}catch (IOException e) {
E.printstacktrace ();
}
}
return sb.tostring ();
}
The downloaded XML file is as follows:
<<result>
<count>1</count>
<url>
<encode>
<! [cdata[
http://zhangmenshiting.baidu.com/data2/music/35447544/Zgdnagxra2xfn6nndk6ap5wxcjppz2ppz2awawaxnwthljswmphucgjklzawmjiakmlplpzuz5xkazzramdtbgfmbfqin5t1ywbnamvtcghpaghpa21rcte $
]]>
</encode>
<decode>
<! [cdata[
35447544.mp3?xcode=f413164c51af30babeb7812bbababa76ba80d37c75164049&mid=0.46079086556749
]]>
</decode>
<type>8</type>
<lrcid>35220</lrcid>
<flag>1</flag>
</url>
<durl>
<encode>
<! [cdata[
http://zhangmenshiting2.baidu.com/data2/music/35447547/ Zgdnagxra29fn6nndk6ap5wxcjppz2ppz2awawaxnwthljswmphucgjklzawmjiakmlpzzayz2pny2xobm1wbpotafqin5t1ywbnamvtcghpaghpa21rcte $
]]>
</encode>
<decode>
<! [cdata[
35447547.mp3?
xcode=f413164c51af30babeb7812bbababa761ab0261949796ba5&mid=0.46079086556749
]]>
</decode>
<type>8</type>
<lrcid>35220</lrcid>
<flag>1</flag>
</durl>
<p2p>
<url>
<! [Cdata[]]>
</url>
<type>mp3</type>
<size>5511091</size>
<bitrate>192</bitrate>
</p2p>
</result>
the count value of 1 is said to return a, the value in encode is the address after the song is encrypted, encryption is only encrypted with the file name,
All we need is the front path, the http://zhangmenshiting.baidu.com/data2/music/35447544/.
This section, and then copy the value of the decode:
35447544.mp3?
xcode=f413164c51af30babeb7812bbababa76ba80d37c75164049&mid=0.46079086556749
Linking them up is the MP3 URL:
http://zhangmenshiting.baidu.com/data2/ music/35447544/35447544.mp3?xcode=f413164c51af30babeb7812bbababa76ba80d37c75164049&mid=0.46079086556749
http://box.zhangmen.baidu.com/bdlrc/ This is the Baidu LRC lyrics storage address,
35220/100 = 352.20 take less than equals 352.20 the largest integer is 352, so the song full lyrics address is out:
http:// Box.zhangmen.baidu.com/bdlrc/352 /35220 . lrc
This part is also seen on the internet, can be found on the Internet. It's like a rule.
Here is the parse XML file:
Parsing an XML file using the DOM
public static String Parasxml (InputStream inputstream) {
try {
String lrcid = Null,url = null;
Documentbuilderfactory factory = Documentbuilderfactory.newinstance ();
Documentbuilder builder = Factory.newdocumentbuilder ();
Document dom = Builder.parse (InputStream);
Element root = Dom.getdocumentelement ();
Node count = Root.getfirstchild ();
NodeList items = root.getelementsbytagname ("url");
if (items.getlength () <= 0) {
System.out.println ("Song Not Found");
return null;
}else {
Element Urlnode = (element) items.item (0);
System.out.println (Urlnode.gettextcontent ());
Element Lrcidnode = (Element) (Urlnode.getelementsbytagname ("Lrcid"). Item (0));
Element Encodenode = (Element) urlnode.getelementsbytagname ("Encode"). Item (0);
Element Decodenode = (Element) urlnode.getelementsbytagname ("Decode"). Item (0);
if (Encodenode = = null) {
System.out.println ("The song information is empty and cannot be downloaded");
return null;
}else {
System.out.println ("encode=" +encodenode.gettextcontent ());
}
if (Lrcidnode = = null) {
System.out.println ("lrcid = = null");
}else {
System.out.println (Lrcidnode.getnodename ());
}
if ("Lrcid". Equals (Lrcidnode.getnodename ())) {
System.out.println (Lrcidnode.gettextcontent ());
Lrcid = Lrcidnode.gettextcontent ();
}else {
System.out.println (Lrcidnode.getnodename ());
}
Get the value in encode
String Temp1 = Encodenode.gettextcontent ();
Gets the value of the Decodenode
String Temp2 = Decodenode.gettextcontent ();
StringBuffer buffer = new StringBuffer ();
The next step is to combine the Temp1 and Temp2 with the cut decoding.
String [] arrayTemp1 = Temp1.split ("/");
for (int i=0;i<arraytemp1.length-1;i++) {
Buffer.append (arraytemp1[i]+ "/");
}
Put the decoded addresses together.
Buffer.append (TEMP2);
url = buffer.tostring ();
url = url + "# #" + lrcid;
System.out.println ("xml:url=" +url);
return URL;
}
}catch (Exception e) {
E.printstacktrace ();
return null;
}
}
You can pass the # #来分开url和lrcid的值从而获取对应的值
The downloaded file will be able to get inputstream and then get the corresponding value through this stream interface
Copyright notice: This article blog original articles, blogs, without consent, may not be reproduced.
Android get Baidu music download music and lyrics download link