`
wangxing0311
  • 浏览: 52828 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java获取优酷、土豆、酷6、6间房等视频

阅读更多

import org.jsoup.Jsoup;
002 import org.jsoup.nodes.Document;
003 import org.jsoup.nodes.Element;
004 import org.jsoup.select.Elements;
005  
006 /**
007 * 视频工具类
008 * @author sunlightcs
009 * 2011-4-6
010 * http://hi.juziku.com/sunlightcs/
011 */
012 public class VideoUtil {
013      
014     /**
015      * 获取视频信息
016      * @param url
017      * @return
018      */
019     public static Video getVideoInfo(String url){
020         Video video = new Video();
021          
022         if(url.indexOf("v.youku.com")!=-1){
023             try {
024                 video = getYouKuVideo(url);
025             catch (Exception e) {
026                 video = null;
027             }
028         }else if(url.indexOf("tudou.com")!=-1){
029             try {
030                 video = getTudouVideo(url);
031             catch (Exception e) {
032                 video = null;
033             }
034         }else if(url.indexOf("v.ku6.com")!=-1){
035             try {
036                 video = getKu6Video(url);
037             catch (Exception e) {
038                 video = null;
039             }
040         }else if(url.indexOf("6.cn")!=-1){
041             try {
042                 video = get6Video(url);
043             catch (Exception e) {
044                 video = null;
045             }
046         }else if(url.indexOf("56.com")!=-1){
047             try {
048                 video = get56Video(url);
049             catch (Exception e) {
050                 video = null;
051             }
052         }
053          
054         return video;
055     }
056      
057      
058     /**
059      * 获取优酷视频
060      * @param url  视频URL
061      */
062     public static Video getYouKuVideo(String url) throws Exception{
063         Document doc = getURLContent(url);
064          
065         /**
066          *获取视频缩略图
067          */
068         String pic = getElementAttrById(doc, "s_sina""href");
069         int local = pic.indexOf("pic=");
070         pic = pic.substring(local+4);
071          
072         /**
073          * 获取视频地址
074          */    
075         String flash = getElementAttrById(doc, "link2""value");
076          
077         /**
078          * 获取视频时间
079          */
080         String time = getElementAttrById(doc, "download""href");
081         String []arrays = time.split("\\|");
082         time = arrays[4];
083          
084         Video video = new Video();
085         video.setPic(pic);
086         video.setFlash(flash);
087         video.setTime(time);
088          
089         return video;
090     }
091      
092      
093     /**
094      * 获取土豆视频
095      * @param url  视频URL
096      */
097     public static Video getTudouVideo(String url) throws Exception{
098         Document doc = getURLContent(url);
099         String content = doc.html();
100         int beginLocal = content.indexOf("<script>document.domain");
101         int endLocal = content.indexOf("</script>");
102         content = content.substring(beginLocal, endLocal);
103          
104         /**
105          * 获取视频地址
106          */
107         String flash = getScriptVarByName("iid_code", content);
108         flash = "http://www.tudou.com/v/" + flash + "/v.swf";
109          
110         /**
111          *获取视频缩略图
112          */
113         String pic = getScriptVarByName("thumbnail", content);
114          
115         /**
116          * 获取视频时间
117          */
118         String time = getScriptVarByName("time", content);
119  
120         Video video = new Video();
121         video.setPic(pic);
122         video.setFlash(flash);
123         video.setTime(time);
124          
125         return video;
126     }
127      
128      
129     /**
130      * 获取酷6视频
131      * @param url  视频URL
132      */
133     public static Video getKu6Video(String url) throws Exception{
134         Document doc = getURLContent(url);
135          
136         /**
137          * 获取视频地址
138          */
139         Element flashEt = doc.getElementById("outSideSwfCode");
140         String flash = flashEt.attr("value");
141          
142         /**
143          * 获取视频缩略图
144          */
145         Element picEt = doc.getElementById("plVideosList");
146         String time = null;
147         String pic = null;
148         if(picEt!=null){
149             Elements pics = picEt.getElementsByTag("img");
150             pic = pics.get(0).attr("src");
151              
152             /**
153              * 获取视频时长
154              */
155             Element timeEt = picEt.select("span.review>cite").first();
156             time = timeEt.text();
157         }else{
158             pic = doc.getElementsByClass("s_pic").first().text();
159         }
160          
161         Video video = new Video();
162         video.setPic(pic);
163         video.setFlash(flash);
164         video.setTime(time);
165          
166         return video;
167          
168     }
169      
170      
171     /**
172      * 获取6间房视频
173      * @param url  视频URL
174      */
175     public static Video get6Video(String url) throws Exception{
176         Document doc = getURLContent(url);
177          
178         /**
179          * 获取视频缩略图
180          */
181         Element picEt = doc.getElementsByClass("summary").first();
182         String pic = picEt.getElementsByTag("img").first().attr("src");
183          
184         /**
185          * 获取视频时长
186          */
187         String time = getVideoTime(doc, url, "watchUserVideo");
188         if(time==null){
189             time = getVideoTime(doc, url, "watchRelVideo");
190         }
191          
192         /**
193          * 获取视频地址
194          */
195         Element flashEt = doc.getElementById("video-share-code");
196         doc = Jsoup.parse(flashEt.attr("value")); 
197         String flash = doc.select("embed").attr("src");
198          
199         Video video = new Video();
200         video.setPic(pic);
201         video.setFlash(flash);
202         video.setTime(time);
203          
204         return video;
205     }
206      
207      
208     /**
209      * 获取56视频
210      * @param url  视频URL
211      */
212     public static Video get56Video(String url) throws Exception{
213         Document doc = getURLContent(url);
214         String content = doc.html();
215          
216         /**
217          * 获取视频缩略图
218          */
219         int begin = content.indexOf("\"img\":\"");
220         content = content.substring(begin+7, begin+200);
221         int end = content.indexOf("\"};");
222         String pic = content.substring(0, end).trim();
223         pic = pic.replaceAll("\\\\""");      
224          
225         /**
226          * 获取视频地址
227          */
228         String flash = "http://player.56.com" + url.substring(url.lastIndexOf("/"), url.lastIndexOf(".html")) + ".swf";
229          
230         Video video = new Video();
231         video.setPic(pic);
232         video.setFlash(flash);
233          
234         return video;
235     }
236  
237     /**
238      * 获取6间房视频时长   
239      */
240     private static String getVideoTime(Document doc, String url, String id) {
241         String time = null;
242          
243         Element timeEt = doc.getElementById(id);
244         Elements links = timeEt.select("dt > a");
245          
246          
247         for (Element link : links) {
248           String linkHref = link.attr("href");
249           if(linkHref.equalsIgnoreCase(url)){
250               time = link.parent().getElementsByTag("em").first().text();
251               break;
252           }
253         }
254         return time;
255     }
256      
257              
258     /**
259      * 获取script某个变量的值
260      * @param name  变量名称
261      * @return   返回获取的值
262      */
263     private static String getScriptVarByName(String name, String content){
264         String script = content;
265          
266         int begin = script.indexOf(name);
267          
268         script = script.substring(begin+name.length()+2);
269          
270         int end = script.indexOf(",");
271          
272         script = script.substring(0,end);
273          
274         String result=script.replaceAll("'""");
275         result = result.trim();
276          
277         return result;
278     }
279      
280      
281     /**
282      * 根据HTML的ID键及属于名,获取属于值
283      * @param id  HTML的ID键
284      * @param attrName  属于名
285      * @return  返回属性值
286      */
287     private static String getElementAttrById(Document doc, String id, String attrName)throws Exception{
288         Element et = doc.getElementById(id);
289         String attrValue = et.attr(attrName);
290          
291         return attrValue;
292     }
293      
294      
295      
296     /**
297      * 获取网页的内容
298      */
299     private static Document getURLContent(String url) throws Exception{
300         Document doc = Jsoup.connect(url)
301           .data("query""Java")
302           .userAgent("Mozilla")
303           .cookie("auth""token")
304           .timeout(6000)
305           .post();
306         return doc;
307     }
308      
309      
310     public static void main(String[] args) {
311         //String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
312         //String url = "http://www.tudou.com/programs/view/pVploWOtCQM/";
313         //String url = "http://v.ku6.com/special/show_4024167/9t7p64bisV2A31Hz.html";
314         //String url = "http://v.ku6.com/show/BpP5LeyVwvikbT1F.html";
315         //String url = "http://6.cn/watch/14757577.html";
316         String url = "http://www.56.com/u64/v_NTkzMDEzMTc.html";
317         Video video = getVideoInfo(url);
318         System.out.println("视频缩略图:"+video.getPic());
319         System.out.println("视频地址:"+video.getFlash());
320         System.out.println("视频时长:"+video.getTime());
321     }
322 }
 
视频封装类
01 /**
02 * 视频封装
03 * @author sunlightcs
04 * 2011-4-6
05 * http://hi.juziku.com/sunlightcs/
06 */
07 public class Video {
08     private String flash;
09     private String pic;
10     private String time;
11     public String getFlash() {
12         return flash;
13     }
14     public void setFlash(String flash) {
15         this.flash = flash;
16     }
17     public String getPic() {
18         return pic;
19     }
20     public void setPic(String pic) {
21         this.pic = pic;
22     }
23     public String getTime() {
24         return time;
25     }
26     public void setTime(String time) {
27         this.time = time;
28     }
29 }
其中要用到一个JAR包,链接地址如下: 
http://jsoup.org/packages/jsoup-1.5.2.jar

0
3
分享到:
评论
2 楼 cyl5753 2013-01-23  
已经不能用了,看了好几个都是一样的代码。
1 楼 bigsalt 2011-11-02  
feichangniu

相关推荐

    JAVA获取视频缩略图

    在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...

    Java 获取视频时长、格式、大小需要的jar

    在Java编程环境中,有时我们需要处理多媒体文件,特别是视频文件,比如获取视频的时长、格式以及文件大小等信息。为了实现这些功能,开发者通常会依赖第三方库。在本例中,我们关注的是名为"jave-1.0.2"的库,它是一...

    java获取视频长度

    在Java编程环境中,获取视频长度是一项常见的任务,尤其在处理用户上传视频的场景下。本文将深入探讨如何使用Java来实现这一功能,并结合提供的文件进行分析。 首先,我们需要理解视频文件的结构。视频是由一系列帧...

    java中如何获取视频的封面和时常

    一步到位,直接解决获取不到视频封面的问题。遥遥领先

    java使用OpenCV从视频文件中获取帧

    "java使用OpenCV从视频文件...Java使用OpenCV从视频文件中获取帧是一个非常有用的技术,它可以应用于很多领域,例如视频监控、图像识别、视频编辑等。借助于Java和OpenCV,我们可以轻松地实现视频处理和图像处理任务。

    java中使用FFMpeg获取视频时长

    Java中的FFmpeg库被广泛用于处理音视频相关的任务,其中包括获取视频时长。FFmpeg是一个开源项目,提供了命令行工具和一系列的库,用于处理多媒体数据。在Java中使用FFmpeg,开发者可以方便地集成到自己的应用中,...

    java使用Xuggler获得视频时长,分辨率,高宽,码率等信息

    总的来说,Xuggler为Java开发者提供了一个强大且灵活的工具,用于处理和分析音视频文件,包括获取视频的时长、分辨率、高宽比和码率等关键信息。通过熟练掌握Xuggler的使用,你可以轻松地构建出能够处理多媒体文件的...

    Java利用FFmpeg解析视频,截图,获取视频播放时间

    3. **获取视频播放时间**:视频的总播放时间可以通过解析ffprobe输出的元数据获取。在JSON格式的输出中,找到"time_base"和"duration"字段,将它们转换为秒,就可以得到视频的总时长。 以下是一个简单的Java示例,...

    java 获取json网页数据

    在Java编程中,获取JSON网页数据是常见的任务,特别是在处理Web API或者进行数据抓取时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和高效而广泛被采用。本实例将深入讲解如何使用...

    java 获取客户端ip mac地址

    在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端 IP 地址 获取客户端的IP地址通常在...

    java获取电子称重量数据

    综上所述,Java获取电子称重量数据涉及了Java串口通信、通信协议的理解与实现、异常处理和性能优化等多个方面的知识。通过正确的技术选型和严谨的编程实践,我们可以构建可靠的系统来无缝地集成电子秤设备,实现称重...

    Java获取系统CPU、内存、硬盘等系统信息

    在Java编程中,获取系统资源的信息是常见...总的来说,Java虽然不能直接提供获取所有系统资源的通用方法,但通过标准库和其他辅助工具,我们可以获取到CPU、内存和硬盘等关键信息,为系统监控和性能优化提供数据支持。

    java 获取i18n资源文件 java 获取i18n资源文件

    java 获取i18n资源文件 java 获取i18n资源文件java 获取i18n资源文件 java 获取i18n资源文件java 获取i18n资源文件 java 获取i18n资源文件java 获取i18n资源文件 java 获取i18n资源文件java 获取i18n资源文件 java ...

    java ipmi,vxipmi 通过java获取服务器信息,温度、风扇、内存等

    6. **异常处理**:在获取和处理服务器信息时,需要考虑网络问题、认证失败、传感器无响应等情况。Java程序应该包含适当的错误处理代码,以捕获和处理可能出现的异常。 7. **实时监控**:为了持续监控服务器状态,...

    java获取系统、硬件、设备相关信息

    java 1. 使用wmic相关命令获取windows硬件相关信息。 2. 使用shell相关的dmidecode/fdisk/ifconfig命令获取Linux硬件和系统相关信息

    java 获取计算机名与IP地址

    在Java编程语言中,获取计算机名和IP地址是常见的网络编程任务。这主要涉及到Java的`java.net`包,该包提供了多种类和接口来处理网络相关的操作。下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看...

    java获取数字证书信息

    在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...

    MultipartFile 视频获取时长(时分秒) VideoUtil.java

    本地生成file文件 MultipartFile转为file,获取时长(毫秒),换算毫秒为时分秒 删除本地的file文件

    java+FFmpeg+JavaCV实现无控件HTML页面视频实时预览,录像等,RTSP协议

    在本项目中,RTSP协议用于从远程服务器获取视频流,使得客户端可以实时预览视频。 2. **Java**:作为跨平台的编程语言,Java提供了丰富的库和API,使得开发者能够方便地处理网络通信和多媒体数据。在这个项目中,...

    javaCV将socket获取的视频流推到流媒体(RTMP)服务器jar

    JavaCV 是一个强大的Java库,它为Java程序员提供了与...以上就是使用JavaCV将通过Socket获取的视频流推送到RTMP服务器涉及的核心技术点。在实际开发中,开发者需要理解这些技术,并结合具体需求进行相应的编程实现。

Global site tag (gtag.js) - Google Analytics