diff --git a/SrcParseS.js b/SrcParseS.js index 117ca234..882227b3 100644 --- a/SrcParseS.js +++ b/SrcParseS.js @@ -601,7 +601,8 @@ var SrcParseS = { 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)){ - Uparselist.push({type:'myjx',name:myJXlist[j].name,parse:myJXlist[j].parse,sort:1}); + 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); myjxnum = myjxnum + 1; } @@ -622,6 +623,7 @@ var SrcParseS = { var dellist = [];//需从本地解析中删除列表 var appJXchange = 0;//app解析是否有发现新的或增加可解片源 var myJXchange = 0;//私有解析是否排除片源 + var appzdchange = 0;//app自带解析是否加入黑名单 //断插线程代码 var dnaytmParse = function(vipUrl) { @@ -856,7 +858,7 @@ var SrcParseS = { if(playurl==""){playurl = beurls[k];} //记录除断插线程以外最快的,做为下次优先 if(beparses[k].type!="dn"){ - if(printlog==1){log(beparses[k].name+'-解析成功>'+beurls[k])}; + if(printlog==1){log(beparses[k].name+'>解析成功>'+beurls[k])}; if(isrecord==0){ if(printlog==1){log(beparses[k].name+',记录为片源'+from+'的优先')}; recordlist['parse'] = recordlist['parse']||{}; @@ -891,6 +893,19 @@ var SrcParseS = { appJXchange = 1; if(printlog==1){log('发现新解析,自动保存,当前解析数:' + appJXlist.length)}; } + }else{ + //私有解析成功的,提升一下排序 + for(var j=0;j0){ + myJXlist[j].sort = myJXlist[j].sort - 1; + myJXchange = 1; + } + break; + } + } } }else{ if(printlog==1){log('当前播放地址通过断插解析获得')}; @@ -928,8 +943,7 @@ var SrcParseS = { } //if(ismul==0){break;} }else{ - //if(printlog==1){log(beparses[k].name+'-解析失败>'+beurls[k])}; - if((beparses[k].type=="apps"||beparses[k].type=="myjx")&&beparses[k].x5==0){ + if(beparses[k].x5==0){ dellist.push(beparses[k]) }; } @@ -938,29 +952,40 @@ var SrcParseS = { //失败的解析,处理 for(var p=0;p私有解析失败,排序-1')}; + if(myJXlist[j].sort>5 && myJXlist[j].stopfrom.indexOf(from)==-1){ myJXlist[j].stopfrom[myJXlist[j].stopfrom.length] = from; myJXchange = 1; + if(printlog==1){log(myJXlist[j].name+'>私有解析失败大于5次,排除片源'+from)}; } break; } } - }*/ + } + if(dellist[p].type=="appz"){ + //app自带的解析在解析失败时,直接加入黑名单 + recordlist['excludeparse'] = recordlist['excludeparse']||[]; + if(recordlist['excludeparse'].indexOf(dellist[p].parse)==-1){ + recordlist['excludeparse'].push(dellist[p].parse); + appzdchange = 1; + } + } if(dellist[p].type=="apps"){ for(var j=0;j1){ - if(printlog==1){log('发现失效解析,自动删除解析片源'+from)}; + //if(printlog==1){log('发现失效app保存解析,自动删除解析片源'+from)}; removeByValue(appJXlist[j].from,from); appJXchange = 1; }else{ - if(printlog==1){log('发现失效解析,自动删除解析')}; + //if(printlog==1){log('发现失效app保存解析,自动删除解析')}; appJXlist.splice(j,1); appJXchange = 1; } @@ -968,12 +993,16 @@ var SrcParseS = { } } } + } + //私有解析有排除片源 - if(myJXchange == 1){writeFile(myJXfile, JSON.stringify(myJXlist))}; + if(myJXchange == 1){writeFile(myJXfile, JSON.stringify(myJXlist));} //app有发现或修改解析时保存本地 - if(appJXchange == 1){writeFile(appJXfile, JSON.stringify(appJXlist))}; - //if(printlog==1&&failedmyjx.length>0){log('本次失败的私有解析有:' + failedmyjx)}; + if(appJXchange == 1){writeFile(appJXfile, JSON.stringify(appJXlist));} + //app自带解析是否加入黑名单 + if(appzdchange==1){writeFile(recordfile, JSON.stringify(recordlist));} + //播放 if(playurl!=""){ if(urls.length>1){ @@ -990,7 +1019,7 @@ var SrcParseS = { }else{ if(printlog==1){ log('明码解析失败,转嗅探备用解析'); - log('进入嗅探解析列表:' + x5jxlist) + log('进入嗅探解析列表:' + x5namelist) } return this.聚嗅(vipUrl, x5jxlist); }