通过JAVA获取优酷、土豆、酷6、6间房等视频

发布于 2022-10-15 09:29:32 字数 27283 浏览 15 评论 0

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

代码如下:

Java代码

  1. import org.jsoup.Jsoup;
  2. import org.jsoup.nodes.Document;
  3. import org.jsoup.nodes.Element;
  4. import org.jsoup.select.Elements;
  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.                 Video video = new Video();
  119.                 video.setPic(pic);
  120.                 video.setFlash(flash);
  121.                 video.setTime(time);
  122.                
  123.                 return video;
  124.         }
  125.        
  126.        
  127.         /**
  128.          * 获取酷6视频
  129.          * @param url  视频URL
  130.          */
  131.         public static Video getKu6Video(String url) throws Exception{
  132.                 Document doc = getURLContent(url);
  133.                
  134.                 /**
  135.                  * 获取视频地址
  136.                  */
  137.                 Element flashEt = doc.getElementById("outSideSwfCode");
  138.                 String flash = flashEt.attr("value");
  139.                
  140.                 /**
  141.                  * 获取视频缩略图
  142.                  */
  143.                 Element picEt = doc.getElementById("plVideosList");
  144.                 String time = null;
  145.                 String pic = null;
  146.                 if(picEt!=null){
  147.                         Elements pics = picEt.getElementsByTag("img");
  148.                         pic = pics.get(0).attr("src");
  149.                        
  150.                         /**
  151.                          * 获取视频时长
  152.                          */
  153.                         Element timeEt = picEt.select("span.review>cite").first();
  154.                         time = timeEt.text();
  155.                 }else{
  156.                         pic = doc.getElementsByClass("s_pic").first().text();
  157.                 }
  158.                
  159.                 Video video = new Video();
  160.                 video.setPic(pic);
  161.                 video.setFlash(flash);
  162.                 video.setTime(time);
  163.                
  164.                 return video;
  165.                
  166.         }
  167.        
  168.        
  169.         /**
  170.          * 获取6间房视频
  171.          * @param url  视频URL
  172.          */
  173.         public static Video get6Video(String url) throws Exception{
  174.                 Document doc = getURLContent(url);
  175.                
  176.                 /**
  177.                  * 获取视频缩略图
  178.                  */
  179.                 Element picEt = doc.getElementsByClass("summary").first();
  180.                 String pic = picEt.getElementsByTag("img").first().attr("src");
  181.                
  182.                 /**
  183.                  * 获取视频时长
  184.                  */
  185.                 String time = getVideoTime(doc, url, "watchUserVideo");
  186.                 if(time==null){
  187.                         time = getVideoTime(doc, url, "watchRelVideo");
  188.                 }
  189.                
  190.                 /**
  191.                  * 获取视频地址
  192.                  */
  193.                 Element flashEt = doc.getElementById("video-share-code");
  194.                 doc = Jsoup.parse(flashEt.attr("value"));  
  195.                 String flash = doc.select("embed").attr("src");
  196.                
  197.                 Video video = new Video();
  198.                 video.setPic(pic);
  199.                 video.setFlash(flash);
  200.                 video.setTime(time);
  201.                
  202.                 return video;
  203.         }
  204.        
  205.        
  206.         /**
  207.          * 获取56视频
  208.          * @param url  视频URL
  209.          */
  210.         public static Video get56Video(String url) throws Exception{
  211.                 Document doc = getURLContent(url);
  212.                 String content = doc.html();
  213.                
  214.                 /**
  215.                  * 获取视频缩略图
  216.                  */
  217.                 int begin = content.indexOf("\"img\":\"");
  218.                 content = content.substring(begin+7, begin+200);
  219.                 int end = content.indexOf("\"};");
  220.                 String pic = content.substring(0, end).trim();
  221.                 pic = pic.replaceAll("\\\\", "");               
  222.                
  223.                 /**
  224.                  * 获取视频地址
  225.                  */
  226.                 String flash = "http://player.56.com" + url.substring(url.lastIndexOf("/"), url.lastIndexOf(".html")) + ".swf";
  227.                
  228.                 Video video = new Video();
  229.                 video.setPic(pic);
  230.                 video.setFlash(flash);
  231.                
  232.                 return video;
  233.         }
  234.         /**
  235.          * 获取6间房视频时长   
  236.          */
  237.         private static String getVideoTime(Document doc, String url, String id) {
  238.                 String time = null;
  239.                
  240.                 Element timeEt = doc.getElementById(id);
  241.                 Elements links = timeEt.select("dt > a");
  242.                
  243.                
  244.                 for (Element link : links) {
  245.                   String linkHref = link.attr("href");
  246.                   if(linkHref.equalsIgnoreCase(url)){
  247.                           time = link.parent().getElementsByTag("em").first().text();
  248.                           break;
  249.                   }
  250.                 }
  251.                 return time;
  252.         }
  253.        
  254.                        
  255.         /**
  256.          * 获取script某个变量的值
  257.          * @param name  变量名称
  258.          * @return   返回获取的值
  259.          */
  260.         private static String getScriptVarByName(String name, String content){
  261.                 String script = content;
  262.                
  263.                 int begin = script.indexOf(name);
  264.                
  265.                 script = script.substring(begin+name.length()+2);
  266.                
  267.                 int end = script.indexOf(",");
  268.                
  269.                 script = script.substring(0,end);
  270.                
  271.                 String result=script.replaceAll("'", "");
  272.                 result = result.trim();
  273.                
  274.                 return result;
  275.         }
  276.        
  277.        
  278.         /**
  279.          * 根据HTML的ID键及属于名,获取属于值
  280.          * @param id  HTML的ID键
  281.          * @param attrName  属于名
  282.          * @return  返回属性值
  283.          */
  284.         private static String getElementAttrById(Document doc, String id, String attrName)throws Exception{
  285.                 Element et = doc.getElementById(id);
  286.                 String attrValue = et.attr(attrName);
  287.                
  288.                 return attrValue;
  289.         }
  290.        
  291.        
  292.        
  293.         /**
  294.          * 获取网页的内容
  295.          */
  296.         private static Document getURLContent(String url) throws Exception{
  297.                 Document doc = Jsoup.connect(url)
  298.                   .data("query", "Java")
  299.                   .userAgent("Mozilla")
  300.                   .cookie("auth", "token")
  301.                   .timeout(6000)
  302.                   .post();
  303.                 return doc;
  304.         }
  305.        
  306.        
  307.         public static void main(String[] args) {
  308.                 //String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
  309.                 //String url = "http://www.tudou.com/programs/view/pVploWOtCQM/";
  310.                 //String url = "http://v.ku6.com/special/show_4024167/9t7p64bisV2A31Hz.html";
  311.                 //String url = "http://v.ku6.com/show/BpP5LeyVwvikbT1F.html";
  312.                 //String url = "http://6.cn/watch/14757577.html";
  313.                 String url = "http://www.56.com/u64/v_NTkzMDEzMTc.html";
  314.                 Video video = getVideoInfo(url);
  315.                 System.out.println("视频缩略图:"+video.getPic());
  316.                 System.out.println("视频地址:"+video.getFlash());
  317.                 System.out.println("视频时长:"+video.getTime());
  318.         }
  319. }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文