From 0ed9a0c368e471a49e92fbc05b1eae01b3b38619 Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Mon, 11 Jul 2022 09:37:00 +0000 Subject: [PATCH] update SrcParseS.js. --- SrcParseS.js | 164 +++++++++++++++++++++++++++------------------------ 1 file changed, 87 insertions(+), 77 deletions(-) diff --git a/SrcParseS.js b/SrcParseS.js index 02485393..4467dd53 100644 --- a/SrcParseS.js +++ b/SrcParseS.js @@ -472,7 +472,7 @@ var SrcParseS = { } } }, - 聚影: function (vipUrl) { + 聚影: function (vipUrl,parseStr) { //聚影采用新的、独立的解析逻辑 var cfgfile = "hiker://files/rules/Src/Juying/config.json"; var Juyingcfg=fetch(cfgfile); @@ -522,23 +522,6 @@ var SrcParseS = { if(printlog==1){log("片源标识:"+from+",需要解析")}; - var recordfile = "hiker://files/rules/Src/Juying/parse.json"; - var recordparse=fetch(recordfile); - if(recordparse!=""){ - eval("var recordlist=" + recordparse+ ";"); - }else{ - var recordlist={}; - } - - var excludeurl = recordlist.excludeurl||[]; - var excludeparse = recordlist.excludeparse||[]; - try { - var recordparse = recordlist.parse[from]; - var recordname = recordlist.name[from]||"***"; - } catch (e) { - var recordparse = ""; - var recordname = "***"; - } function uniq(array) { var temp = []; //一个新的临时数组 for (var i = 0; i < array.length; i++) { @@ -558,69 +541,84 @@ var SrcParseS = { } var Uparselist = []; var Nparselist = []; - var appParses = getMyVar('parse_api', ''); - if(appParses){ - let appParselist = appParses.split(','); - appParselist = uniq(appParselist);//去重 - for (var i in appParselist) { - if(excludeparse.indexOf(appParselist[i])==-1){ - Uparselist.push({type:'appz',name:'appz'+i,parse:appParselist[i],sort:0}); - //Nparselist.push('appz'+i); + var appJXlist= []; + var myJXlist= []; + + if(parseStr){ + //指定解析用于测试 + Uparselist.push({type:'test',name:parseStr.name,parse:parseStr.parse,header:parseStr.header,sort:0}); + }else{ + var recordfile = "hiker://files/rules/Src/Juying/parse.json"; + var parserecord=fetch(recordfile); + if(parserecord!=""){ + eval("var recordlist=" + parserecord+ ";"); + }else{ + var recordlist={}; + } + var excludeurl = recordlist.excludeurl||[]; + var excludeparse = recordlist.excludeparse||[]; + try { + var recordparse = recordlist.parse[from]; + var recordname = recordlist.name[from]||"***"; + } catch (e) { + var recordparse = ""; + var recordname = "***"; + } + //读取app自带的解析,将未屏蔽的入备选 + var appParses = getMyVar('parse_api', ''); + if(appParses){ + let appParselist = appParses.split(','); + appParselist = uniq(appParselist);//去重 + for (var i in appParselist) { + if(excludeparse.indexOf(appParselist[i])==-1){ + Uparselist.push({type:'appz',name:'appz'+i,parse:appParselist[i],sort:0}); + } } + if(printlog==1){log("接口自带的解析数:"+Uparselist.length)}; } - if(printlog==1){log("接口自带的解析数:"+Uparselist.length)}; - } - //log(Uparselist) - //读取本地app保存的解析,将可用加入备选 - var appJXfile = "hiker://files/rules/Src/Juying/appjiexi.json"; - var appJX=fetch(appJXfile); - if(appJX != ""){ - eval("var appJXlist=" + appJX+ ";"); - var apjxnum = 0; - for(var j=0;j-1&&excludeparse.indexOf(appJXlist[j].parse)==-1&&!Uparselist.some(item => item.parse ==appJXlist[j].parse)){ - Uparselist.push({type:'apps',name:'apps'+j,parse:appJXlist[j].parse,sort:0}); - //Nparselist.push('apps'+j); - var apjxnum = apjxnum + 1; + //读取本地app保存的解析,将可用加入备选 + var appJXfile = "hiker://files/rules/Src/Juying/appjiexi.json"; + var appJX=fetch(appJXfile); + if(appJX != ""){ + eval("var appJXlist=" + appJX+ ";"); + var apjxnum = 0; + for(var j=0;j-1&&excludeparse.indexOf(appJXlist[j].parse)==-1&&!Uparselist.some(item => item.parse ==appJXlist[j].parse)){ + Uparselist.push({type:'apps',name:'apps'+j,parse:appJXlist[j].parse,sort:0}); + var apjxnum = apjxnum + 1; + } } + if(printlog==1){log("保存的可用解析数:" + apjxnum)}; } - if(printlog==1){log("保存的可用解析数:" + apjxnum)}; - }else{ - var appJXlist= []; - } - //读取私有增加的解析,将可用加入备选 - var myJXfile = "hiker://files/rules/Src/Juying/myjiexi.json"; - var myJX=fetch(myJXfile); - if(myJX != ""){ - eval("var myJXlist=" + myJX+ ";"); - var myjxnum = 0; - for(var j=0;j-1){ - if(Uparselist.some(item => item.parse ==myJXlist[j].parse)){ - for(var i=0;i-1){ + if(Uparselist.some(item => item.parse ==myJXlist[j].parse)){ + for(var i=0;i item.parse ==myJXlist[j].parse)){ - let sort = myJXlist[j]['sort']||1; - Uparselist.push({type:'myjx',name:myJXlist[j].name,parse:myJXlist[j].parse,sort:sort}); - //Nparselist.push(myJXlist[j].name); + Uparselist.unshift({type:'myjx',name:myJXlist[j].name,parse:myJXlist[j].parse,sort:-1}); myjxnum = myjxnum + 1; + }else{ + if(myJXlist[j].stopfrom.indexOf(from)==-1&&excludeparse.indexOf(myJXlist[j].parse)==-1&&!Uparselist.some(item => item.parse ==myJXlist[j].parse)){ + let sort = myJXlist[j]['sort']||1; + Uparselist.push({type:'myjx',name:myJXlist[j].name,parse:myJXlist[j].parse,sort:sort}); + myjxnum = myjxnum + 1; + } } } + if(printlog==1){log("私有的可用解析数:" + myjxnum)}; } - if(printlog==1){log("私有的可用解析数:" + myjxnum)}; - }else{ - var myJXlist= []; } //log(Uparselist) @@ -645,7 +643,12 @@ var SrcParseS = { //明码解析线程代码 var task = function(obj) { - var getjson = JSON.parse(request(obj.ulist.parse+obj.vipUrl,{withStatusCode:true,timeout:5000})); + var taskheader = {withStatusCode:true,timeout:5000}; + let head = obj.ulist.header||""; + if(head){ + taskheader['header'] = head; + } + var getjson = JSON.parse(request(obj.ulist.parse+obj.vipUrl,taskheader)); if (getjson.body&&getjson.statusCode==200){ var gethtml = getjson.body; var rurl = ""; @@ -741,7 +744,7 @@ var SrcParseS = { } }; - if(recordparse&&forcedn==0&&mulnum<=1){ + if(recordparse&&forcedn==0&&mulnum<=1&&!parseStr){ //优先上次成功的 playurl = task({ulist:{parse:recordparse, name:recordname}, vipUrl:vipUrl}).url; @@ -866,8 +869,11 @@ var SrcParseS = { var parseurl = beparses[k].parse; if(beerrors[k]==null&&contain.test(beurls[k])&&!exclude.test(beurls[k])&&excludeurl.indexOf(beurls[k])==-1){ if(playurl==""){playurl = beurls[k];} - //记录除断插线程以外最快的,做为下次优先 - if(beparses[k].type!="dn"){ + if(beparses[k].type="test"){ + //当前为测试 + if(printlog==1){log(beparses[k].name+'>测试成功>'+beurls[k])}; + }else if(beparses[k].type!="dn"){ + //记录除断插线程以外最快的,做为下次优先 if(printlog==1){log(beparses[k].name+'>解析成功>'+beurls[k])}; if(isrecord==0){ if(printlog==1){log(beparses[k].name+',记录为片源'+from+'的优先')}; @@ -953,7 +959,7 @@ var SrcParseS = { } //if(ismul==0){break;} }else{ - if(beparses[k].x5==0){ + if(beparses[k].x5==0&&beparses[k].type!="test"){ dellist.push(beparses[k]) }; } @@ -1031,7 +1037,11 @@ var SrcParseS = { log('明码解析失败,转嗅探备用解析'); log('进入嗅探解析列表:' + x5namelist) } - return this.聚嗅(vipUrl, x5jxlist); + if(parseStr){ + return this.嗅探(parseStr+vipUrl); + }else{ + return this.聚嗅(vipUrl, x5jxlist); + } } } },