|
|
|
@ -832,321 +832,325 @@ function getErData(jkdata) { |
|
|
|
|
log(e.message); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let pic = MY_PARAMS.pic; |
|
|
|
|
let details1 = ''; |
|
|
|
|
let details2 = ''; |
|
|
|
|
let desc = '...'; |
|
|
|
|
let tabs = []; |
|
|
|
|
let linecodes = []; |
|
|
|
|
let parse_api = ""; |
|
|
|
|
|
|
|
|
|
let pic,details1,details2,desc,arts,conts; |
|
|
|
|
|
|
|
|
|
let actor = ""; |
|
|
|
|
let director = ""; |
|
|
|
|
let area = ""; |
|
|
|
|
let year = ""; |
|
|
|
|
let remarks = ""; |
|
|
|
|
let pubdate = ""; |
|
|
|
|
pic = MY_PARAMS.pic; |
|
|
|
|
desc = '...'; |
|
|
|
|
arts = []; |
|
|
|
|
conts = []; |
|
|
|
|
if(/cms/.test(api_type)&&isxml==1){ |
|
|
|
|
html = html.replace(/<!\[CDATA\[|\]\]>|<!\[CDATA\[|\]\]>/g,''); |
|
|
|
|
arts = xpathArray(html,`//video/dl/dt/@name`); |
|
|
|
|
if(arts.length==0){ |
|
|
|
|
arts = xpathArray(html,`//video/dl/dd/@flag`); |
|
|
|
|
} |
|
|
|
|
conts = xpathArray(html,`//video/dl/dd/text()`); |
|
|
|
|
actor = String(xpath(html,`//video/actor/text()`)).trim().replace(/·/g,'·') || "未知"; |
|
|
|
|
director = String(xpath(html,`//video/director/text()`)).trim().replace(/·/g,'·') || "未知"; |
|
|
|
|
area = String(xpath(html,`//video/area/text()`)).trim(); |
|
|
|
|
year = String(xpath(html,`//video/year/text()`)).trim(); |
|
|
|
|
remarks = String(xpath(html,`//video/note/text()`)).trim() || ""; |
|
|
|
|
pubdate = String(xpath(html,`//video/type/text()`)).trim() || ""; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:xpath(html,`//video/pic/text()`); |
|
|
|
|
desc = String(xpath(html.replace('<p>','').replace('</p>',''),`//video/des/text()`)) || '...'; |
|
|
|
|
}else if (/v1|app|v2|cms/.test(api_type)) { |
|
|
|
|
let json; |
|
|
|
|
if (/cms/.test(api_type)) { |
|
|
|
|
try{ |
|
|
|
|
json = html.list[0]; |
|
|
|
|
}catch(e){ |
|
|
|
|
json = html.data.list[0]; |
|
|
|
|
if(html){ |
|
|
|
|
let arts = []; |
|
|
|
|
let conts = []; |
|
|
|
|
let actor = ""; |
|
|
|
|
let director = ""; |
|
|
|
|
let area = ""; |
|
|
|
|
let year = ""; |
|
|
|
|
let remarks = ""; |
|
|
|
|
let pubdate = ""; |
|
|
|
|
if(/cms/.test(api_type)&&isxml==1){ |
|
|
|
|
html = html.replace(/<!\[CDATA\[|\]\]>|<!\[CDATA\[|\]\]>/g,''); |
|
|
|
|
arts = xpathArray(html,`//video/dl/dt/@name`); |
|
|
|
|
if(arts.length==0){ |
|
|
|
|
arts = xpathArray(html,`//video/dl/dd/@flag`); |
|
|
|
|
} |
|
|
|
|
if(json.vod_play_from&&json.vod_play_url){ |
|
|
|
|
arts = json.vod_play_from.split('$$$'); |
|
|
|
|
conts = json.vod_play_url.split('$$$'); |
|
|
|
|
}else if(html.from&&html.play){ |
|
|
|
|
arts = html.from; |
|
|
|
|
for (let i = 0; i < html.play.length; i++) { |
|
|
|
|
let cont = []; |
|
|
|
|
let plays = html.play[i]; |
|
|
|
|
for (let j = 0; j < plays.length; j++) { |
|
|
|
|
cont.push(plays[j][0]+"$"+plays[j][1]) |
|
|
|
|
conts = xpathArray(html,`//video/dl/dd/text()`); |
|
|
|
|
actor = String(xpath(html,`//video/actor/text()`)).trim().replace(/·/g,'·') || "未知"; |
|
|
|
|
director = String(xpath(html,`//video/director/text()`)).trim().replace(/·/g,'·') || "未知"; |
|
|
|
|
area = String(xpath(html,`//video/area/text()`)).trim(); |
|
|
|
|
year = String(xpath(html,`//video/year/text()`)).trim(); |
|
|
|
|
remarks = String(xpath(html,`//video/note/text()`)).trim() || ""; |
|
|
|
|
pubdate = String(xpath(html,`//video/type/text()`)).trim() || ""; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:xpath(html,`//video/pic/text()`); |
|
|
|
|
desc = String(xpath(html.replace('<p>','').replace('</p>',''),`//video/des/text()`)) || '...'; |
|
|
|
|
}else if (/v1|app|v2|cms/.test(api_type)) { |
|
|
|
|
let json; |
|
|
|
|
if (/cms/.test(api_type)) { |
|
|
|
|
try{ |
|
|
|
|
json = html.list[0]; |
|
|
|
|
}catch(e){ |
|
|
|
|
json = html.data.list[0]; |
|
|
|
|
} |
|
|
|
|
if(json.vod_play_from&&json.vod_play_url){ |
|
|
|
|
arts = json.vod_play_from.split('$$$'); |
|
|
|
|
conts = json.vod_play_url.split('$$$'); |
|
|
|
|
}else if(html.from&&html.play){ |
|
|
|
|
arts = html.from; |
|
|
|
|
for (let i = 0; i < html.play.length; i++) { |
|
|
|
|
let cont = []; |
|
|
|
|
let plays = html.play[i]; |
|
|
|
|
for (let j = 0; j < plays.length; j++) { |
|
|
|
|
cont.push(plays[j][0]+"$"+plays[j][1]) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
if($.type(html.data)=="array"){ |
|
|
|
|
json = html.data[0]; |
|
|
|
|
}else{ |
|
|
|
|
json = html.data; |
|
|
|
|
} |
|
|
|
|
if(json&&json.vod_info){ |
|
|
|
|
json = json.vod_info; |
|
|
|
|
if($.type(html.data)=="array"){ |
|
|
|
|
json = html.data[0]; |
|
|
|
|
}else{ |
|
|
|
|
json = html.data; |
|
|
|
|
} |
|
|
|
|
if(json&&json.vod_info){ |
|
|
|
|
json = json.vod_info; |
|
|
|
|
} |
|
|
|
|
arts = json.vod_play_list || json.vod_url_with_player || []; |
|
|
|
|
conts = arts; |
|
|
|
|
if(arts.length==0&&json.vod_play_from&&json.vod_play_url){ |
|
|
|
|
arts = json.vod_play_from.split('$$$'); |
|
|
|
|
conts = json.vod_play_url.split('$$$'); |
|
|
|
|
api_type = "cms"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
arts = json.vod_play_list || json.vod_url_with_player || []; |
|
|
|
|
actor = json.vod_actor || "未知"; |
|
|
|
|
director = json.vod_director || "未知"; |
|
|
|
|
area = json.vod_area; |
|
|
|
|
year = json.vod_year; |
|
|
|
|
remarks = json.vod_remarks || ""; |
|
|
|
|
pubdate = json.vod_pubdate || json.vod_class || ""; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:json.vod_pic&&json.vod_pic.indexOf('ver.txt')==-1?json.vod_pic:pic; |
|
|
|
|
desc = json.vod_blurb || '...'; |
|
|
|
|
}else if (/iptv/.test(api_type)) { |
|
|
|
|
actor = html.actor.join(",") || "未知"; |
|
|
|
|
director = html.director.join(",") || "未知"; |
|
|
|
|
area = html.area.join(","); |
|
|
|
|
year = html.pubtime; |
|
|
|
|
remarks = html.trunk || ""; |
|
|
|
|
pubdate = html.type.join(",") || ""; |
|
|
|
|
pic = pic || html.img_url; |
|
|
|
|
desc = html.intro || '...'; |
|
|
|
|
arts = html.videolist; |
|
|
|
|
conts = arts; |
|
|
|
|
if(arts.length==0&&json.vod_play_from&&json.vod_play_url){ |
|
|
|
|
arts = json.vod_play_from.split('$$$'); |
|
|
|
|
conts = json.vod_play_url.split('$$$'); |
|
|
|
|
api_type = "cms"; |
|
|
|
|
}else if (/xpath/.test(api_type)) { |
|
|
|
|
let jsondata = MY_PARAMS.data; |
|
|
|
|
try{ |
|
|
|
|
actor = String(xpathArray(html, jsondata.dtActor).join(',')).replace('主演:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取主演dtActor失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
actor = json.vod_actor || "未知"; |
|
|
|
|
director = json.vod_director || "未知"; |
|
|
|
|
area = json.vod_area; |
|
|
|
|
year = json.vod_year; |
|
|
|
|
remarks = json.vod_remarks || ""; |
|
|
|
|
pubdate = json.vod_pubdate || json.vod_class || ""; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:json.vod_pic&&json.vod_pic.indexOf('ver.txt')==-1?json.vod_pic:pic; |
|
|
|
|
desc = json.vod_blurb || '...'; |
|
|
|
|
}else if (/iptv/.test(api_type)) { |
|
|
|
|
actor = html.actor.join(",") || "未知"; |
|
|
|
|
director = html.director.join(",") || "未知"; |
|
|
|
|
area = html.area.join(","); |
|
|
|
|
year = html.pubtime; |
|
|
|
|
remarks = html.trunk || ""; |
|
|
|
|
pubdate = html.type.join(",") || ""; |
|
|
|
|
pic = pic || html.img_url; |
|
|
|
|
desc = html.intro || '...'; |
|
|
|
|
arts = html.videolist; |
|
|
|
|
conts = arts; |
|
|
|
|
}else if (/xpath/.test(api_type)) { |
|
|
|
|
let jsondata = MY_PARAMS.data; |
|
|
|
|
try{ |
|
|
|
|
actor = String(xpathArray(html, jsondata.dtActor).join(',')).replace('主演:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取主演dtActor失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
director = String(xpathArray(html, jsondata.dtDirector).join(',')).replace('导演:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取导演dtDirector失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
area = String(xpath(html, jsondata.dtArea)).replace('地区:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取地区dtArea失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
year = String(xpath(html, jsondata.dtYear)).replace('年份:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取年份dtYear失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
remarks = String(xpathArray(html, jsondata.dtCate).join(',')).replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, "")||"xpath数据存在错误"; |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取类型dtCate失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
pubdate = String(xpathArray(html, jsondata.dtMark).join(',')).replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取备注dtMark失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
pic = pic?pic:xpath(html, jsondata.dtImg); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取图片dtImg失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
desc = String(xpath(html, jsondata.dtDesc)).replace(jsondata.filter?eval(jsondata.filter):"",""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取简价dtDesc失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
arts = xpathArray(html, jsondata.dtFromNode+(jsondata.dtFromName.indexOf('concat(')>-1?'/text()':jsondata.dtFromName)); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取线路失改>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
for (let i = 1; i < arts.length+1; i++) { |
|
|
|
|
if(arts[i-1].indexOf("在线视频")>-1){arts[i-1] = '播放源'+i;} |
|
|
|
|
let contname = xpathArray(html, jsondata.dtUrlNode+'['+i+']'+jsondata.dtUrlSubNode+jsondata.dtUrlName); |
|
|
|
|
let conturl = xpathArray(html, jsondata.dtUrlNode+'['+i+']'+jsondata.dtUrlSubNode+(jsondata.dtUrlId=="@href"?'/'+jsondata.dtUrlId:jsondata.dtUrlId)); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < contname.length; j++) { |
|
|
|
|
let urlid = jsondata.dtUrlIdR; |
|
|
|
|
let playUrl; |
|
|
|
|
if(urlid){ |
|
|
|
|
let urlidl = urlid.split('(\\S+)')[0]; |
|
|
|
|
let urlidr = urlid.split('(\\S+)')[1]; |
|
|
|
|
playUrl = conturl[j].replace(urlidl,'').replace(urlidr,''); |
|
|
|
|
}else{ |
|
|
|
|
playUrl = conturl[j]; |
|
|
|
|
} |
|
|
|
|
cont.push(contname[j]+"$"+jsondata.playUrl.replace('{playUrl}',playUrl)) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
try{ |
|
|
|
|
director = String(xpathArray(html, jsondata.dtDirector).join(',')).replace('导演:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取导演dtDirector失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取选集列表失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
}else if (/biubiu/.test(api_type)) { |
|
|
|
|
let getsm = ""; |
|
|
|
|
try{ |
|
|
|
|
getsm = "获取传递数据"; |
|
|
|
|
var jsondata = MY_PARAMS.data; |
|
|
|
|
getsm = "获取播放地址数组bfjiequshuzuqian"; |
|
|
|
|
let bflist = html.split(jsondata.bfjiequshuzuqian.replace(/\\/g,"")); |
|
|
|
|
bflist.splice(0,1); |
|
|
|
|
for (let i = 0; i < bflist.length; i++) { |
|
|
|
|
arts[i] = '播放源'+(i+1); |
|
|
|
|
bflist[i] = bflist[i].split(jsondata.bfjiequshuzuhou.replace(/\\/g,""))[0]; |
|
|
|
|
let bfline = pdfa(bflist[i],"body&&a"); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < bfline.length; j++) { |
|
|
|
|
let contname = pdfh(bfline[j],"a&&Text"); |
|
|
|
|
let conturl = pd(bfline[j],"a&&href"); |
|
|
|
|
cont.push(contname+"$"+conturl) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
try{ |
|
|
|
|
area = String(xpath(html, jsondata.dtArea)).replace('地区:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取地区dtArea失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
getsm = "获取备注zhuangtaiqian"; |
|
|
|
|
remarks = pdfh(html.split(jsondata.zhuangtaiqian.replace(/\\/g,""))[1].split(jsondata.zhuangtaihou.replace(/\\/g,""))[0],"Text").split('/')[0]||"biubiu数据存在错误"; |
|
|
|
|
getsm = "获取主演zhuyanqian"; |
|
|
|
|
actor = pdfh(html.split(jsondata.zhuyanqian.replace(/\\/g,""))[1].split(jsondata.zhuyanhou.replace(/\\/g,""))[0],"Text"); |
|
|
|
|
getsm = "获取导演daoyanqian"; |
|
|
|
|
director = pdfh(html.split(jsondata.daoyanqian.replace(/\\/g,""))[1].split(jsondata.daoyanhou.replace(/\\/g,""))[0],"Text"); |
|
|
|
|
getsm = "获取更新zhuangtaiqian"; |
|
|
|
|
pubdate = pdfh(html.split(jsondata.zhuangtaiqian.replace(/\\/g,""))[1].split(jsondata.zhuangtaihou.replace(/\\/g,""))[0],"Text").split('/')[1]||""; |
|
|
|
|
getsm = "获取剧情简介juqingqian"; |
|
|
|
|
desc = pdfh(html.split(jsondata.juqingqian.replace(/\\/g,""))[1].split(jsondata.juqinghou.replace(/\\/g,""))[0],"Text") || '...'; |
|
|
|
|
}catch(e){ |
|
|
|
|
log(getsm+'失败>'+e.message) |
|
|
|
|
}
|
|
|
|
|
}else if (/XBPQ/.test(api_type)) { |
|
|
|
|
let getsm = ""; |
|
|
|
|
try{ |
|
|
|
|
getsm = "获取传递数据"; |
|
|
|
|
var jsondata = MY_PARAMS.data; |
|
|
|
|
let jkfile = fetchCache(jsondata.ext,72); |
|
|
|
|
if(jkfile){ |
|
|
|
|
eval("var jkdata = " + jkfile); |
|
|
|
|
try{ |
|
|
|
|
year = String(xpath(html, jsondata.dtYear)).replace('年份:','').replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取年份dtYear失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
getsm = "获取线路"; |
|
|
|
|
let arthtml = html; |
|
|
|
|
if(jkdata["线路二次截取"]){ |
|
|
|
|
arthtml = arthtml.split(jkdata["线路二次截取"].split('&&')[0])[1].split(jkdata["线路二次截取"].split('&&')[1])[0]; |
|
|
|
|
try{ |
|
|
|
|
remarks = String(xpathArray(html, jsondata.dtCate).join(',')).replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, "")||"xpath数据存在错误"; |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取类型dtCate失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
let artlist = arthtml.match(new RegExp(jkdata["线路数组"].replace('&&','((?:.|[\r\n])*?)'), 'g')); |
|
|
|
|
for (let i = 0; i < artlist.length; i++) { |
|
|
|
|
let arttitle = artlist[i].split(jkdata["线路数组"].split('&&')[0])[1].split(jkdata["线路数组"].split('&&')[1])[0].split(jkdata["线路标题"].split('&&')[0])[1].split(jkdata["线路标题"].split('&&')[1])[0]; |
|
|
|
|
arts[i] = arttitle.replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
try{ |
|
|
|
|
pubdate = String(xpathArray(html, jsondata.dtMark).join(',')).replace(jsondata.filter?eval(jsondata.filter):"","").replace(/[\r\ \n]/g, ""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取备注dtMark失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
pic = pic?pic:xpath(html, jsondata.dtImg); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取图片dtImg失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
let conthtml = html; |
|
|
|
|
if(jkdata["播放二次截取"]){ |
|
|
|
|
conthtml = conthtml.split(jkdata["播放二次截取"].split('&&')[0])[1].split(jkdata["播放二次截取"].split('&&')[1])[0]; |
|
|
|
|
try{ |
|
|
|
|
desc = String(xpath(html, jsondata.dtDesc)).replace(jsondata.filter?eval(jsondata.filter):"",""); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取简价dtDesc失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
let contlist = conthtml.match(new RegExp(jkdata["播放数组"].replace('&&','((?:.|[\r\n])*?)'), 'g')); |
|
|
|
|
for (let i = 0; i < contlist.length; i++) { |
|
|
|
|
let bfline = jkdata["播放列表"]?contlist[i].match(new RegExp(jkdata["播放列表"].replace('&&','((?:.|[\r\n])*?)'), 'g')):pdfa(contlist[i],"body&&a"); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < bfline.length; j++) { |
|
|
|
|
let contname = jkdata["播放标题"]?bfline[j].split(jkdata["播放标题"].split('&&')[0])[1].split(jkdata["播放标题"].split('&&')[1])[0]:pdfh(bfline[j],"a&&Text"); |
|
|
|
|
let conturl = jkdata["播放链接"]?bfline[j].split(jkdata["播放链接"].split('&&')[0])[1].split(jkdata["播放链接"].split('&&')[1])[0]:pd(bfline[j],"a&&href"); |
|
|
|
|
cont.push(contname+"$"+conturl) |
|
|
|
|
try{ |
|
|
|
|
arts = xpathArray(html, jsondata.dtFromNode+(jsondata.dtFromName.indexOf('concat(')>-1?'/text()':jsondata.dtFromName)); |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取线路失改>'+e.message); |
|
|
|
|
} |
|
|
|
|
try{ |
|
|
|
|
for (let i = 1; i < arts.length+1; i++) { |
|
|
|
|
if(arts[i-1].indexOf("在线视频")>-1){arts[i-1] = '播放源'+i;} |
|
|
|
|
let contname = xpathArray(html, jsondata.dtUrlNode+'['+i+']'+jsondata.dtUrlSubNode+jsondata.dtUrlName); |
|
|
|
|
let conturl = xpathArray(html, jsondata.dtUrlNode+'['+i+']'+jsondata.dtUrlSubNode+(jsondata.dtUrlId=="@href"?'/'+jsondata.dtUrlId:jsondata.dtUrlId)); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < contname.length; j++) { |
|
|
|
|
let urlid = jsondata.dtUrlIdR; |
|
|
|
|
let playUrl; |
|
|
|
|
if(urlid){ |
|
|
|
|
let urlidl = urlid.split('(\\S+)')[0]; |
|
|
|
|
let urlidr = urlid.split('(\\S+)')[1]; |
|
|
|
|
playUrl = conturl[j].replace(urlidl,'').replace(urlidr,''); |
|
|
|
|
}else{ |
|
|
|
|
playUrl = conturl[j]; |
|
|
|
|
} |
|
|
|
|
cont.push(contname[j]+"$"+jsondata.playUrl.replace('{playUrl}',playUrl)) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
}catch(e){ |
|
|
|
|
log('xpath获取选集列表失败>'+e.message); |
|
|
|
|
} |
|
|
|
|
getsm = "获取副标"; |
|
|
|
|
remarks = jkdata["影片类型"]?html.split(jkdata["影片类型"].split('&&')[0])[1].split(jkdata["影片类型"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):""; |
|
|
|
|
getsm = "获取主演"; |
|
|
|
|
actor = html.split(jkdata["主演"].split('&&')[0])[1].split(jkdata["主演"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
getsm = "获取导演"; |
|
|
|
|
director = html.split(jkdata["导演"].split('&&')[0])[1].split(jkdata["导演"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
pubdate = (jkdata["影片年代"]?html.split(jkdata["影片年代"].split('&&')[0])[1].split(jkdata["影片年代"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):"")+(jkdata["影片地区"]?" "+html.split(jkdata["影片地区"].split('&&')[0])[1].split(jkdata["影片地区"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):""); |
|
|
|
|
getsm = "获取剧情简介"; |
|
|
|
|
desc = html.split(jkdata["简介"].split('&&')[0])[1].split(jkdata["简介"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,'') || '...'; |
|
|
|
|
}catch(e){ |
|
|
|
|
log(getsm+'失败>'+e.message) |
|
|
|
|
}
|
|
|
|
|
}else{ |
|
|
|
|
//自定义接口/web自动匹配
|
|
|
|
|
require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcAutoTmpl.js'); |
|
|
|
|
let data = autoerji(MY_URL, html); |
|
|
|
|
details1 = data.details1||'自动匹配失败'; |
|
|
|
|
details2 = data.details2||''; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:data.pic; |
|
|
|
|
desc = data.desc||''; |
|
|
|
|
arts = data.arts||[]; |
|
|
|
|
conts = data.conts||[]; |
|
|
|
|
} |
|
|
|
|
if(/xpath|biubiu|XBPQ/.test(api_type)&&html&&(arts.length==0||conts.length==0)&&getMyVar('debug','0')=="0"&&html.indexOf(MY_PARAMS.title)>-1){ |
|
|
|
|
log('开启模板自动匹配、AI识片,获取播放选集'); |
|
|
|
|
require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcAutoTmpl.js'); |
|
|
|
|
let data = autoerji(MY_URL, html); |
|
|
|
|
remarks = remarks||"获取数据存在错误"; |
|
|
|
|
pubdate = data.details2||""; |
|
|
|
|
arts = data.arts; |
|
|
|
|
conts = data.conts; |
|
|
|
|
pic = pic||data.pic; |
|
|
|
|
} |
|
|
|
|
setPagePicUrl(pic); |
|
|
|
|
actor = actor || "未知"; |
|
|
|
|
director = director || "未知"; |
|
|
|
|
let dqnf = ""; |
|
|
|
|
if(area){ |
|
|
|
|
dqnf = '\n地区:' + area + (year?' 年代:' + year:'') |
|
|
|
|
}else{ |
|
|
|
|
dqnf = year?'\n年代:' + year:'' |
|
|
|
|
} |
|
|
|
|
details1 = details1?details1:'导演:' + director.substring(0, director.length<10?director.length:10) + '\n主演:' + actor.substring(0, actor.length<10||dqnf==""?actor.length:10) + dqnf; |
|
|
|
|
details2 = details2?details2:remarks.trim() + '\n' + pubdate.trim(); |
|
|
|
|
details1 = details1.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
details2 = details2.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
desc = desc.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
}else if (/biubiu/.test(api_type)) { |
|
|
|
|
let getsm = ""; |
|
|
|
|
try{ |
|
|
|
|
getsm = "获取传递数据"; |
|
|
|
|
var jsondata = MY_PARAMS.data; |
|
|
|
|
getsm = "获取播放地址数组bfjiequshuzuqian"; |
|
|
|
|
let bflist = html.split(jsondata.bfjiequshuzuqian.replace(/\\/g,"")); |
|
|
|
|
bflist.splice(0,1); |
|
|
|
|
for (let i = 0; i < bflist.length; i++) { |
|
|
|
|
arts[i] = '播放源'+(i+1); |
|
|
|
|
bflist[i] = bflist[i].split(jsondata.bfjiequshuzuhou.replace(/\\/g,""))[0]; |
|
|
|
|
let bfline = pdfa(bflist[i],"body&&a"); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < bfline.length; j++) { |
|
|
|
|
let contname = pdfh(bfline[j],"a&&Text"); |
|
|
|
|
let conturl = pd(bfline[j],"a&&href"); |
|
|
|
|
cont.push(contname+"$"+conturl) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
} |
|
|
|
|
getsm = "获取备注zhuangtaiqian"; |
|
|
|
|
remarks = pdfh(html.split(jsondata.zhuangtaiqian.replace(/\\/g,""))[1].split(jsondata.zhuangtaihou.replace(/\\/g,""))[0],"Text").split('/')[0]||"biubiu数据存在错误"; |
|
|
|
|
getsm = "获取主演zhuyanqian"; |
|
|
|
|
actor = pdfh(html.split(jsondata.zhuyanqian.replace(/\\/g,""))[1].split(jsondata.zhuyanhou.replace(/\\/g,""))[0],"Text"); |
|
|
|
|
getsm = "获取导演daoyanqian"; |
|
|
|
|
director = pdfh(html.split(jsondata.daoyanqian.replace(/\\/g,""))[1].split(jsondata.daoyanhou.replace(/\\/g,""))[0],"Text"); |
|
|
|
|
getsm = "获取更新zhuangtaiqian"; |
|
|
|
|
pubdate = pdfh(html.split(jsondata.zhuangtaiqian.replace(/\\/g,""))[1].split(jsondata.zhuangtaihou.replace(/\\/g,""))[0],"Text").split('/')[1]||""; |
|
|
|
|
getsm = "获取剧情简介juqingqian"; |
|
|
|
|
desc = pdfh(html.split(jsondata.juqingqian.replace(/\\/g,""))[1].split(jsondata.juqinghou.replace(/\\/g,""))[0],"Text") || '...'; |
|
|
|
|
}catch(e){ |
|
|
|
|
log(getsm+'失败>'+e.message) |
|
|
|
|
}
|
|
|
|
|
}else if (/XBPQ/.test(api_type)) { |
|
|
|
|
let getsm = ""; |
|
|
|
|
try{ |
|
|
|
|
getsm = "获取传递数据"; |
|
|
|
|
var jsondata = MY_PARAMS.data; |
|
|
|
|
let jkfile = fetchCache(jsondata.ext,72); |
|
|
|
|
if(jkfile){ |
|
|
|
|
eval("var jkdata = " + jkfile); |
|
|
|
|
} |
|
|
|
|
getsm = "获取线路"; |
|
|
|
|
let arthtml = html; |
|
|
|
|
if(jkdata["线路二次截取"]){ |
|
|
|
|
arthtml = arthtml.split(jkdata["线路二次截取"].split('&&')[0])[1].split(jkdata["线路二次截取"].split('&&')[1])[0]; |
|
|
|
|
} |
|
|
|
|
let artlist = arthtml.match(new RegExp(jkdata["线路数组"].replace('&&','((?:.|[\r\n])*?)'), 'g')); |
|
|
|
|
for (let i = 0; i < artlist.length; i++) { |
|
|
|
|
let arttitle = artlist[i].split(jkdata["线路数组"].split('&&')[0])[1].split(jkdata["线路数组"].split('&&')[1])[0].split(jkdata["线路标题"].split('&&')[0])[1].split(jkdata["线路标题"].split('&&')[1])[0]; |
|
|
|
|
arts[i] = arttitle.replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
} |
|
|
|
|
let conthtml = html; |
|
|
|
|
if(jkdata["播放二次截取"]){ |
|
|
|
|
conthtml = conthtml.split(jkdata["播放二次截取"].split('&&')[0])[1].split(jkdata["播放二次截取"].split('&&')[1])[0]; |
|
|
|
|
} |
|
|
|
|
let contlist = conthtml.match(new RegExp(jkdata["播放数组"].replace('&&','((?:.|[\r\n])*?)'), 'g')); |
|
|
|
|
for (let i = 0; i < contlist.length; i++) { |
|
|
|
|
let bfline = jkdata["播放列表"]?contlist[i].match(new RegExp(jkdata["播放列表"].replace('&&','((?:.|[\r\n])*?)'), 'g')):pdfa(contlist[i],"body&&a"); |
|
|
|
|
let cont = []; |
|
|
|
|
for (let j = 0; j < bfline.length; j++) { |
|
|
|
|
let contname = jkdata["播放标题"]?bfline[j].split(jkdata["播放标题"].split('&&')[0])[1].split(jkdata["播放标题"].split('&&')[1])[0]:pdfh(bfline[j],"a&&Text"); |
|
|
|
|
let conturl = jkdata["播放链接"]?bfline[j].split(jkdata["播放链接"].split('&&')[0])[1].split(jkdata["播放链接"].split('&&')[1])[0]:pd(bfline[j],"a&&href"); |
|
|
|
|
cont.push(contname+"$"+conturl) |
|
|
|
|
} |
|
|
|
|
conts.push(cont.join("#")) |
|
|
|
|
} |
|
|
|
|
getsm = "获取副标"; |
|
|
|
|
remarks = jkdata["影片类型"]?html.split(jkdata["影片类型"].split('&&')[0])[1].split(jkdata["影片类型"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):""; |
|
|
|
|
getsm = "获取主演"; |
|
|
|
|
actor = html.split(jkdata["主演"].split('&&')[0])[1].split(jkdata["主演"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
getsm = "获取导演"; |
|
|
|
|
director = html.split(jkdata["导演"].split('&&')[0])[1].split(jkdata["导演"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''); |
|
|
|
|
pubdate = (jkdata["影片年代"]?html.split(jkdata["影片年代"].split('&&')[0])[1].split(jkdata["影片年代"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):"")+(jkdata["影片地区"]?" "+html.split(jkdata["影片地区"].split('&&')[0])[1].split(jkdata["影片地区"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,''):""); |
|
|
|
|
getsm = "获取剧情简介"; |
|
|
|
|
desc = html.split(jkdata["简介"].split('&&')[0])[1].split(jkdata["简介"].split('&&')[1])[0].replace(/<\/?.+?\/?>/g,'') || '...'; |
|
|
|
|
}catch(e){ |
|
|
|
|
log(getsm+'失败>'+e.message) |
|
|
|
|
}
|
|
|
|
|
}else{ |
|
|
|
|
//自定义接口/web自动匹配
|
|
|
|
|
require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcAutoTmpl.js'); |
|
|
|
|
let data = autoerji(MY_URL, html); |
|
|
|
|
details1 = data.details1||'自动匹配失败'; |
|
|
|
|
details2 = data.details2||''; |
|
|
|
|
pic = pic.indexOf('picloading.gif')==-1?pic:data.pic; |
|
|
|
|
desc = data.desc||''; |
|
|
|
|
arts = data.arts||[]; |
|
|
|
|
conts = data.conts||[]; |
|
|
|
|
} |
|
|
|
|
if(/xpath|biubiu|XBPQ/.test(api_type)&&html&&(arts.length==0||conts.length==0)&&getMyVar('debug','0')=="0"&&html.indexOf(MY_PARAMS.title)>-1){ |
|
|
|
|
log('开启模板自动匹配、AI识片,获取播放选集'); |
|
|
|
|
require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcAutoTmpl.js'); |
|
|
|
|
let data = autoerji(MY_URL, html); |
|
|
|
|
remarks = remarks||"获取数据存在错误"; |
|
|
|
|
pubdate = data.details2||""; |
|
|
|
|
arts = data.arts; |
|
|
|
|
conts = data.conts; |
|
|
|
|
pic = pic||data.pic; |
|
|
|
|
} |
|
|
|
|
setPagePicUrl(pic); |
|
|
|
|
actor = actor || "未知"; |
|
|
|
|
director = director || "未知"; |
|
|
|
|
let dqnf = ""; |
|
|
|
|
if(area){ |
|
|
|
|
dqnf = '\n地区:' + area + (year?' 年代:' + year:'') |
|
|
|
|
}else{ |
|
|
|
|
dqnf = year?'\n年代:' + year:'' |
|
|
|
|
} |
|
|
|
|
details1 = details1?details1:'导演:' + director.substring(0, director.length<10?director.length:10) + '\n主演:' + actor.substring(0, actor.length<10||dqnf==""?actor.length:10) + dqnf; |
|
|
|
|
details2 = details2?details2:remarks.trim() + '\n' + pubdate.trim(); |
|
|
|
|
details1 = details1.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
details2 = details2.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
desc = desc.replace(/“/g,'“').replace(/”/g,'”').replace(/·/g,'·').replace(/…/g,'…').replace(/ |♥/g,' '); |
|
|
|
|
|
|
|
|
|
let parse_api = ""; |
|
|
|
|
let tabs = []; |
|
|
|
|
let linecodes = []; |
|
|
|
|
for (var i in arts) { |
|
|
|
|
let linecode; |
|
|
|
|
if (/v1|app|v2/.test(api_type)) { |
|
|
|
|
let line = arts[i].name || arts[i].player_info.show; |
|
|
|
|
tabs.push(line); |
|
|
|
|
linecode = arts[i].code || arts[i].player_info.from; |
|
|
|
|
for (var i in arts) { |
|
|
|
|
let linecode; |
|
|
|
|
if (/v1|app|v2/.test(api_type)) { |
|
|
|
|
let line = arts[i].name || arts[i].player_info.show; |
|
|
|
|
tabs.push(line); |
|
|
|
|
linecode = arts[i].code || arts[i].player_info.from; |
|
|
|
|
|
|
|
|
|
if (getMyVar(MY_URL, '0') == i) { |
|
|
|
|
try { |
|
|
|
|
if(api_type=="v2"){ |
|
|
|
|
var parse1 = arts[i].parse_api; |
|
|
|
|
var parse2 = arts[i].extra_parse_api; |
|
|
|
|
}else{ |
|
|
|
|
var parse1 = arts[i].player_info.parse; |
|
|
|
|
var parse2 = arts[i].player_info.parse2; |
|
|
|
|
if (getMyVar(MY_URL, '0') == i) { |
|
|
|
|
try { |
|
|
|
|
if(api_type=="v2"){ |
|
|
|
|
var parse1 = arts[i].parse_api; |
|
|
|
|
var parse2 = arts[i].extra_parse_api; |
|
|
|
|
}else{ |
|
|
|
|
var parse1 = arts[i].player_info.parse; |
|
|
|
|
var parse2 = arts[i].player_info.parse2; |
|
|
|
|
} |
|
|
|
|
if (parse2.indexOf('//') == -1) { |
|
|
|
|
parse_api = parse1; |
|
|
|
|
} else if (parse1.indexOf('//') == -1) { |
|
|
|
|
parse_api = parse2; |
|
|
|
|
} else { |
|
|
|
|
parse_api = parse2 + ',' + parse1; |
|
|
|
|
} |
|
|
|
|
} catch (e) { |
|
|
|
|
parse_api = arts[i].parse_api; |
|
|
|
|
} |
|
|
|
|
if (parse2.indexOf('//') == -1) { |
|
|
|
|
parse_api = parse1; |
|
|
|
|
} else if (parse1.indexOf('//') == -1) { |
|
|
|
|
parse_api = parse2; |
|
|
|
|
} else { |
|
|
|
|
parse_api = parse2 + ',' + parse1; |
|
|
|
|
if (parse_api != "" && parse_api != undefined) { |
|
|
|
|
parse_api = parse_api.replace(/\.\./g, '.').replace(/。\./g, '.'); |
|
|
|
|
} |
|
|
|
|
} catch (e) { |
|
|
|
|
parse_api = arts[i].parse_api; |
|
|
|
|
} |
|
|
|
|
if (parse_api != "" && parse_api != undefined) { |
|
|
|
|
parse_api = parse_api.replace(/\.\./g, '.').replace(/。\./g, '.'); |
|
|
|
|
} |
|
|
|
|
}else if (/iptv/.test(api_type)) { |
|
|
|
|
let line = i; |
|
|
|
|
tabs.push(line); |
|
|
|
|
linecode = i; |
|
|
|
|
}else if (/cms|xpath|biubiu|XBPQ/.test(api_type)) { |
|
|
|
|
tabs.push(arts[i].replace(/[\r\ \n\t]/g, "")); |
|
|
|
|
linecode = arts[i]; |
|
|
|
|
} |
|
|
|
|
}else if (/iptv/.test(api_type)) { |
|
|
|
|
let line = i; |
|
|
|
|
tabs.push(line); |
|
|
|
|
linecode = i; |
|
|
|
|
}else if (/cms|xpath|biubiu|XBPQ/.test(api_type)) { |
|
|
|
|
tabs.push(arts[i].replace(/[\r\ \n\t]/g, "")); |
|
|
|
|
linecode = arts[i]; |
|
|
|
|
linecodes.push(linecode); |
|
|
|
|
} |
|
|
|
|
linecodes.push(linecode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let lists = []; |
|
|
|
|
for (var i in conts) { |
|
|
|
|
if (/v1|app|v2/.test(api_type)) { |
|
|
|
|