📄 thiefparsegd.java
字号:
package org.tools.plugin;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import org.tools.Thief;
public class ThiefParseGD extends ThiefParseBase{
public void doDownload(JFrame frame, Map<String, String> map, JLabel state_label, String saveto) {
// TODO 自动生成方法存根
JOptionPane.showMessageDialog(frame, "对不起,由于无法生成rm文件头当前版本暂时不支持\nrtsp协议下载,请保存为清单文件\n然后用flashget、影音传送带下载。\n 注意:需要另外生成一份有歌曲名称的详细列表,\n下载完成用使用GDDJMEND.bat进行歌曲名称重命名。","下载提示",JOptionPane.INFORMATION_MESSAGE);
}
public Map<String, String> parse(String homeUrl, String musicPrix, String listUrl) {
//以下取得当前URL文档内容
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>();
// 分析内容
Pattern p = Pattern.compile("iframe\\s+src=\\'([^\\']+)\\'\\s+name=\"new\"",Pattern.CASE_INSENSITIVE),
p1 = Pattern.compile("open\\(\"(play.aspx\\?id=\\d+)\",\"play\"\\)",Pattern.CASE_INSENSITIVE),
p2 = Pattern.compile("id=\"ctl00_ContentPlaceHolder1_lbName\"><b>([^>]+)</b></span>",Pattern.CASE_INSENSITIVE),
p3 = Pattern.compile("<param name=\"SRC\"\\s+value=\"([^\"]+)\"",Pattern.CASE_INSENSITIVE)
;
Matcher m = p.matcher(content),m1,m2,m3;
if(!m.find())return map;
//找到真正地址
String realUrl = homeUrl+"/"+m.group(1);
content = thief.readURL(realUrl, null);
m1 = p1.matcher(content);
boolean t = true;
while(m1.find()&&t){
String musicUrl = homeUrl+"/"+m1.group(1),_content;
System.out.println("开始读取URL:"+musicUrl);
_content = thief.readURL(musicUrl, null);
if(_content == null)continue;
m2 = p2.matcher(_content);
m3 = p3.matcher(_content);
if(m2.find()&&m3.find()){
map.put( m2.group(1),m3.group(1));
System.out.println("分析到 :"+m2.group(1)+" "+m3.group(1));
}
}
return map;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -