?? thiefparsetb.java
字號(hào):
package org.tools.plugin;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.tools.StreamDownThread;
import org.tools.Thief;
/**
* 聽吧
*
* @author zhanghongbo
*
*/
public class ThiefParseTB extends ThiefParseBase {
public Map<String, String> parse(String homeUrl, String musicPrix,
String listUrl) {
// 以下取得當(dāng)前URL文檔內(nèi)容
Thief thief = new Thief();
String content = thief.readURL(listUrl, null);
if (content == null || content.equals(""))
return null;
Map<String, String> map = new HashMap<String, String>();
List <String>temp = new ArrayList<String>();
Pattern p = Pattern.compile("href\\='\\.\\.([^']+)'"),
p1=Pattern.compile("name\\=\\\"Filename\\\"\\s+value\\=\\\"\\.\\.([^\\\"]+)");
Pattern p2 = Pattern.compile("【歌曲名稱】:\\<font\\s+color\\=\\\"#0000FF\\\">([^\\>]+)\\<\\/font\\>"),
p3=Pattern.compile("\\<REF\\s+HREF\\=\\\"([^\\\"]+)\\\"\\/\\>");
Matcher m = p.matcher(content),m1,m2,m3;
while(m.find()){
String musicUrl = homeUrl+m.group(1);
if(temp.contains(musicUrl))continue;
temp.add(musicUrl);
System.out.println("讀取文件:"+musicUrl);
String _content = thief.readURL(musicUrl,null);
if(_content==null)continue;
m1 = p1.matcher(_content);
m2 = p2.matcher(_content);
if(m1.find()&&m2.find()){
String musicName = m2.group(1);
//對(duì)空格的編碼
musicUrl = homeUrl+m1.group(1).replaceAll("\\s", "%20");
_content = thief.readURL(musicUrl,null);
if(_content==null)continue;
m3 = p3.matcher(_content);
if(m3.find()){
map.put(musicName,m3.group(1));
System.out.println(musicName+":"+m3.group(1));
}
}
}
return map;
}
public void doDownload(JFrame frame, Map<String, String> map,JLabel state_label,String saveto) {
Map <String,String[]>_map = new HashMap<String,String[]>();
//先對(duì)Map分析再執(zhí)行下動(dòng)作
Set <String>set = map.keySet();
for(String name:set){
String[] t=parseUrl(map.get(name));
if(t==null)continue;
_map.put(name,t);
}
new Thread(new StreamDownThread(_map,saveto,state_label)).start();
}
private String[] parseUrl(String url){
Pattern p = Pattern.compile("http\\:\\/\\/([\\d|\\.]+)([^\\?]+)\\?(.*)");
Matcher m = p.matcher(url);
if(m.find()){
String temp = m.group(2);
int index= temp.indexOf(".");
if(index<0)return null;
temp = temp.substring(index+1);
return new String[]{
m.group(2)+"?"+m.group(3),
m.group(1),
temp
};
}
return null;
}
public static void main(String mes[]){
String url = "http://www.ting88.com/special_list/9697.htm";
ThiefParseTB tb = new ThiefParseTB();
Map<String,String>map = tb.parse("http://www.ting88.com", "", url);
tb.doDownload(null,map,null,"d:\\");
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -