复制代码代码如下:
นำเข้า java.io.bufferedreader;
นำเข้า Java.io.InputStreamReader;
นำเข้า java.net.url;
นำเข้า java.util.regex.matcher;
นำเข้า java.util.regex.pattern;
นำเข้า net.sf.json.jsonarray;
นำเข้า net.sf.json.jsonxception;
นำเข้า net.sf.json.jsonobject;
Videotools ชั้นเรียนสาธารณะ
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น
-
VideoTools Manager = New Videotools ();
String jsonUrl = manager.getVideourl ("http://v.youku.com/v_show/id_xmtgznda5otmy.html");
System.out.println (jsonurl.split ("#"). ความยาว);
-
สตริงสาธารณะ getVideourl (สตริง htmlurl) พ่น JSonexception {
// 正则表达式解析地址, 取 id
รูปแบบ p = pattern.compile (".*id _ (// w+) //. html");
สตริง u = htmlurl;
Matcher M = P.Matcher (U);
string id = "";
ถ้า (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 ("เมล็ด");
jsonObject obj2 = obj1.getjsonobject ("Streamfileids");
สตริง mp4id = null;
สตริง flvid = null;
รูปแบบสตริง = null;
พยายาม
-
mp4id = obj2.getString ("mp4");
format = "mp4";
} catch (jSonexception e)
-
System.out.println ("没有 mp4 格式");
พยายาม
-
flvid = obj2.getString ("flv");
format = "flv";
} catch (jSonexception e1)
-
System.out.println ("没有 flv 格式");
กลับ "";
-
-
สตริง realfileid = null;
if (format.equals ("MP4"))
-
realfileid = getFileid (mp4id, เมล็ด);
} อื่น
-
realfileid = getFileid (flvid, เมล็ด);
-
string indleft = realfileid.substring (0, 8);
string idright = realfileid.substring (10);
สตริง sid = gensid ();
jsonObject obj3 = obj1.getjsonobject ("segs");
JSONARRAY MP4ARR = OBJ3.GETJSONARRAY (รูปแบบ);
String videourl = "";
สำหรับ (int i = 0; i <mp4arr.size (); i ++)
-
jsonObject o = mp4arr.getJsonObject (i);
สตริง k = o.getString ("k");
string url = "http://f.youku.com/player/getflvpath/sid/" + sid + "_" + string.format ("%1 $ 02x", i) + "/st/" + รูปแบบ
+ "/fileid/" + idleft + string.format ("%1 $ 02x", i) + idright + "? k =" + k;
System.out.println (URL);
Videourl+= url+"#";
-
ส่งคืน Videourl;
-
สตริงคงที่ส่วนตัว getFileId (สตริง fileid, สองเมล็ด)
-
สตริงผสม = getFileIdMixString (เมล็ด);
string [] ids = fileid.split ("//*");
StringBuilder realId = new StringBuilder ();
int idx;
สำหรับ (int i = 0; i <ids.length; i ++)
-
idx = integer.parseint (ids [i]);
realId.Append (mixed.charat (idx));
-
return realid.toString ();
-
String String สาธารณะ gensid ()
-
int i1 = (int) (1,000 + math.floor (math.random () * 999));
int i2 = (int) (1,000 + math.floor (math.random () * 9000));
ส่งคืน system.currenttimemillis () + "" + i1 + "" + i2;
-
สตริงคงที่ส่วนตัว getFileIdMixString (สองเมล็ด)
-
stringbuilder mixed = new StringBuilder ();
StringBuilder Source = new StringBuilder ("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ ///:._- 1234567890");
ดัชนี int, len = source.length ();
สำหรับ (int i = 0; i <len; ++ i)
-
เมล็ด = (เมล็ด * 211 + 30031) % 65536;
index = (int) math.floor (เมล็ด / 65536 * source.length ());
Mixed.append (source.charat (index));
source.deletecharat (ดัชนี);
-
return mixed.tostring ();
-
สตริงคงที่สาธารณะ getContent (String strurl) {
พยายาม {
url url = url ใหม่ (strurl);
bufferedReader br = new bufferedReader (ใหม่ inputStreamReader (
url.openstream ()));
สตริง s = "";
StringBuffer SB = ใหม่ StringBuffer ("");
ในขณะที่ ((s = br.readline ())! = null) {
SB.Append (S);
-
br.close ();
ส่งคืน sb.toString ();
} catch (Exception e) {
กลับ "ข้อผิดพลาดเปิด URL:" + strurl;
-
-
-