欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

使用jerry分析音悦台悦单视频下载地址并准确命名,jerry,音悦台的悦单视频,网站提

来源: javaer 分享于  点击 14311 次 点评:159

使用jerry分析音悦台悦单视频下载地址并准确命名,jerry,音悦台的悦单视频,网站提


音悦台的悦单视频,网站提供的下载是登录用户使用网站积分下载,如果需要下载很多歌悦单,那积分肯定不够使用。

简单查看了悦单播放页面的源代码,发现整个悦单的所有视频下载地址其实就是写在页面里的。正好这几天看Jodd,就趁便用其子组件jerry写一个解析悦单视频下载的方法。

简单描述下载流程:

1,使用jerry解析页面视频下载地址,保存到本地的一个html文件为a标签href连接;

2,手动打开保存的html文件,使用迅雷下载全部连接;

3,第2步下载得到的视频文件名称并非准确的视频名称,而是一些字符串,再解析第1步的文件以得到对应视频文件名称,对第2步得到的视频文件进行重命名。

import jodd.io.FileUtil;import jodd.io.NetUtil;import jodd.lagarto.dom.jerry.Jerry;import jodd.lagarto.dom.jerry.JerryFunction;import jodd.util.SystemUtil;import java.io.File;import java.io.IOException;/** * 用于解析音乐台http://www.yinyuetai.com/悦单视频地址. */public class JerryYinyuetai {    /**     * 悦单视频播放地址.     */    public static String pageUrl = "http://www.yinyuetai.com/playlist/354927";    /**     * 视频下载地址连接串.     */    public static StringBuilder hrefSb = new StringBuilder();    /**     * 提取的视频下载地址及名称写入html文件.     */    public static String genHtml = "F:/音悦台/音乐台视频下载.html";    public static void main(String[] args) throws IOException {        File file = new File(SystemUtil.getTempDir(), "yinyuetai.html");        NetUtil.downloadFile(pageUrl, file);        Jerry doc = Jerry.jerry(FileUtil.readString(file));        // System.out.println("视频个数=" + doc.$("#mvlist li").length());        doc.$("#mvlist li").each(new JerryFunction() {            public boolean onNode(Jerry jerry, int i) {                String url = jerry.$("span[name=videoUrl]").html();                hrefSb.append("<br/><a href=\\"" + url.substring(0, url.indexOf("?sc=")) + "\\">" + jerry.$("span strong").html() + "</a>\\n");                return true;            }        });        // 将提取的视频地址写入html.        FileUtil.writeBytes(genHtml, hrefSb.toString().getBytes());    }}import jodd.io.FileUtil;import jodd.lagarto.dom.jerry.Jerry;import jodd.lagarto.dom.jerry.JerryFunction;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;/** * 用于对音乐台http://www.yinyuetai.com/下载的视频进行重命名. */public class JerryYinyuetaiRenameFile {    /**     * 视频存储地址.     */    public static String downloadDir = "F:/音悦台/雅尼 - 命运的神力,让我重拾本真/";    /**     * 视频编码字符名称对应文字名称map.     */    public static Map<String, String> map = new HashMap<String, String>();    public static void main(String[] args) throws IOException {        // 解析提取视频地址html        Jerry doc = Jerry.jerry(FileUtil.readString(new File(JerryYinyuetai.genHtml)));        doc.$("a").each(new JerryFunction() {            public boolean onNode(Jerry jerry, int i) {                String url = jerry.attr("href");                url = url.substring(url.lastIndexOf("/") + 1);                String name = jerry.html();                // 替换<为<,替换>为>                name = name.replaceAll("<", "<").replaceAll(">", ">");                // 替换掉斜杠/                name = name.replaceAll("/", "");                // 替换<为《,替换>为》                name = name.replaceAll("<", "《").replaceAll(">", "》");                map.put(url, name + ".flv");                return true;            }        });        File[] files = new File(downloadDir).listFiles();        for (File file : files) {            if (map.get(file.getName()) != null) {                file.renameTo(new File(downloadDir + map.get(file.getName())));            }        }    }}//该片段来自于http://byrx.net
相关栏目:

用户点评