更新 'SrcParseS.js'

pull/1/head
src48597962 2 years ago
parent 2d86b5104e
commit 6ea327ef5c
  1. 141
      SrcParseS.js

@ -49,11 +49,10 @@ var SrcParseS = {
}
return header;
},
嗅探: function (vipUrl, excludeurl ,testurl) {
嗅探: function (vipUrl, excludeurl) {
showLoading('√视频解析中,请稍候...');
excludeurl = excludeurl||[];
var testurl = testurl||this.testvideourl;
return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl,vipUrl,excludeurl,testurl) => {
return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl,vipUrl,excludeurl) => {
if (window.c == null) {
if (typeof (request) == 'undefined' || !request) {
eval(fba.getInternalJs());
@ -77,7 +76,12 @@ var SrcParseS = {
var exclude = /\/404\.m3u8|\/xiajia\.mp4|\/余额不足\.m3u8|\.css|\.js|\.gif|\.png|\.jpeg|api\.m3u88\.com|html,http|\.php\?v=h|\?url=h|\&url=h|%253Furl%253Dh/;//设置排除地址
var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4|\.ts\?|TG@UosVod/;//设置符合条件的正确地址
for (var i in urls) {
if (!exclude.test(urls[i]) && contain.test(urls[i]) && excludeurl.indexOf(urls[i])==-1 && testurl(urls[i],false,false,true)==1) {
var tc = 1;
if(/cdn\.oss-cn-m3u8\.tv-nanjing-chengdu\.myqcloud\.com\.zh188.net/.test(urls[i])){
var html = request(urls[i],{timeout:1500})||"";
if(html.indexOf("token过期了")>-1){tc = 0;}
}
if (!exclude.test(urls[i]) && contain.test(urls[i]) && excludeurl.indexOf(urls[i])==-1 && tc==1) {
//fba.log("嗅探成功>"+urls[i]);
//return urls[i]+'#isVideo=true#';
if(fy_bridge_app.getHeaderUrl&&vipUrl.indexOf("=http")==-1)
@ -97,7 +101,7 @@ var SrcParseS = {
}
}
}
}, this.formatUrl, vipUrl, excludeurl, testurl)
}, this.formatUrl, vipUrl, excludeurl)
},
智能: function (vipUrl, input) {
showLoading('√智能解析中,请稍候');
@ -354,111 +358,7 @@ var SrcParseS = {
}
let libsjxhtml = "hiker://files/libs/" + md5(jxhtml) + ".html";
writeFile(libsjxhtml, libsjxjs);
return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl, excludeurl, this.testvideourl);
},
APP: function (vipUrl) {
var appParses = getMyVar('parse_api', '');
var Uparselist = [];
Uparselist = appParses.split(',');
function uniq(array) {
var temp = []; //一个新的临时数组
for (var i = 0; i < array.length; i++) {
if (temp.indexOf(array[i]) == -1) {
temp.push(array[i]);
}
}
return temp;
}
Uparselist = uniq(Uparselist);//去重
var x5jxlist = []; //x5嗅探接口存放数组
var url = "";
var parseurl = "";
var urls = [];//多线路地址
var headers = [];//多线路头信息
var exclude = /404\.m3u8|xiajia\.mp4|余额不足\.m3u8|\.suoyo|\.ruifenglb|m3u8\.tv/;//设置排除地址
var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/;//设置符合条件的正确地址
if (!exclude.test(vipUrl) && contain.test(vipUrl)) {
url = vipUrl;
}
for (var i = 0; i < Uparselist.length; i++) {
if (contain.test(url)) { break; }
if (x5jxlist.length >= 3) { break; }
let UrlList = [];
let p = i + 3;
if (p > Uparselist.length) { p = Uparselist.length }
for (let s = i; s < p; s++) {
parseurl = Uparselist[s];
if (parseurl[0] == '/') { parseurl = 'https:' + parseurl }
if (parseurl.substring(0, 4) == 'http') {
UrlList.push(parseurl);
}
i = s;
}
if (UrlList.length > 0) {
let playUrls = UrlList.map((playUrl) => {
return {
url: playUrl + vipUrl,
options: { headers: { 'User-Agent': PC_UA }, timeout: 2000 }
}
});
let bfhtml = batchFetch(playUrls);
for (let k in bfhtml) {
let gethtml = bfhtml[k];
parseurl = UrlList[k];
if (gethtml == undefined || gethtml == "" || !/<|{/.test(gethtml)) {
//url直链网页打不开
} else {
try {
try {
var rurl = JSON.parse(gethtml).url || JSON.parse(gethtml).data;
} catch (e) {
try {
var rurl = gethtml.match(/urls = "(.*?)"/)[1];
} catch (e) {
x5jxlist.push(parseurl);
}
}
if (typeof (rurl) != "undefined" && contain.test(rurl) && !exclude.test(rurl)) {
url = rurl;
urls.push(this.formatUrl(url, urls.length));
headers.push(this.mulheader(url));
}
} catch (e) { }
}
}//批量结果循环
}
}
if (url == "") {
if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) {
if (getMyVar('SrcGJFS', '1') == "2") {
return this.DN(vipUrl);
} else {
if (getMyVar('author') == "帅√`人才") {
return this.聚嗅(vipUrl);
} else {
return this.聚嗅(vipUrl, x5jxlist);
}
}
} else {
if (getMyVar('author') == "帅√`人才") {
return this.智能(vipUrl);
} else {
return this.聚嗅(vipUrl, x5jxlist);
}
}
} else {
if (urls.length > 1) {
return JSON.stringify({
urls: urls,
headers: headers
});
} else {
return this.formatUrl(url);
}
}
return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl, excludeurl);
},
聚影: function (vipUrl,parseStr) {
//聚影采用新的、独立的解析逻辑
@ -1103,7 +1003,7 @@ var SrcParseS = {
}
},
//测试视频地址有效性
testvideourl: function (url,name,times,nolog) {
testvideourl: function (url,name,times) {
if(!url){return 0}
if(!name){name = "解析"}
if(!times){times = 120}
@ -1112,10 +1012,9 @@ var SrcParseS = {
return 1;
}else if (/\.m3u8/.test(url)) {
var urlcode = JSON.parse(request(url,{withStatusCode:true,timeout:1500}));
fba.log(urlcode);
//log(name+'url访问状态码:'+urlcode.statusCode)
if(urlcode.statusCode==-1){
if(!nolog){log(name+'>m3u8探测超时未拦载,结果未知');}
log(name+'>m3u8探测超时未拦载,结果未知');
return 1;
}else if(urlcode.statusCode!=200){
//log(name+'>m3u8播放地址疑似失效或网络无法访问,不信去验证一下>'+url);
@ -1125,11 +1024,11 @@ var SrcParseS = {
var tstime = urlcode.body.match(/#EXT-X-TARGETDURATION:(.*?)\n/)[1];
var urltss = urlcode.body.replace(/#.*?\n/g,'').replace('#EXT-X-ENDLIST','').split('\n');
}catch(e){
if(!nolog){log(name+'>√错误:探测异常未拦截>'+e.message);}
log(name+'>√错误:探测异常未拦截>'+e.message);
return 1;
}
if(parseInt(tstime)*parseInt(urltss.length) < times){
if(!nolog){log(name+'>m3u8视频长度小于设置的'+times+'s,疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);}
log(name+'>m3u8视频长度小于设置的'+times+'s,疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);
return 0;
}else{
var urlts = urltss[0];
@ -1140,10 +1039,10 @@ var SrcParseS = {
var tscode = JSON.parse(request(urlts,{headers:{'Referer':url},onlyHeaders:true,timeout:1500}));
//log(name+'ts访问状态码:'+tscode.statusCode)
if(tscode.statusCode==-1){
if(!nolog){log(name+'>ts段探测超时未拦载,结果未知');}
log(name+'>ts段探测超时未拦载,结果未知');
return 1;
}else if(tscode.statusCode!=200){
if(!nolog){log(name+'>ts段地址疑似失效或网络无法访问,不信去验证一下>'+url);}
log(name+'>ts段地址疑似失效或网络无法访问,不信去验证一下>'+url);
return 0;
}
}
@ -1151,22 +1050,22 @@ var SrcParseS = {
}else if (/\.mp4/.test(url)) {
var urlheader = JSON.parse(request(url,{onlyHeaders:true,timeout:1500}));
if(urlheader.statusCode==-1){
if(!nolog){log(name+'>mp4探测超时未拦载,结果未知');}
log(name+'>mp4探测超时未拦载,结果未知');
return 1;
}else if(urlheader.statusCode!=200){
if(!nolog){log(name+'>mp4播放地址疑似失效或网络无法访问,不信去验证一下>'+url);}
log(name+'>mp4播放地址疑似失效或网络无法访问,不信去验证一下>'+url);
return 0;
}else{
var filelength = urlheader.headers['content-length'];
if(parseInt(filelength[0])/1024/1024 < 30){
if(!nolog){log(name+'>mp4播放地址疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);}
log(name+'>mp4播放地址疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);
return 0;
}
}
}
return 1;
} catch(e) {
if(!nolog){log(name+'>错误:探测异常未拦截,可能是失败的>'+e.message);}
log(name+'>错误:探测异常未拦截,可能是失败的>'+e.message);
return 1;
}
}

Loading…
Cancel
Save