Update SrcJyAuto.js

pull/1/head
jevons0411 2 years ago
parent 509cfa06eb
commit a7a1279500
  1. 142
      SrcJyAuto.js

@ -302,7 +302,7 @@ var aytmParse = function (vipUrl,parseStr) {
//将选择的解析接口,带上类型、排序 //将选择的解析接口,带上类型、排序
var parsename = ""; var parsename = "";
var parseurl = ""; var parseurl = "";
var lx = ""; var parselx = "";
var parselist = []; var parselist = [];
//var Jparselist = []; //var Jparselist = [];
//var Uparselist = []; //var Uparselist = [];
@ -317,16 +317,16 @@ var aytmParse = function (vipUrl,parseStr) {
if(strlist[i].includes("http")){ if(strlist[i].includes("http")){
parsename = strlist[i]; parsename = strlist[i];
parseurl = strlist[i]; parseurl = strlist[i];
lx = "U"; parselx = "U";
}else{ }else{
if(typeof ParseS[strlist[i]] == 'string'){ if(typeof ParseS[strlist[i]] == 'string'){
parsename = strlist[i]; parsename = strlist[i];
parseurl = ParseS[strlist[i]]; parseurl = ParseS[strlist[i]];
lx = "U"; parselx = "U";
}else if(typeof ParseS[strlist[i]] == 'function'){ }else if(typeof ParseS[strlist[i]] == 'function'){
parsename = strlist[i]; parsename = strlist[i];
parseurl = "0"; parseurl = "0";
lx = "J"; parselx = "J";
}else{ }else{
dellist.push(strlist[i]); dellist.push(strlist[i]);
} }
@ -367,17 +367,17 @@ var aytmParse = function (vipUrl,parseStr) {
if(config.autoselect==1){ if(config.autoselect==1){
if(stopfrom.indexOf(from)==-1){ if(stopfrom.indexOf(from)==-1){
//自动筛选模式时,sort只做排序使用,不包含停用片源的解析,则加入解析接口组 //自动筛选模式时,sort只做排序使用,不包含停用片源的解析,则加入解析接口组
if(lx=="J"){ if(parselx=="J"){
//let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; //let parsearr = { "id" : i,"sort" : sort, "name" : parsename };
//Jparselist.push(parsearr); //Jparselist.push(parsearr);
let arr = { "id": i,"sort": sort, "name": parsename, "lx": "J" }; let arr = { "id": i,"sort": sort, "name": parsename, "lx": parselx };
parselist.push(arr); parselist.push(arr);
Jparsenum ++; Jparsenum ++;
} }
if(lx=="U"){ if(parselx=="U"){
//let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl };
//Uparselist.push(urlarr); //Uparselist.push(urlarr);
let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": "U" }; let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": parselx };
parselist.push(arr); parselist.push(arr);
Uparsenum ++; Uparsenum ++;
} }
@ -393,17 +393,17 @@ var aytmParse = function (vipUrl,parseStr) {
dellist.push(strlist[i]); dellist.push(strlist[i]);
}else{ }else{
//非自动筛选解析时按失败次数,小于设置的次数、且解析接口名有效,加入解析接口组 //非自动筛选解析时按失败次数,小于设置的次数、且解析接口名有效,加入解析接口组
if(lx=="J"){ if(parselx=="J"){
//let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; //let parsearr = { "id" : i,"sort" : sort, "name" : parsename };
//Jparselist.push(parsearr); //Jparselist.push(parsearr);
let arr = { "id": i,"sort": sort, "name": parsename, "lx": "J" }; let arr = { "id": i,"sort": sort, "name": parsename, "lx": parselx };
parselist.push(arr); parselist.push(arr);
Jparsenum ++; Jparsenum ++;
} }
if(lx=="U"){ if(parselx=="U"){
//let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl };
//Uparselist.push(urlarr); //Uparselist.push(urlarr);
let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": "U" }; let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": parselx };
parselist.push(arr); parselist.push(arr);
Uparsenum ++; Uparsenum ++;
} }
@ -420,7 +420,7 @@ var aytmParse = function (vipUrl,parseStr) {
if(parselist.length == 0){ if(parselist.length == 0){
if(config.printlog==1){log("√没有可用的解析接口,需重新配置")}; if(config.printlog==1){log("√没有可用的解析接口,需重新配置")};
hideLoading(); hideLoading();
return 'toast://解析口全部无效了,重新配置吧'; return 'toast://解析口全部无效了,重新配置吧';
}else{ }else{
//解析接口排序,将之前失败的排在后面 //解析接口排序,将之前失败的排在后面
parselist.sort(sortData) parselist.sort(sortData)
@ -439,16 +439,17 @@ var aytmParse = function (vipUrl,parseStr) {
var urls = [];//用于多线路地址存储 var urls = [];//用于多线路地址存储
var names = [];//用于多线路名称存储 var names = [];//用于多线路名称存储
var headers = [];//用于多线路头信息存储 var headers = [];//用于多线路头信息存储
var ismulti = config.ismulti||0; var ismulti = config.ismulti||0;//是否开启多线程
var multiline = config.multiline||1; var multiline = config.multiline||1;//多线程数量
var adminuser = config.adminuser||0; var adminuser = config.adminuser||0;
if(ismulti==0&&adminuser==0){multiline=2}else{if(multiline>5){multiline=5}} if(ismulti==0&&adminuser==0){multiline=2}else{if(multiline>5){multiline=5}}
if(config.testcheck==1){multiline=10} if(config.testcheck==1){multiline=10}
require(config.依赖.match(/https.*\//)[0] + 'SrcJyAuto.js'); require(config.依赖.match(/https.*\//)[0] + 'SrcParseS.js');
//明码解析线程代码 //明码解析线程代码
var parsetask = function(obj) { var parsetask = function(obj) {
var rurl = ""; let rurl = "";
let x5 = 0;
if(obj.lx=="J"){ if(obj.lx=="J"){
rurl = ParseS[obj.name](vipUrl); rurl = ParseS[obj.name](vipUrl);
}else if(obj.lx=="U"){ }else if(obj.lx=="U"){
@ -475,40 +476,42 @@ var aytmParse = function (vipUrl,parseStr) {
//if(printlog==1){log('将日志提交给作者,帮助完善解析逻辑>>>'+gethtml)}; //if(printlog==1){log('将日志提交给作者,帮助完善解析逻辑>>>'+gethtml)};
} }
} catch (e) { } catch (e) {
if(printlog==1){log('明码获取错误:'+e.message)}; if(printlog==1){log('明码获取错误:'+e.message)};
} }
} }
} }
let x5 = 0;
if(rurl == ""){ if(rurl == ""){
if(!/404 /.test(gethtml)&&obj.url.indexOf('key=')==-1){ if(!/404 /.test(gethtml)){
if(x5jxlist.length<=5){ if(x5jxlist.length<=5&&obj.url.indexOf('key=')==-1){
x5jxlist.push(obj.url); x5jxlist.push(obj.url);
x5nmlist.push(obj.name); x5nmlist.push(obj.name);
if(printlog==1){log(obj.name + '>加入x5嗅探列表');} if(printlog==1){log(obj.name + '>√加入x5嗅探列表');}
x5 = 1;//网页可以正常访问,偿试嗅探
}else{
x5 = 2; //网页404,标记剔除
} }
x5 = 1;
}
}else{
if(obj.testurl(rurl,obj.name)==0){
rurl = "";
} }
} }
obj.ulist['x5'] = x5;
return {url: rurl,ulist: obj.ulist};
}else{ }else{
obj.ulist['x5'] = 0; x5 = 2;//网页无法访问,标记剔除
return {url: "",ulist: obj.ulist};
} }
obj['x5'] = x5;
} }
if(rurl&&/^http/.test(rurl)){
//检测地址有效性
if(testvideourl(rurl,obj.name)==0){
rurl = "";
}
}
obj['rurl'] = rurl;
return obj;
}; };
if(config.testcheck==1){showLoading('JS免嗅解析列表,检测中')}; if(config.testcheck==1){showLoading('解析列表,检测中')};
for (var i=0;i<parselist.length;i++) { for (var i=0;i<parselist.length;i++) {
if(contain.test(url)){break;} if(contain.test(url)){break;}
var beurls = [];//用于存储多线程返回地址 var beresults = [];//用于存储多线程返回对象
var benames = [];//用于存储多线程名称
var beerrors = [];//用于存储多线程是否有错误 var beerrors = [];//用于存储多线程是否有错误
let p = i+multiline; let p = i+multiline;
@ -529,35 +532,36 @@ var aytmParse = function (vipUrl,parseStr) {
be(parses, { be(parses, {
func: function(obj, id, error, taskResult) { func: function(obj, id, error, taskResult) {
obj.results.push(taskResult); obj.results.push(taskResult);
obj.names.push(id);
obj.errors.push(error); obj.errors.push(error);
if (ismulti!=1&&config.testcheck!=1&&contain.test(taskResult.rurl) && !exclude.test(taskResult.rurl)) {
if (ismulti!=1&&config.testcheck!=1&&contain.test(taskResult)&&!exclude.test(taskResult)) {
//toast("我主动中断了"); //toast("我主动中断了");
log("√线程中止"); log("√线程结束");
return "break"; return "break";
} }
}, },
param: { param: {
results: beurls, results: beresults,
names: benames,
errors: beerrors errors: beerrors
} }
}); });
for(let k in benames){ for(let k in beresults){
parsename = benames[k]; parsename = beresults[k].name;
if(config.printlog==1){log("√正在调用js解析:" + parsename)}; parseurl = beresults[k].rurl;
parselx = beresults[k].lx;
if(config.printlog==1){log("√检查解析结果:" + parselx + "-" + parsename)};
if(beerrors[k]==null){ if(beerrors[k]==null){
if(config.jstoweb==1&&beurls[k].search(/x5Rule|webRule/)>-1){ if(config.jstoweb==1&&parselx=="J"&&parseurl.search(/x5Rule|webRule/)>-1){
//js中跳转x5或web嗅探 //js中跳转x5或web嗅探
if(config.printlog==1){log("√JS中跳转x5|web嗅探,帅助手逻辑被打断,结果自负")}; if(config.printlog==1){log("√JS中跳转x5|web嗅探,解析逻辑被打断,结果自负")};
return beurls[k]; return parseurl;
}else{ }else{
if (contain.test(beurls[k]) && !exclude.test(beurls[k])) { if (contain.test(url) && !exclude.test(url)) {
url = beurls[k]; url = parseurl;
if(config.printlog==1){log("√JS解析成功>" + url)}; if(config.printlog==1){log("√"+parselx+"解析成功>" + url)};
if(config.testcheck==1){url=""}else{ if(config.testcheck==1){
url = "";
}else{
if(ismulti==1&&multiline>1){ if(ismulti==1&&multiline>1){
let rurl = url.replace(/;{.*}/,''); let rurl = url.replace(/;{.*}/,'');
let head = format.urlJoinUa(rurl,1); let head = format.urlJoinUa(rurl,1);
@ -569,29 +573,31 @@ var aytmParse = function (vipUrl,parseStr) {
} }
} }
} else { } else {
//JS解析失败了,排序+1 if(beresults[k].lx=="J" || (beresults[k].lx=="U"&&beresults[k].x5==2)){
let failsum =0 ; //JS解析失败的、非x5嗅探解析,失败排序+1
for(var j=0;j<sortlist.length;j++){ let failsum =0 ;
if(sortlist[j].name == parsename){ for(var j=0;j<sortlist.length;j++){
sortlist[j].sort = sortlist[j].sort+1; if(sortlist[j].name == parsename){
issort = 1; sortlist[j].sort = sortlist[j].sort+1;
failsum = sortlist[j].sort; issort = 1;
if(sortlist[j].stopfrom.indexOf(from)==-1){ failsum = sortlist[j].sort;
if((config.autoselect==1&&failsum>2)||(failsum>=config.failcount)){ if(sortlist[j].stopfrom.indexOf(from)==-1){
//自动选择接口时此接口失败大于2时、失败次数大于限定,此片源排除此解析接口 if((config.autoselect==1&&failsum>=3)||(failsum>=config.failcount)){
sortlist[j].stopfrom[sortlist[j].stopfrom.length] = from //自动选择接口时此接口失败大于等于3时、失败次数大于限定,此片源排除此解析接口
}; sortlist[j].stopfrom[sortlist[j].stopfrom.length] = from
};
}
break;
} }
break;
} }
if(config.testcheck==1){faillist.push(parsename)};
if(config.printlog==1){log("√解析失败,已失败"+failsum+"次,跳过")};
} }
if(config.testcheck==1){faillist.push(parsename)};
if(config.printlog==1){log("√解析失败,已失败"+failsum+"次,更换下一个解析")};
} }
} }
}else{ }else{
if(config.testcheck==1){faillist.push(parsename)}; if(config.testcheck==1){faillist.push(parsename)};
if(config.printlog==1){log(beerrors[k]+" √此接口有语法错误,更换下一个解析")}; if(config.printlog==1){log(beerrors[k]+" √此解析有语法错误,跳过")};
for(var j=0;j<sortlist.length;j++){ for(var j=0;j<sortlist.length;j++){
if(sortlist[j].name == parsename){ if(sortlist[j].name == parsename){
sortlist[j].sort = sortlist[j].sort+1; sortlist[j].sort = sortlist[j].sort+1;
@ -885,7 +891,7 @@ var aytmParse = function (vipUrl,parseStr) {
}*/ }*/
if(issort==1&&isparse==0){writeFile("hiker://files/cache/SrcSort.json", JSON.stringify(sortlist))}; if(issort==1&&isparse==0){writeFile("hiker://files/cache/SrcSort.json", JSON.stringify(sortlist))};
//上面js免嗅、json解析、剔除打不开网站做完了 //上面js免嗅、json、明码解析、剔除打不开网站做完了
try { try {
if (url==''||url==null) { if (url==''||url==null) {
function uniq(array){ function uniq(array){

Loading…
Cancel
Save