注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

使用JAVA根据网址获取优酷、土豆、酷6、6间房、56视频等缩略图、时长  

2013-01-09 18:07:02|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
通过JAVA获取酷6视频,现在很多社会网站都有这个功能,用户输入酷6视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长。 
比如:新浪微博就有这个功能,当用户输入视频网址后,就能获取到相应的视频地址及视频的缩略图。 
Java代码 
  1. import java.io.IOException;  
  2. import java.io.UnsupportedEncodingException;  
  3. import java.net.MalformedURLException;  
  4.   
  5. import org.jsoup.Jsoup;  
  6. import org.jsoup.nodes.Document;  
  7. import org.jsoup.nodes.Element;  
  8. import org.jsoup.select.Elements;  
  9.   
  10.   
  11. /** 
  12. * 获取Ku6视频 
  13. * @author sunlightcs 
  14. * 2011-3-31 
  15. * http://hi.juziku.com/sunlightcs/ 
  16. */  
  17. public class Ku6Test {  
  18.     private static String URL = "http://v.ku6.com/special/show_4027224/XFlByjLKGajkK_o-.html";  
  19.       
  20.     public static void main(String[] args) throws Exception{  
  21.           
  22.         Document doc = getURLContent();  
  23.           
  24.           
  25.         /** 
  26.          * 获取视频地址 
  27.          */  
  28.         Element flashEt = doc.getElementById("outSideSwfCode");  
  29.         String flash = flashEt.attr("value");  
  30.         System.out.println("视频地址:"+flash);  
  31.           
  32.         /** 
  33.          * 获取视频缩略图 
  34.          */  
  35.         Element picEt = doc.getElementById("plVideosList");  
  36.         if(picEt!=null){  
  37.             Elements pics = picEt.getElementsByTag("img");  
  38.             String pic = pics.get(0).attr("src");  
  39.             System.out.println("视频缩略图:"+pic);  
  40.               
  41.             /** 
  42.              * 获取视频时长 
  43.              */  
  44.             Element timeEt = picEt.select("span.review>cite").first();   
  45.             String time = timeEt.text();  
  46.             System.out.println("视频时长:"+time);  
  47.         }else{  
  48.             String pic = doc.getElementsByClass("s_pic").first().text();  
  49.             System.out.println("视频缩略图:"+pic);  
  50.         }  
  51.           
  52.     }  
  53.       
  54.     /** 
  55.      * 获取Ku6网页的内容 
  56.      */  
  57.     private static Document getURLContent() throws MalformedURLException, IOException, UnsupportedEncodingException {  
  58.         Document doc = Jsoup.connect(URL)  
  59.           .data("query""Java")  
  60.           .userAgent("Mozilla")  
  61.           .cookie("auth""token")  
  62.           .timeout(3000)  
  63.           .post();  
  64.         return doc;  
  65.     }  
  66.   
  67. }  


通过JAVA获取优酷、土豆、酷6、6间房、56视频,现在很多社会网站都有这个功能,用户输入优酷、土豆、酷6、6间房、56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长。 
比如:新浪微博就有这个功能,当用户输入优酷、土豆、酷6、6间房、56视频网址后,就能获取到相应的视频地址及视频的缩略图。 

代码如下: 

