關于樂視網(wǎng)視頻真實地址解析,以節(jié)目的第一集為例,于下。
http://www.letv.com/ptv/pplay/74497/1.html
//=======================================================================
解析的幾個步驟:
?。薄⒆x取播放頁面的代碼,獲取 vid=1612388 值
http://www.letv.com/ptv/pplay/74497/1.html
?。病⑵春铣龅谝淮涡畔⑽募刂?br />
http://www.letv.com/v_xml/1612388.xml
?。?、從以上文件中讀取鏈接(節(jié)點 mmsJson 中的 url 值)
http://220.181.117.5/ng?s=3& ... 77.0.flv&br=301
?。?、從上面的地址讀取信息文件,從中讀取 location 的值,舍去所有外掛參數(shù),于下
http://124.232.149.10/17/12/15/13383307831805077.0.letv
?。怠U展名改為 flv ,即為真實鏈接地址
http://124.232.149.10/17/12/15/13383307831805077.0.flv
//=======================================================================
F8解析腳本于下,以資拍磚。
解析過程由節(jié)目頁面地址開始,至所有單集數(shù)據(jù)存入下面的數(shù)組,完成。
vlist = []; 鏈 接
ttime = []; 時 間
nlist = []; 節(jié)目名
tlist = []; 長寬比
制作播放器時,可按各自需要和習慣修改。
//=======================================================================
stop ();
//通知 Flash Player使用 傳統(tǒng)代碼頁來解釋外部文本
//System.useCodepage = true;
Stage.scaleMode = "noScale";
if (scale) {
Stage.scaleMode = "showAll";
}
Stage.showMenu = false;
this._lockroot = true;
//======================== 以上 播放器 普通設置================
var nlist = [];//曲名
var vlist = [];//鏈接
var ttime = [];//時長
var tlist = [];//長寬比
var Str_xml = [];//臨時數(shù)組
var j = 0;
//=========================================================
var urlxml = ["http://www.letv.com/v_xml/", ".xml"];
//================= 以上 信息文件鏈接相關 備用==================
//構造函數(shù);創(chuàng)建 LoadVars 對象。然后可使用該 LoadVars 對象的方法來發(fā)送和加載數(shù)據(jù)
//當lala被實例化并顯示在時間軸上時將觸發(fā)
//=========================================================
function make6 () {
j += 1;
make ();
}
//======================== 以上,循環(huán),處理下一個頁面地址 =======
function make5 (pram5) {
var json:JSON = new JSON ();
var jsonobj:Object = json.parse (pram5);
vlist[j] = [[]];
vlist[j][0][0] = vlist[j][0][0] = jsonobj.location.split ('.letv?')[0] + '.flv';
make6 ();
}
//====以上處理第二次的 信息 文件,最終獲得單集的 flv 視頻文件的鏈接,存入數(shù)組備用 ==
//============★ 此例按單集多文件考慮,改制時可按實際要求 ★======= 完成解析 ======
function make4 (pram4) {
lala = new LoadVars ();
lala.onData = function (rw) {
make5 (rw.toString ());
};
lala.load (pram4);
}
//==============第二次 加載 信息 文件========================
function make3 (pram3) {
pram3_1 = pram3.split ('"').join ('"');
var json:JSON = new JSON ();
var jsonobj:Object = json.parse (pram3_1);
ttime[j] = [[]];
ttime[j][0][0] = jsonobj.bean.video[0].duration;
xml_2 = jsonobj.bean.video[0].url.split ('&').join ('&');
make4 (xml_2);
//vlist[j] = jsonobj.bean.video[0].url.split('/ng?s=3&df=').join('/').split('&')[0];
//make6 ();
//== 如果用注釋中的步驟得到的鏈接無時效限制,則可簡化至此步驟完成。待研 =====
}
//==============以上處理單集 xml 第二次獲取 url 值 和時間值 =================
function make2_2 (pram2_2) {
var wh = pram2_2.split(',h:')
var WH = wh[0]/wh[1];
tlist[j] = WH > 2.2 ? 7 : WH > 2 ? 6 : WH > 1.7 ? 1 : 2;
}
//============== 以上處理視窗的長寬比 ========================
function make2 (pram2) {
var xml_1 = new XML ();
xml_1.ignoreWhite = true;
xml_1.load (urlxml[0] + pram2 + urlxml[1]);
xml_1.onLoad = function (success) {
if (success) {
for (i = 0; i < xml_1.firstChild.childNodes.length; ++i) {
if (xml_1.firstChild.childNodes.nodeName == "tal") {
nlist[j] = xml_1.firstChild.childNodes.firstChild;
}
if (xml_1.firstChild.childNodes.nodeName == "mmsJson") {
Str_xml[j] = String (xml_1.firstChild.childNodes.firstChild);
}
}
make3 (Str_xml[j]);
//trace(Str_xml[j]);
}
};
}
//========= 以上第一次加載單集信息文件,為 xml 格式。獲取曲名 =============
function make () {
if (j < Page.length) {
load_js = (j + 1) + " / " + Page.length;
jmurl = Page[j];
lala = new LoadVars ();
lala.onData = function (rw) {
N1 = rw.split ('vid:')[1].split (',')[0];
N2 = rw.split ('{w:')[1].split (',wmode')[0];
if (N1) {
make2 (N1);
quming = pgurl[3];
}
else {
quming = "鏈接有誤,請檢查。";
}
if (N2) {
make2_2(N2);
}
};
lala.load (Page[j]);
}
else {
play ();
}
}
make ();
//============== 以上加載頁面,獲取 vid 值 長寬數(shù)據(jù) ===================
以上內容寫在第二幀
以下內容寫在第一幀
//==============================================
var Page = [];
Page[0] = "http://www.letv.com/ptv/pplay/74497/1.html";
Page[1] = "http://www.letv.com/ptv/pplay/74497/1.html";
………………
Page[n] = "http://www.letv.com/ptv/pplay/74497/1.html";
//==============================================
★★以下內容可在輸出面板顯示以上解析后得到的數(shù)組。以作參考。
//==============================================
//======= 將輸出的數(shù)組寫在播放器內或xml信息文件中,可不必內嵌解析的內容 ==========
stop ();
for (i = 0; i < vlist.length; ++i) {
var Str:String = "";
for (j = 0; j < vlist[j][0].length; ++j) {
Str += '"' + vlist[0][0] + '",';
}
trace ('vlist[' + i + '] = [[' + Str.slice (0, Str.length - 1) + ']];');
}
trace('//================================');
for (i = 0; i < ttime.length; ++i) {
trace ('ttime[' + i + '] = [[' + ttime[0] + ']];');
}
trace('//================================');
for (i = 0; i < nlist.length; ++i) {
trace ('nlist[' + i + '] = "' + nlist + '";');
}
也是之前保留的一份材料,覺得好的加點ck幣,謝謝 |