java获取优酷视频地址示例_java

复制代码 代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;

public class VideoTools
{
 public static void main(String[] args) throws Exception
 {
  VideoTools manager = new VideoTools();
  String jsonUrl = manager.getVideoUrl("http://v.youku.com/v_show/id_XMTgzNDA5OTMy.html");
  System.out.println(jsonUrl.split("#").length);
 }

 public String getVideoUrl(String htmlUrl) throws JSONException{
  //正则表达式解析地址,取id
  Pattern p = Pattern.compile(".*id_(\\w+)\\.html");
  String u = htmlUrl;
  Matcher m = p.matcher(u);
  String id = "";
  if (m.find()) {
   id = m.group(1);
  }
  System.out.println(id);

//  String id="XMTgzNDA5OTMy";
  String s = getContent("http://v.youku.com/player/getPlayList/VideoIDS/"+id);
  JSONObject jsobj = new JSONObject();
  jsobj =jsobj.fromObject(s);
  JSONArray jsonarr = jsobj.getJSONArray("data");
  System.out.println(jsobj);
  JSONObject obj1 = jsonarr.getJSONObject(0);
  String title= obj1.getString("title");
  double seed = obj1.getDouble("seed");
  JSONObject obj2 = obj1.getJSONObject("streamfileids");
  String mp4id = null;
  String flvid = null;
  String format = null;
  try
  {
   mp4id = obj2.getString("mp4");
   format = "mp4";
  } catch (JSONException e)
  {
   System.out.println("没有MP4格式");
   try
   {
    flvid = obj2.getString("flv");
    format = "flv";
   } catch (JSONException e1)
   {
    System.out.println("没有FLV格式");
    return "";
   }
  }
  String realfileid = null;
  if (format.equals("mp4"))
  {
   realfileid = getFileID(mp4id, seed);
  } else
  {
   realfileid = getFileID(flvid, seed);
  }

  String idLeft = realfileid.substring(0, 8);
  String idRight = realfileid.substring(10);

  String sid = genSid();
  JSONObject obj3 = obj1.getJSONObject("segs");
  JSONArray mp4arr = obj3.getJSONArray(format);
  String VideoUrl="";
  for (int i = 0; i < mp4arr.size(); i++)
  {
   JSONObject o = mp4arr.getJSONObject(i);
   String k = o.getString("k");
   String url = "http://f.youku.com/player/getFlvPath/sid/" + sid + "_" + String.format("%1$02X", i) + "/st/" + format
     + "/fileid/" + idLeft + String.format("%1$02X", i) + idRight + "?K=" + k;
   System.out.println(url);
   VideoUrl+=url+"#";
  }
  return VideoUrl;
 }

 private static String getFileID(String fileid, double seed)
 {
  String mixed = getFileIDMixString(seed);
  String[] ids = fileid.split("\\*");
  StringBuilder realId = new StringBuilder();
  int idx;
  for (int i = 0; i < ids.length; i++)
  {
   idx = Integer.parseInt(ids[i]);
   realId.append(mixed.charAt(idx));
  }
  return realId.toString();
 }

 public static String genSid()
 {
  int i1 = (int) (1000 + Math.floor(Math.random() * 999));
  int i2 = (int) (1000 + Math.floor(Math.random() * 9000));
  return System.currentTimeMillis() + "" + i1 + "" + i2;
 }

