午后星期午

          通過JAVA獲取優酷、土豆、酷6、6間房等視頻

          通過JAVA獲取優酷、土豆、酷6、6間房、56視頻,現在很多社會網站都有這個功能,用戶輸入優酷、土豆、酷6、6間房、56視頻地址后,能找到對應的視頻及視頻的縮略圖,有些社區網站還能獲取到視頻的時長。
          比如:新浪微博就有這個功能,當用戶輸入優酷、土豆、酷6、6間房、56視頻網址后,就能獲取到相應的視頻地址及視頻的縮略圖。

          代碼如下:
          import org.jsoup.Jsoup;
          import org.jsoup.nodes.Document;
          import org.jsoup.nodes.Element;
          import org.jsoup.select.Elements;

          public class VideoUtil {
              
              
          /**
               * 獲取視頻信息
               * 
          @param url
               * 
          @return
               
          */
              
          public static Video getVideoInfo(String url){
                  Video video 
          = new Video();
                  
                  
          if(url.indexOf("v.youku.com")!=-1){
                      
          try {
                          video 
          = getYouKuVideo(url);
                      } 
          catch (Exception e) {
                          video 
          = null;
                      }
                  }
          else if(url.indexOf("tudou.com")!=-1){
                      
          try {
                          video 
          = getTudouVideo(url);
                      } 
          catch (Exception e) {
                          video 
          = null;
                      }
                  }
          else if(url.indexOf("v.ku6.com")!=-1){
                      
          try {
                          video 
          = getKu6Video(url);
                      } 
          catch (Exception e) {
                          video 
          = null;
                      }
                  }
          else if(url.indexOf("6.cn")!=-1){
                      
          try {
                          video 
          = get6Video(url);
                      } 
          catch (Exception e) {
                          video 
          = null;
                      }
                  }
          else if(url.indexOf("56.com")!=-1){
                      
          try {
                          video 
          = get56Video(url);
                      } 
          catch (Exception e) {
                          video 
          = null;
                      }
                  }
                  
                  
          return video;
              }
              
              
              
          /**
               * 獲取優酷視頻
               * 
          @param url  視頻URL
               
          */
              
          public static Video getYouKuVideo(String url) throws Exception{
                  Document doc 
          = getURLContent(url);
                  
                  
          /**
                   *獲取視頻縮略圖 
                   
          */
                  String pic 
          = getElementAttrById(doc, "s_sina""href");
                  
          int local = pic.indexOf("pic=");
                  pic 
          = pic.substring(local+4);
                  
                  
          /**
                   * 獲取視頻地址
                   
          */        
                  String flash 
          = getElementAttrById(doc, "link2""value");
                  
                  
          /**
                   * 獲取視頻時間
                   
          */    
                  String time 
          = getElementAttrById(doc, "download""href");
                  String []arrays 
          = time.split("\\|");
                  time 
          = arrays[4];
                  
                  Video video 
          = new Video();
                  video.setPic(pic);
                  video.setFlash(flash);
                  video.setTime(time);
                  
                  
          return video;
              }
              
              
              
          /**
               * 獲取土豆視頻
               * 
          @param url  視頻URL
               
          */
              
          public static Video getTudouVideo(String url) throws Exception{
                  Document doc 
          = getURLContent(url);
                  String content 
          = doc.html();
                  
          int beginLocal = content.indexOf("<script>document.domain");
                  
          int endLocal = content.indexOf("</script>");
                  content 
          = content.substring(beginLocal, endLocal);
                  
                  
          /**
                   * 獲取視頻地址
                   
          */    
                  String flash 
          = getScriptVarByName("iid_code", content);
                  flash 
          = "http://www.tudou.com/v/" + flash + "/v.swf";
                  
                  
          /**
                   *獲取視頻縮略圖 
                   
          */
                  String pic 
          = getScriptVarByName("thumbnail", content);
                  
                  
          /**
                   * 獲取視頻時間
                   
          */    
                  String time 
          = getScriptVarByName("time", content);

                  Video video 
          = new Video();
                  video.setPic(pic);
                  video.setFlash(flash);
                  video.setTime(time);
                  
                  
          return video;
              }
              
              
              
          /**
               * 獲取酷6視頻
               * 
          @param url  視頻URL
               
          */
              
          public static Video getKu6Video(String url) throws Exception{
                  Document doc 
          = getURLContent(url);
                  
                  
          /**
                   * 獲取視頻地址
                   
          */
                  Element flashEt 
          = doc.getElementById("outSideSwfCode");
                  String flash 
          = flashEt.attr("value");
                  
                  
          /**
                   * 獲取視頻縮略圖
                   
          */
                  Element picEt 
          = doc.getElementById("plVideosList");
                  String time 
          = null;
                  String pic 
          = null;
                  
          if(picEt!=null){
                      Elements pics 
          = picEt.getElementsByTag("img");
                      pic 
          = pics.get(0).attr("src");
                      
                      
          /**
                       * 獲取視頻時長
                       
          */
                      Element timeEt 
          = picEt.select("span.review>cite").first(); 
                      time 
          = timeEt.text();
                  }
          else{
                      pic 
          = doc.getElementsByClass("s_pic").first().text();
                  }
                  
                  Video video 
          = new Video();
                  video.setPic(pic);
                  video.setFlash(flash);
                  video.setTime(time);
                  
                  
          return video;
                  
              }
              
              
              
          /**
               * 獲取6間房視頻
               * 
          @param url  視頻URL
               
          */
              
          public static Video get6Video(String url) throws Exception{
                  Document doc 
          = getURLContent(url);
                  
                  
          /**
                   * 獲取視頻縮略圖
                   
          */
                  Element picEt 
          = doc.getElementsByClass("summary").first();
                  String pic 
          = picEt.getElementsByTag("img").first().attr("src");
                  
                  
          /**
                   * 獲取視頻時長
                   
          */
                  String time 
          = getVideoTime(doc, url, "watchUserVideo");
                  
          if(time==null){
                      time 
          = getVideoTime(doc, url, "watchRelVideo");
                  }
                  
                  
          /**
                   * 獲取視頻地址
                   
          */
                  Element flashEt 
          = doc.getElementById("video-share-code");
                  doc 
          = Jsoup.parse(flashEt.attr("value"));  
                  String flash 
          = doc.select("embed").attr("src");
                  
                  Video video 
          = new Video();
                  video.setPic(pic);
                  video.setFlash(flash);
                  video.setTime(time);
                  
                  
          return video;
              }
              
              
              
          /**
               * 獲取56視頻
               * 
          @param url  視頻URL
               
          */
              
          public static Video get56Video(String url) throws Exception{
                  Document doc 
          = getURLContent(url);
                  String content 
          = doc.html();
                  
                  
          /**
                   * 獲取視頻縮略圖
                   
          */
                  
          int begin = content.indexOf("\"img\":\"");
                  content = content.substring(begin+7, begin+200);
                  
          int end = content.indexOf("\"};");
                  String pic = content.substring(0, end).trim();
                  pic 
          = pic.replaceAll("\\\\""");        
                  
                  
          /**
                   * 獲取視頻地址
                   
          */
                  String flash 
          = "http://player.56.com" + url.substring(url.lastIndexOf("/"), url.lastIndexOf(".html")) + ".swf";
                  
                  Video video 
          = new Video();
                  video.setPic(pic);
                  video.setFlash(flash);
                  
                  
          return video;
              }

              
          /**
               * 獲取6間房視頻時長    
               
          */
              
          private static String getVideoTime(Document doc, String url, String id) {
                  String time 
          = null;
                  
                  Element timeEt 
          = doc.getElementById(id); 
                  Elements links 
          = timeEt.select("dt > a");
                  
                  
                  
          for (Element link : links) {
                    String linkHref 
          = link.attr("href");
                    
          if(linkHref.equalsIgnoreCase(url)){
                        time 
          = link.parent().getElementsByTag("em").first().text();
                        
          break;
                    }
                  }
                  
          return time;
              }
              
                      
              
          /**
               * 獲取script某個變量的值
               * 
          @param name  變量名稱
               * 
          @return   返回獲取的值 
               
          */
              
          private static String getScriptVarByName(String name, String content){
                  String script 
          = content;
                  
                  
          int begin = script.indexOf(name);
                  
                  script 
          = script.substring(begin+name.length()+2);
                  
                  
          int end = script.indexOf(",");
                  
                  script 
          = script.substring(0,end);
                  
                  String result
          =script.replaceAll("'""");
                  result 
          = result.trim();
                  
                  
          return result;
              }
              
              
              
          /**
               * 根據HTML的ID鍵及屬于名,獲取屬于值
               * 
          @param id  HTML的ID鍵
               * 
          @param attrName  屬于名
               * 
          @return  返回屬性值
               
          */
              
          private static String getElementAttrById(Document doc, String id, String attrName)throws Exception{
                  Element et 
          = doc.getElementById(id);
                  String attrValue 
          = et.attr(attrName);
                  
                  
          return attrValue;
              }
              
              
              
              
          /**
               * 獲取網頁的內容
               
          */
              
          private static Document getURLContent(String url) throws Exception{
                  Document doc 
          = Jsoup.connect(url)
                    .data(
          "query""Java")
                    .userAgent(
          "Mozilla")
                    .cookie(
          "auth""token")
                    .timeout(
          6000)
                    .post();
                  
          return doc;
              }
              
              
              
          public static void main(String[] args) {
                  
          //String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
                  
          //String url = "http://www.tudou.com/programs/view/pVploWOtCQM/";
                  
          //String url = "http://v.ku6.com/special/show_4024167/9t7p64bisV2A31Hz.html";
                  
          //String url = "http://v.ku6.com/show/BpP5LeyVwvikbT1F.html";
                  
          //String url = "http://6.cn/watch/14757577.html";
                  String url = "http://www.56.com/u64/v_NTkzMDEzMTc.html";
                  Video video 
          = getVideoInfo(url);
                  System.out.println(
          "視頻縮略圖:"+video.getPic());
                  System.out.println(
          "視頻地址:"+video.getFlash());
                  System.out.println(
          "視頻時長:"+video.getTime());
              }
          }

          視頻封裝類

          public class Video {
              
          private String flash;
              
          private String pic;
              
          private String time;
              
          public String getFlash() {
                  
          return flash;
              }
              
          public void setFlash(String flash) {
                  
          this.flash = flash;
              }
              
          public String getPic() {
                  
          return pic;
              }
              
          public void setPic(String pic) {
                  
          this.pic = pic;
              }
              
          public String getTime() {
                  
          return time;
              }
              
          public void setTime(String time) {
                  
          this.time = time;
              }
          }

          其中要用到一個JAR包,鏈接地址如下:
          http://jsoup.org/packages/jsoup-1.5.2.jar

          posted on 2013-12-31 13:59 午后星期午 閱讀(90) 評論(0)  編輯  收藏 所屬分類: JavaEE

          主站蜘蛛池模板: 仪征市| 丰城市| 武义县| 安庆市| 芜湖县| 房产| 周至县| 徐州市| 三台县| 堆龙德庆县| 临沂市| 仙游县| 铁岭市| 郑州市| 如东县| 兴安盟| 山东| 甘洛县| 江源县| 鄂尔多斯市| 台州市| 永靖县| 沁阳市| 铁岭县| 桃园县| 万山特区| 苍山县| 环江| 华安县| 澄城县| 翁牛特旗| 连州市| 府谷县| 永吉县| 京山县| 若羌县| 瑞昌市| 海宁市| 诸暨市| 扎赉特旗| 永修县|