关于乐视网视频真实地址解析,以节目的第一集为例,于下。
http://www.letv.com/ptv/pplay/74497/1.html
//=======================================================================
解析的几个步骤:
1、读取播放页面的代码,获取 vid=1612388 值
http://www.letv.com/ptv/pplay/74497/1.html
2、拼合出第一次信息文件地址
http://www.letv.com/v_xml/1612388.xml
3、从以上文件中读取链接(节点 mmsJson 中的 url 值)
http://220.181.117.5/ng?s=3& ... 77.0.flv&br=301
4、从上面的地址读取信息文件,从中读取 location 的值,舍去所有外挂参数,于下
http://124.232.149.10/17/12/15/13383307831805077.0.letv
5、将扩展名改为 flv ,即为真实链接地址
http://124.232.149.10/17/12/15/13383307831805077.0.flv
//=======================================================================
F8解析脚本于下,以资拍砖。
解析过程由节目页面地址开始,至所有单集数据存入下面的数组,完成。
vlist = []; 链 接
ttime = []; 时 间
nlist = []; 节目名
tlist = []; 长宽比
制作播放器时,可按各自需要和习惯修改。
//=======================================================================
stop ();
//通知 Flash Player使用 传统代码页来解释外部文本
//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 = [];//临时数组
var j = 0;
//=========================================================
var urlxml = ["http://www.letv.com/v_xml/", ".xml"];
//================= 以上 信息文件链接相关 备用==================
//构造函数;创建 LoadVars 对象。然后可使用该 LoadVars 对象的方法来发送和加载数据
//当lala被实例化并显示在时间轴上时将触发
//=========================================================
function make6 () {
j += 1;
make ();
}
//======================== 以上,循环,处理下一个页面地址 =======
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 视频文件的链接,存入数组备用 ==
//============★ 此例按单集多文件考虑,改制时可按实际要求 ★======= 完成解析 ======
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 值 长宽数据 ===================
以上内容写在第二帧
以下内容写在第一帧
//==============================================
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";
//==============================================
★★以下内容可在输出面板显示以上解析后得到的数组。以作参考。
//==============================================
//======= 将输出的数组写在播放器内或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币,谢谢 |