 private static String getFileIDMixString(double seed)
 {
  StringBuilder mixed = new StringBuilder();
  StringBuilder source = new StringBuilder("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
  int index, len = source.length();
  for (int i = 0; i < len; ++i)
  {
   seed = (seed * 211 + 30031) % 65536;
   index = (int) Math.floor(seed / 65536 * source.length());
   mixed.append(source.charAt(index));
   source.deleteCharAt(index);
  }
  return mixed.toString();
 }

 public static String getContent(String strUrl) {
  try {

   URL url = new URL(strUrl);
   BufferedReader br = new BufferedReader(new InputStreamReader(
     url.openStream()));
   String s = "";
   StringBuffer sb = new StringBuffer("");
   while ((s = br.readLine()) != null) {
    sb.append(s);
   }
   br.close();
   return sb.toString();
  } catch (Exception e) {
   return "error open url:" + strUrl;
  }

 }
}

时间: 2024-09-07 01:49:10

java获取优酷视频地址示例_java的相关文章

java实现优酷视频地址解析示例代码分享_java

举个例子比较好理解,比如我现在要下http://v.youku.com/v_show/id_XNDM2Mjc0MzAw.html这个视频.这里我们要获得的是视频的id,就是XNDM2Mjc0MzAw这部分,这是一个视频唯一的,所以在解析的时候肯定会用到. 为了能看清楚youku视频的播放过程,可以使用火狐的插件firebug对网页进行跟踪,如下图. 可以看到有很多GET,我们要找的应该是以这个id作为参数的GET,在下面我们可以找到这个链接http://v.youku.com/player/ge

如何用java程序获取优酷视频的真实地址,可以下载的?

问题描述 如何用java程序获取优酷视频的真实地址,可以下载的? 求大神指教,怎样用java代码实现获取优酷视频下载的链接地址,万分感谢 解决方案 获取优酷视频地址方法

怎么获取优酷视频的视频地址?获取优酷视频的视频Flash地址教程

1.如我们先打开 首先打开优酷网,然后我们再找到 分享的视频 然后打开到播放页面. 2.然后我们在视频页面找到 分享按钮,然后我在视频右侧的出现一个箭头,然后我们指向去会看到有很多的 分享方式,就会看到其中有一个是Flash地址. 3.点击复制,或者全选复制此地址,就可以添加到自己的网站,或者是博客等. 友情提示 其它的视频网都获取视频的方法都差不多了,只是复制方法不一样了,但它们都提供了复制视频的方法哦,在此我就不一个个介绍了哦.

java获取优酷等视频缩略图

  1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.net.MalformedURLException; 5 import java.net.URL; 6 7 import net.sf.json.*; 8 9 10 public class test2 { 11 12 /** 13 * @param args 14 *

解析获取优酷视频真实下载地址的PHP源代码

代码如下: <?php //--调用方法/demo.php?url=http://v.youku.com/v_show/id_XMzkyODA2NTEy.html echo getYoukuFlv($_GET['url']); function getYoukuFlv($url){ preg_match("#id_(.*?).html#",$url,$out); $id=$out[1]; $content=get_curl_contents('http://v.youku.com

解析获取优酷视频真实下载地址的PHP源代码_php技巧

复制代码 代码如下: <?php //--调用方法/demo.php?url=http://v.youku.com/v_show/id_XMzkyODA2NTEy.html echo getYoukuFlv($_GET['url']); function getYoukuFlv($url){     preg_match("#id_(.*?)\.html#",$url,$out);     $id=$out[1];     $content=get_curl_contents('

wordpress中用 iframe 方式插入优酷视频 兼容移动设备

现在的 WordPress 中文版内置了"使用 WordPress 的 Embed 功能快速插入优酷视频"的功能:只要在写文章时,独占一行粘贴优酷视频地址就可以自动调用次视频. 例如:我在下一行独占一行插入 http://v.youku.com/v_show/id_XNTgxNzI3MDcy.html 这个优酷视频地址,就可以自动调用优酷视频了. 但是这是用 Embed 的,PC端没问题,手机浏览器因为不支持 Flash 所以是无法显示和播放视频的,而现在提供的 iframe 方式插入

php获取优酷土豆页面中视频swf播放器地址

 代码如下 复制代码 项目用到临时写的.待完善 /*      * 根据用户提交的(swf/html)地址,获取优酷,土豆的swf播放地址      * */     private function _getSwf ($url = '') {         if(isset($url) && !empty($url)){             preg_match_all('/http://(.*?)?.(.*?)?.com/(.*)/',$url,$types);        

通过jsoup解析页面html获取优酷页面视频列表

  通过jsoup解析页面html获取优酷页面视频列表 作者: javaboy2012 Email:yanek@163.com qq:    1046011462     代码如下:   package com.yanek; import java.io.IOException; import java.util.HashMap; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Ele