源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java获取优酷视频地址示例

  • 时间:2022-06-01 01:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java获取优酷视频地址示例
[u]复制代码[/u] 代码如下:
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;   }  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部