⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thiefparsetb.java

📁 音乐网站下载程序
💻 JAVA
字号:
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) {
		// 以下取得当前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>();
		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);
				//对空格的编码
				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[]>();
		//先对Map分析再执行下动作
		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:\\");
		
		
	}
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -