From a7a1279500fa0deefc5452fc1d64a9f632d79558 Mon Sep 17 00:00:00 2001 From: jevons0411 Date: Fri, 16 Sep 2022 13:53:14 +0800 Subject: [PATCH] Update SrcJyAuto.js --- SrcJyAuto.js | 142 +++++++++++++++++++++++++++------------------------ 1 file changed, 74 insertions(+), 68 deletions(-) diff --git a/SrcJyAuto.js b/SrcJyAuto.js index ddc672cf..acc283c2 100644 --- a/SrcJyAuto.js +++ b/SrcJyAuto.js @@ -302,7 +302,7 @@ var aytmParse = function (vipUrl,parseStr) { //将选择的解析接口,带上类型、排序 var parsename = ""; var parseurl = ""; - var lx = ""; + var parselx = ""; var parselist = []; //var Jparselist = []; //var Uparselist = []; @@ -317,16 +317,16 @@ var aytmParse = function (vipUrl,parseStr) { if(strlist[i].includes("http")){ parsename = strlist[i]; parseurl = strlist[i]; - lx = "U"; + parselx = "U"; }else{ if(typeof ParseS[strlist[i]] == 'string'){ parsename = strlist[i]; parseurl = ParseS[strlist[i]]; - lx = "U"; + parselx = "U"; }else if(typeof ParseS[strlist[i]] == 'function'){ parsename = strlist[i]; parseurl = "0"; - lx = "J"; + parselx = "J"; }else{ dellist.push(strlist[i]); } @@ -367,17 +367,17 @@ var aytmParse = function (vipUrl,parseStr) { if(config.autoselect==1){ if(stopfrom.indexOf(from)==-1){ //自动筛选模式时,sort只做排序使用,不包含停用片源的解析,则加入解析接口组 - if(lx=="J"){ + if(parselx=="J"){ //let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; //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); Jparsenum ++; } - if(lx=="U"){ + if(parselx=="U"){ //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; //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); Uparsenum ++; } @@ -393,17 +393,17 @@ var aytmParse = function (vipUrl,parseStr) { dellist.push(strlist[i]); }else{ //非自动筛选解析时按失败次数,小于设置的次数、且解析接口名有效,加入解析接口组 - if(lx=="J"){ + if(parselx=="J"){ //let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; //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); Jparsenum ++; } - if(lx=="U"){ + if(parselx=="U"){ //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; //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); Uparsenum ++; } @@ -420,7 +420,7 @@ var aytmParse = function (vipUrl,parseStr) { if(parselist.length == 0){ if(config.printlog==1){log("√没有可用的解析接口,需重新配置")}; hideLoading(); - return 'toast://解析口全部无效了,重新配置吧'; + return 'toast://√解析口全部无效了,重新配置吧'; }else{ //解析接口排序,将之前失败的排在后面 parselist.sort(sortData) @@ -439,16 +439,17 @@ var aytmParse = function (vipUrl,parseStr) { var urls = [];//用于多线路地址存储 var names = [];//用于多线路名称存储 var headers = [];//用于多线路头信息存储 - var ismulti = config.ismulti||0; - var multiline = config.multiline||1; + var ismulti = config.ismulti||0;//是否开启多线程 + var multiline = config.multiline||1;//多线程数量 var adminuser = config.adminuser||0; if(ismulti==0&&adminuser==0){multiline=2}else{if(multiline>5){multiline=5}} 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 rurl = ""; + let rurl = ""; + let x5 = 0; if(obj.lx=="J"){ rurl = ParseS[obj.name](vipUrl); }else if(obj.lx=="U"){ @@ -475,40 +476,42 @@ var aytmParse = function (vipUrl,parseStr) { //if(printlog==1){log('将日志提交给作者,帮助完善解析逻辑>>>'+gethtml)}; } } catch (e) { - if(printlog==1){log('明码获取错误:'+e.message)}; + if(printlog==1){log('√明码获取错误:'+e.message)}; } } } - let x5 = 0; + if(rurl == ""){ - if(!/404 /.test(gethtml)&&obj.url.indexOf('key=')==-1){ - if(x5jxlist.length<=5){ + if(!/404 /.test(gethtml)){ + if(x5jxlist.length<=5&&obj.url.indexOf('key=')==-1){ x5jxlist.push(obj.url); 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{ - obj.ulist['x5'] = 0; - return {url: "",ulist: obj.ulist}; + x5 = 2;//网页无法访问,标记剔除 } + 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-1){ + if(config.jstoweb==1&&parselx=="J"&&parseurl.search(/x5Rule|webRule/)>-1){ //js中跳转x5或web嗅探 - if(config.printlog==1){log("√JS中跳转x5|web嗅探,帅助手逻辑被打断,结果自负")}; - return beurls[k]; + if(config.printlog==1){log("√JS中跳转x5|web嗅探,解析逻辑被打断,结果自负")}; + return parseurl; }else{ - if (contain.test(beurls[k]) && !exclude.test(beurls[k])) { - url = beurls[k]; - if(config.printlog==1){log("√JS解析成功>" + url)}; - if(config.testcheck==1){url=""}else{ + if (contain.test(url) && !exclude.test(url)) { + url = parseurl; + if(config.printlog==1){log("√"+parselx+"解析成功>" + url)}; + if(config.testcheck==1){ + url = ""; + }else{ if(ismulti==1&&multiline>1){ let rurl = url.replace(/;{.*}/,''); let head = format.urlJoinUa(rurl,1); @@ -569,29 +573,31 @@ var aytmParse = function (vipUrl,parseStr) { } } } else { - //JS解析失败了,排序+1 - let failsum =0 ; - for(var j=0;j2)||(failsum>=config.failcount)){ - //自动选择接口时此接口失败大于2时、失败次数大于限定,此片源排除此解析接口 - sortlist[j].stopfrom[sortlist[j].stopfrom.length] = from - }; + if(beresults[k].lx=="J" || (beresults[k].lx=="U"&&beresults[k].x5==2)){ + //JS解析失败的、非x5嗅探解析,失败排序+1 + let failsum =0 ; + for(var j=0;j=3)||(failsum>=config.failcount)){ + //自动选择接口时此接口失败大于等于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{ 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