Java代码 
import org.jsoup.Jsoup;  
  1. import org.jsoup.nodes.Document;  
  2. import org.jsoup.nodes.Element;  
  3. import org.jsoup.select.Elements;  
  4.   
  5. /** 
  6. * 视频工具类 
  7. * @author sunlightcs 
  8. * 2011-4-6 
  9. * http://hi.juziku.com/sunlightcs/ 
  10. */  
  11. public class VideoUtil {  
  12.       
  13.     /** 
  14.      * 获取视频信息 
  15.      * @param url 
  16.      * @return 
  17.      */  
  18.     public static Video getVideoInfo(String url){  
  19.         Video video = new Video();  
  20.           
  21.         if(url.indexOf("v.youku.com")!=-1){  
  22.             try {  
  23.                 video = getYouKuVideo(url);  
  24.             } catch (Exception e) {  
  25.                 video = null;  
  26.             }  
  27.         }else if(url.indexOf("tudou.com")!=-1){  
  28.             try {  
  29.                 video = getTudouVideo(url);  
  30.             } catch (Exception e) {  
  31.                 video = null;  
  32.             }  
  33.         }else if(url.indexOf("v.ku6.com")!=-1){  
  34.             try {  
  35.                 video = getKu6Video(url);  
  36.             } catch (Exception e) {  
  37.                 video = null;  
  38.             }  
  39.         }else if(url.indexOf("6.cn")!=-1){  
  40.             try {  
  41.                 video = get6Video(url);  
  42.             } catch (Exception e) {  
  43.                 video = null;  
  44.             }  
  45.         }else if(url.indexOf("56.com")!=-1){  
  46.             try {  
  47.                 video = get56Video(url);  
  48.             } catch (Exception e) {  
  49.                 video = null;  
  50.             }  
  51.         }  
  52.           
  53.         return video;  
  54.     }  
  55.       
  56.       
  57.     /** 
  58.      * 获取优酷视频 
  59.      * @param url  视频URL 
  60.      */  
  61.     public static Video getYouKuVideo(String url) throws Exception{  
  62.         Document doc = getURLContent(url);  
  63.           
  64.         /** 
  65.          *获取视频缩略图  
  66.          */  
  67.         String pic = getElementAttrById(doc, "s_sina""href");  
  68.         int local = pic.indexOf("pic=");  
  69.         pic = pic.substring(local+4);  
  70.           
  71.         /** 
  72.          * 获取视频地址 
  73.          */       
  74.         String flash = getElementAttrById(doc, "link2""value");  
  75.           
  76.         /** 
  77.          * 获取视频时间 
  78.          */   
  79.         String time = getElementAttrById(doc, "download""href");  
  80.         String []arrays = time.split("\\|");  
  81.         time = arrays[4];  
  82.           
  83.         Video video = new Video();  
  84.         video.setPic(pic);  
  85.         video.setFlash(flash);  
  86.         video.setTime(time);  
  87.           
  88.         return video;  
  89.     }  
  90.       
  91.       
  92.     /** 
  93.      * 获取土豆视频 
  94.      * @param url  视频URL 
  95.      */  
  96.     public static Video getTudouVideo(String url) throws Exception{  
  97.         Document doc = getURLContent(url);  
  98.         String content = doc.html();  
  99.         int beginLocal = content.indexOf("<script>document.domain");  
  100.         int endLocal = content.indexOf("</script>");  
  101.         content = content.substring(beginLocal, endLocal);  
  102.           
  103.         /** 
  104.          * 获取视频地址 
  105.          */   
  106.         String flash = getScriptVarByName("iid_code", content);  
  107.         flash = "http://www.tudou.com/v/" + flash + "/v.swf";  
  108.           
  109.         /** 
  110.          *获取视频缩略图  
  111.          */  
  112.         String pic = getScriptVarByName("thumbnail", content);  
  113.           
  114.         /** 
  115.          * 获取视频时间 
  116.          */   
  117.         String time = getScriptVarByName("time", content);  
  118.   
  119.         Video video = new Video();  
  120.         video.setPic(pic);  
  121.         video.setFlash(flash);  
  122.         video.setTime(time);  
  123.           
  124.         return video;  
  125.     }  
  126.       
  127.       
  128.     /** 
  129.      * 获取酷6视频 
  130.      * @param url  视频URL 
  131.      */  
  132.     public static Video getKu6Video(String url) throws Exception{  
  133.         Document doc = getURLContent(url);  
  134.           
  135.         /** 
  136.          * 获取视频地址 
  137.          */  
  138.         Element flashEt = doc.getElementById("outSideSwfCode");  
  139.         String flash = flashEt.attr("value");  
  140.           
  141.         /** 
  142.          * 获取视频缩略图 
  143.          */  
  144.         Element picEt = doc.getElementById("plVideosList");  
  145.         String time = null;  
  146.         String pic = null;  
  147.         if(picEt!=null){  
  148.             Elements pics = picEt.getElementsByTag("img");  
  149.             pic = pics.get(0).attr("src");  
  150.               
  151.             /** 
  152.              * 获取视频时长 
  153.              */  
  154.             Element timeEt = picEt.select("span.review>cite").first();   
  155.             time = timeEt.text();  
  156.         }else{  
  157.             pic = doc.getElementsByClass("s_pic").first().text();  
  158.         }  
  159.           
  160.         Video video = new Video();  
  161.         video.setPic(pic);  
  162.         video.setFlash(flash);  
  163.         video.setTime(time);  
  164.           
  165.         return video;  
  166.           
  167.     }  
  168.       
  169.       
  170.     /** 
  171.      * 获取6间房视频 
  172.      * @param url  视频URL 
  173.      */  
  174.     public static Video get6Video(String url) throws Exception{  
  175.         Document doc = getURLContent(url);  
  176.           
  177.         /** 
  178.          * 获取视频缩略图 
  179.          */  
  180.         Element picEt = doc.getElementsByClass("summary").first();  
  181.         String pic = picEt.getElementsByTag("img").first().attr("src");  
  182.           
  183.         /** 
  184.          * 获取视频时长 
  185.          */  
  186.         String time = getVideoTime(doc, url, "watchUserVideo");  
  187.         if(time==null){  
  188.             time = getVideoTime(doc, url, "watchRelVideo");  
  189.         }  
  190.           
  191.         /** 
  192.          * 获取视频地址 
  193.          */  
  194.         Element flashEt = doc.getElementById("video-share-code");  
  195.         doc = Jsoup.parse(flashEt.attr("value"));    
  196.         String flash = doc.select("embed").attr("src");  
  197.           
  198.         Video video = new Video();  
  199.         video.setPic(pic);  
  200.         video.setFlash(flash);  
  201.         video.setTime(time);  
  202.           
  203.         return video;  
  204.     }  
  205.       
  206.       
  207.     /** 
  208.      * 获取56视频 
  209.      * @param url  视频URL 
  210.      */  
  211.     public static Video get56Video(String url) throws Exception{  
  212.         Document doc = getURLContent(url);  
  213.         String content = doc.html();  
  214.           
  215.         /** 
  216.          * 获取视频缩略图 
  217.          */  
  218.         int begin = content.indexOf("\"img\":\"");  
  219.         content = content.substring(begin+7, begin+200);  
  220.         int end = content.indexOf("\"};");  
  221.         String pic = content.substring(0, end).trim();  
  222.         pic = pic.replaceAll("\\\\", "");         
  223.           
  224.         /** 
  225.          * 获取视频地址 
  226.          */  
  227.         String flash = "http://player.56.com" + url.substring(url.lastIndexOf("/"), url.lastIndexOf(".html")) + ".swf";  
  228.           
  229.         Video video = new Video();  
  230.         video.setPic(pic);  
  231.         video.setFlash(flash);  
  232.           
  233.         return video;  
  234.     }  
  235.   
  236.     /** 
  237.      * 获取6间房视频时长     
  238.      */  
  239.     private static String getVideoTime(Document doc, String url, String id) {  
  240.         String time = null;  
  241.           
  242.         Element timeEt = doc.getElementById(id);   
  243.         Elements links = timeEt.select("dt > a");  
  244.           
  245.           
  246.         for (Element link : links) {  
  247.           String linkHref = link.attr("href");  
  248.           if(linkHref.equalsIgnoreCase(url)){  
  249.               time = link.parent().getElementsByTag("em").first().text();  
  250.               break;  
  251.           }  
  252.         }  
  253.         return time;  
  254.     }  
  255.       
  256.               
  257.     /** 
  258.      * 获取script某个变量的值 
  259.      * @param name  变量名称 
  260.      * @return   返回获取的值  
  261.      */  
  262.     private static String getScriptVarByName(String name, String content){  
  263.         String script = content;  
  264.           
  265.         int begin = script.indexOf(name);  
  266.           
  267.         script = script.substring(begin+name.length()+2);  
  268.           
  269.         int end = script.indexOf(",");  
  270.           
  271.         script = script.substring(0,end);  
  272.           
  273.         String result=script.replaceAll("'""");  
  274.         result = result.trim();  
  275.           
  276.         return result;  
  277.     }  
  278.       
  279.       
  280.     /** 
  281.      * 根据HTML的ID键及属于名,获取属于值 
  282.      * @param id  HTML的ID键 
  283.      * @param attrName  属于名 
  284.      * @return  返回属性值 
  285.      */  
  286.     private static String getElementAttrById(Document doc, String id, String attrName)throws Exception{  
  287.         Element et = doc.getElementById(id);  
  288.         String attrValue = et.attr(attrName);  
  289.           
  290.         return attrValue;  
  291.     }  
  292.       
  293.       
  294.       
  295.     /** 
  296.      * 获取网页的内容 
  297.      */  
  298.     private static Document getURLContent(String url) throws Exception{  
  299.         Document doc = Jsoup.connect(url)  
  300.           .data("query""Java")  
  301.           .userAgent("Mozilla")  
  302.           .cookie("auth""token")  
  303.           .timeout(6000)  
  304.           .post();  
  305.         return doc;  
  306.     }  
  307.       
  308.       
  309.     public static void main(String[] args) {  
  310.         //String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";  
  311.         //String url = "http://www.tudou.com/programs/view/pVploWOtCQM/";  
  312.         //String url = "http://v.ku6.com/special/show_4024167/9t7p64bisV2A31Hz.html";  
  313.         //String url = "http://v.ku6.com/show/BpP5LeyVwvikbT1F.html";  
  314.         //String url = "http://6.cn/watch/14757577.html";  
  315.         String url = "http://www.56.com/u64/v_NTkzMDEzMTc.html";  
  316.         Video video = getVideoInfo(url);  
  317.         System.out.println("视频缩略图:"+video.getPic());  
  318.         System.out.println("视频地址:"+video.getFlash());  
  319.         System.out.println("视频时长:"+video.getTime());  
  320.     }  
  321. }  
  评论这张
 
阅读(375)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016