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

📄 util.java

📁 java+eclipse做的TTPlayer
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
//                    Integer.parseInt(config.getProxyPort()));//        }//        http.getParams().setContentCharset("GBK");////        PostMethod get = postMethod();//        if (singer == null || singer.equals("")) {//            get.addParameter("song", song);//        } else {//否则就把两个都加上,看能不能搜到////            get.addParameter("singer", singer);//            get.addParameter("song", song);//        }//        StringBuilder sb = new StringBuilder();//        int i = http.executeMethod(get);//        sb.append(getString(get.getResponseBodyAsStream()));//        get.releaseConnection();//        //如果有这个,则说明没有找到//        if (sb.toString().contains("对不起,没有找到")) {//            log.log(Level.INFO, "第一遍没有搜到,将第二次");//            sb = new StringBuilder();//            //则再以另一种方式找,以文件名来找//            get = postMethod();//            get.addParameter("song", info.getName());//            i = http.executeMethod(get);//            log.log(Level.INFO, "第二次的I=" + i);//            sb.append(getString(get.getResponseBodyAsStream()));//            get.releaseConnection();//            if (sb.toString().contains("对不起,没有找到")) {//                //再尝试其它的方法//                //如果两个都加上也没有搜到,//                //则马上用文件名搜索一次//                if (info.getTitle().equals(info.getName())) {//                    log.log(Level.INFO, "第二次还没有搜到,放弃..");//                } else {//                    sb = new StringBuilder();//                    log.log(Level.INFO, "第二次还没有搜到,将第三次");//                    get = postMethod();//                    get.addParameter("song", info.getTitle());////                }////            } else {//                log.log(Level.INFO, "第二次搜到了");//                urlContent = sb.toString();//            }//        } else {//            log.log(Level.INFO, "第一次就搜到了");//            urlContent = sb.toString();//            log.log(Level.INFO, "搜到的内容是:" + urlContent);//        }////        return urlContent;//    }////    /**//     * 得到那个Post方法//     * @return POST方法//     *///    private static PostMethod postMethod() {//        PostMethod post = new PostMethod("http://www.jpwy.net/gc/search.php");//        post.addRequestHeader("Host", "www.jpwy.net");//        post.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9");//        post.addRequestHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");//        post.addRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");//        post.addRequestHeader("Keep-Alive", "300");//        post.addRequestHeader("Connection", "keep-alive");//        post.addRequestHeader("Referer", "http://www.jpwy.net/gc/");//        post.addParameter("submit", "歌词搜索");//        return post;//    }    /**     * 从一个流里面得到这个流的字符串     * 表现形式     * @param is 流     * @return 字符串     */    private static String getString(InputStream is) {        InputStreamReader r = null;        try {            StringBuilder sb = new StringBuilder();            //TODO 这里是固定把网页内容的编码写在GBK,应该是可设置的            r = new InputStreamReader(is, "GBK");            char[] buffer = new char[128];            int length = -1;            while ((length = r.read(buffer)) != -1) {                sb.append(new String(buffer, 0, length));            }            return sb.toString();        } catch (Exception ex) {            Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);            return "";        } finally {            try {                r.close();            } catch (Exception ex) {                Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);            }        }    }    /**     * 秒数转成00:00之类的字符串     * @param sec 秒数     * @return 字符串     */    public static String secondToString(int sec) {        DecimalFormat df = new DecimalFormat("00");        StringBuilder sb = new StringBuilder();        sb.append(df.format(sec / 60)).append(":").append(df.format(sec % 60));        return sb.toString();    }    /**     * 得到URL的内容,最好是只限百度使用     * @param url URL     * @return 内容,可能是NULL     * @throws java.lang.Exception     */    private static String getURLContent(String url) throws IOException {        HttpClient http = new HttpClient();        Config config = Config.getConfig();        if (config.isUseProxy()) {            if (config.getProxyUserName() != null && config.getProxyPwd() != null) {                http.getState().setProxyCredentials(                        new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),                        new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));            }            http.getHostConfiguration().setProxy(config.getProxyHost(),                    Integer.parseInt(config.getProxyPort()));        }        http.getParams().setContentCharset("GBK");        GetMethod get = new GetMethod();        URI uri = new URI(url, false, "GBK");        get.setURI(uri);        http.executeMethod(get);        System.out.println(get.getResponseCharSet());        Header[] hs = get.getResponseHeaders();        for (Header h : hs) {            System.out.print(h);        }        return getString(get.getResponseBodyAsStream());    }    /**     * 得到在百度上搜索到的歌词的内容     * @param key 关键内容     * @return 内容     * @throws java.lang.Exception     */    private static String getBaidu_Lyric(String key) throws Exception {        HttpClient http = new HttpClient();        Config config = Config.getConfig();        if (config.isUseProxy()) {            if (config.getProxyUserName() != null && config.getProxyPwd() != null) {                http.getState().setProxyCredentials(                        new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),                        new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));            }            http.getHostConfiguration().setProxy(config.getProxyHost(),                    Integer.parseInt(config.getProxyPort()));        }        http.getParams().setContentCharset("GBK");        GetMethod get = new GetMethod("http://www.baidu.com/s?wd=" + URLEncoder.encode("filetype:lrc " + key, "GBK"));        get.addRequestHeader("Host", "www.baidu.com");        get.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11");        get.addRequestHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");        get.addRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");        get.addRequestHeader("Keep-Alive", "300");        get.addRequestHeader("Referer", "http://www.baidu.com/");        get.addRequestHeader("Connection", "keep-alive");        int i = http.executeMethod(get);        String temp = getString(get.getResponseBodyAsStream());        get.releaseConnection();//        System.out.println("TEMP="+temp);//        Matcher m = Pattern.compile("(?<=<b>【LRC】</b>).*?(?=文件格式)").matcher(temp);        Matcher m = Pattern.compile("(?<='\\)\" href=\").*?(?=\" target=\"_blank\"><font size=\"3\">)").matcher(temp);        if (m.find()) {            String str = m.group();            String content = Util.getURLContent(str);            System.out.println(content);            return content;        } else {            return null;        }    }    /**     * 从网页内容里面分析出歌手和歌曲,还有下载的地址     * @param input 给定的网页源码     * @return 分析出来的列表     */    private static List<SearchResult> parseSearchResult(String input) {        List<SearchResult> list = new ArrayList<SearchResult>();        Matcher m = Pattern.compile("(?<=<b>【LRC】</b>).*?(?=文件格式)").matcher(input);        Pattern p = Pattern.compile("(?<='\\)\" href=\").*?(?=\" target=\"_blank\"><font size=\"3\">)");        while (m.find()) {            String str = m.group();            String trimed = htmlTrim(str);            int index = trimed.indexOf("-");            String title = "",artist  = "",url  = null;            if (index != -1) {                title = trimed.substring(0, index);                artist = trimed.substring(index + 1);            }            Matcher m1 = p.matcher(str);            if (m1.find()) {                url = m1.group();            }            if (url != null) {                final String tUrl = url;                SearchResult sr = new SearchResult(artist, title, new SearchResult.Task() {                    public String getLyricContent() throws IOException {                        return Util.getURLContent(tUrl);                    }                });                list.add(sr);            }        }        return list;    }    /**     * 去除HTML标记     * @param str1 含有HTML标记的字符串     * @return 去除掉相关字符串     */    public static String htmlTrim(String str1) {        String str = "";        str = str1;        //剔出了<html>的标签        str = str.replaceAll("</?[^>]+>", "");        //去除空格        str = str.replaceAll("\\s", "");        str = str.replaceAll("&nbsp;", "");        str=str.replaceAll("&amp;", "&");        str = str.replace(".", "");        str = str.replace("\"", "‘");        str = str.replace("'", "‘");        return str;    }    /**     * 从百度去搜索歌词     * @param info 播放项     * @return 歌词内容,可能为NULL     */    private static String getLyricBaidu(PlayListItem info) {        try {            //先全部匹配            String song = info.getTitle();            String name = info.getFormattedName();            String s = getBaidu_Lyric(name);            if (s == null) {                s = getBaidu_Lyric(song);                return s;            } else {                return s;            }        } catch (Exception ex) {            return null;        }    }////    /**//     * 从精品网页这个网站去搜索歌词//     * @param info 播放项//     * @return 歌词内容,可能为NULL//     *///    private static String getLyricJPWY(PlayListItem info) {//        try {//            String urlContent = getSearchContent(info);//            //如果urlContent不等于NULL,则说明找到了内容,这个时候就要分析了//            if (urlContent != null) {//                List<String> url = parseURLContent(urlContent);//                if (url.size() > 0) {//                    String ly = getJPWY_Lyric(url.get(0));//                    return ly;//                }//            }//            log.log(Level.INFO, "什么也没有找到");//            return null;//        } catch (IOException ex) {//            return null;//        }//    }    static enum Test {        Album, TITLE;    }    public static void main(String[] args) throws Exception {        Util.getBaidu_Lyric("昨夜星辰");//        System.out.println(getJPWY_Lyric("http://fanwen.jpwy.net/gc/down.php?id=1256&ps=15&ti=%B7%C9%CE%E8&key=baad6d5f1f2a2088867c97095756f5d31207207472"));//        String content="list.gif width=16 height=16></A></TD><TD align=middle><A href=\"jpwy.php?id=3802&ps=31&ti=%B1%F0%BF%DE%A3%AC%CE%D2%D7%EE%B0%AE%B5%C4%C8%CB&key=d9990c4d65af1111961a51fe5b8c27681207206999\" target=_blank><img border=0 src=image/lrc.gif>";//        Matcher m = Pattern.compile("(?<=list.gif width=16 height=16></A></TD><TD align=middle><A href=\").*?(?=\" target=_blank\\>\\<img border=0 src=image\\/lrc.gif>)").matcher(content);//        if(m.find()){//            System.out.println(m.group());//        }else{//            System.out.println("没有匹配");//        }    //        String s = Util.getSearchContent("Beyond", "");//        Util.parseURLContentToSearchResult(s);//        System.out.println(Util.getBaidu_Lyric("爱"));//        String test = "search.php?singer=%B3%C2%BA%C6%C3%F1%26%B7%B6%B1%F9%B1%F9\">陈浩民&范冰冰</A></TD><TD>&nbsp;</TD><TD><A href=\"mp3.php?R1=V1&keyword=%D0%D2%B8%A3%C7%A7";//        String test = "php?singer=%B3%C2%BA%C6%C3%F1%B7\">范冰冰</A></TD><TD><a href=\"search.php?album=";//        String test = "php?singer=eind%B1%AB%BC%D2%BDeind%D6%CD%F4%B7%E5eind\">鲍家街-汪峰</A></TD><TD>&nbsp;";//        Matcher m = Pattern.compile("(?<=singer=([%[0-9a-fA-F]{2}|[\\w\\p{Punct}]]){0,100}\">).*?(?=</A></TD><TD>)").matcher(test);//        if (m.find()) {//            System.out.println(m.group());//        }//        Util.voteOpen();    }}

⌨️ 快捷键说明

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