java获取优酷视频真实地址
2013-05-13 21:31
465 查看
引入第三方包
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
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; } } }
相关文章推荐
- 获取优酷视频真实下载地址的PHP源代码
- java获取访问者真实ip和真实地址以及运营商
- 解析获取优酷视频真实下载地址的PHP源代码
- 【转】Java 解析优酷地址获取视频真实地址
- 解析获取优酷视频真实下载地址的PHP源代码
- Java 解析优酷地址获取视频真实地址
- java获取真实的下载地址和下载文件名
- 获取两地之间距离(真实地址或经纬度)高德API-JAVA版
- java模拟实现优酷视频真实地址解析
- java获取客户端真实地址IP
- =。= 好吧,获取优酷视频真实下载地址的后台完成了
- java获取网页上邮箱地址存放到.txt文件
- Atitit onvif协议获取rtsp地址播放java语言 attilx总结
- 通过ServletContext类的getRealPath()方法获取服务器的真实地址
- java获取地址全路径
- 渗透测试之邮件获取对方真实地址
- java获取电脑主板、CPU 编号以及MAC地址
- Java获取客户端真实IP地址的两种方法
- java获取mac地址-屏蔽ip封mac地址
- 百度地图 java 根据地址获取经纬度