多愚

Run Settings
LanguageJavaScript
Language Version
Run Command
import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import"./jsencrypt.js";import"./node-rsa.js";import"./pako.min.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";import"./json5.js";import"./jinja.js";const _jinja2=cheerio.jinja2;cheerio.jinja2=function(template,obj){try{return jinja.render(template,obj)}catch(e){console.log("新的jinja2库渲染失败,换回原始cheerio:"+e.message);return _jinja2(template,obj)}};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.51beta5 20241104";const UpdateInfo=[{date:"20241104",title:"drpy更新,增加新特性",version:"3.9.51beta5 20241104",msg:` 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码' 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空 `}];function getUpdateInfo(){return UpdateInfo.map(_o=>{_o.msg=_o.msg.trim().split("\n").map(_it=>_it.trim()).join("\n");return _o})}function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log("本地代理地址:"+getProxyUrl());console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function ocr_demo_test(){let img_base64=`iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;OcrApi.api=OCR_API;let code=OcrApi.classification(img_base64);log("测试验证码图片的ocr识别结果为:"+code)}function rsa_demo_test(){let t1=(new Date).getTime();let pkcs1_public=` -----BEGIN RSA PUBLIC KEY----- MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= -----END RSA PUBLIC KEY----- `.trim();let pkcs1_public_pem=` MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= `.trim();let pkcs8_public=` -----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== -----END PUBLIC KEY-----`.trim();let pkcs8_public_pem=` MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== `.trim();let pkcs1_private=` -----BEGIN RSA PRIVATE KEY----- MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7 ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt 0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+ 5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q== -----END RSA PRIVATE KEY----- `.trim();let pkcs8_private=` -----BEGIN PRIVATE KEY----- MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8 KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8 s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3 rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6 lPxDjezd -----END PRIVATE KEY----- `.trim();let data=` NodeRsa 这是node-rsa 现在修改集成在drpy里使用`.trim();let encryptedWithPublic=NODERSA.encryptRSAWithPublicKey(data,pkcs1_public,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("公钥加密");console.log(encryptedWithPublic);let decryptedWithPrivate=NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic,pkcs1_private,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("私钥解密");console.log(decryptedWithPrivate);let pkcs1_sha256_sign=NODERSA.sign("1",pkcs1_private,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:"pkcs1",signingScheme:"pkcs1-sha256"}});console.log("pkcs1_sha256_sign");console.log(pkcs1_sha256_sign);let pkcs1_sha256_sign_verify=NODERSA.verify("1","Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==",pkcs1_private,{options:{environment:"browser",encryptionScheme:"pkcs1",signingScheme:"pkcs1-sha256"}});console.log("pkcs1_sha256_sign_verify");console.log(pkcs1_sha256_sign_verify);let pkcs1_oaep_sha256=NODERSA.encryptRSAWithPublicKey(data,`-----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8 PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB -----END RSA PUBLIC KEY----- `,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:{scheme:"pkcs1_oaep",hash:"sha256"}}});console.log("pkcs1_oaep_sha256");console.log(pkcs1_oaep_sha256);decryptedWithPrivate=NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==",`-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy 3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+ HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/ zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31 iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ 8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9 l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0 o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3 ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC 8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87 HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51 MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA== -----END RSA PRIVATE KEY-----`,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("decryptedWithPrivate");console.log(decryptedWithPrivate);(()=>{let key=new NODERSA.NodeRSA({b:1024});key.setOptions({encryptionScheme:"pkcs1"});let text=`你好drpy node-ras`;let encrypted=key.encrypt(text,"base64");console.log("encrypted: ",encrypted);const decrypted=key.decrypt(encrypted,"utf8");console.log("decrypted: ",decrypted)})();let t2=(new Date).getTime();console.log("rsa_demo_test 测试耗时:"+(t2-t1)+"毫秒")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log(`预处理执行失败:${e.message}`)}}}let rule={};const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|榜|评论";const OCR_RETRY=3;const OCR_API="https://api.nn.ci/ocr/b64/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;const $js={toString(func){let strfun=func.toString();return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/,"js:").replace(/\}$/,"")}};function window_b64(){let b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out="";while(i<len){c1=str.charCodeAt(i++)&255;if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4);out+="==";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+="=";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out="";while(i<len){do{c1=base64DecodeChars[str.charCodeAt(i++)&255]}while(i<len&&c1==-1);if(c1==-1)break;do{c2=base64DecodeChars[str.charCodeAt(i++)&255]}while(i<len&&c2==-1);if(c2==-1)break;out+=String.fromCharCode(c1<<2|(c2&48)>>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i<len&&c3==-1);if(c3==-1)break;out+=String.fromCharCode((c2&15)<<4|(c3&60)>>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i<len&&c4==-1);if(c4==-1)break;out+=String.fromCharCode((c3&3)<<6|c4)}return out}return{atob:atob,btoa:btoa}}if(typeof atob!=="function"||typeof btoa!=="function"){var{atob,btoa}=window_b64()}if(typeof Object.assign!=="function"){Object.assign=function(){let target=arguments[0];for(let i=1;i<arguments.length;i++){let source=arguments[i];for(let key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false},enumerable:false})}if(typeof String.prototype.startsWith!=="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!=="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.defineProperty(Object.prototype,"myValues",{value:function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res},enumerable:false});if(typeof Object.prototype.values!=="function"){Object.defineProperty(Object.prototype,"values",{value:function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res},enumerable:false})}if(typeof Array.prototype.join!=="function"){Object.defineProperty(Array.prototype,"join",{value:function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str},enumerable:false})}if(typeof Array.prototype.toReversed!=="function"){Object.defineProperty(Array.prototype,"toReversed",{value:function(){const clonedList=this.slice();const reversedList=clonedList.reverse();return reversedList},enumerable:false})}Object.defineProperty(Array.prototype,"append",{value:Array.prototype.push,enumerable:false});Object.defineProperty(String.prototype,"strip",{value:String.prototype.trim,enumerable:false});Object.defineProperty(String.prototype,"rstrip",{value:function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")},enumerable:false});function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function encodeUrl(str){if(typeof encodeURI=="function"){return encodeURI(str)}else{str=(str+"").toString();return encodeURIComponent(str).replace(/%2F/g,"/").replace(/%3F/g,"?").replace(/%3A/g,":").replace(/%40/g,"@").replace(/%3D/g,"=").replace(/%3A/g,":").replace(/%2C/g,",").replace(/%2B/g,"+").replace(/%24/g,"$")}}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function uint8ArrayToBase64(uint8Array){let binaryString=String.fromCharCode.apply(null,Array.from(uint8Array));return btoa(binaryString)}function Utf8ArrayToStr(array){var out,i,len,c;var char2,char3;out="";len=array.length;i=0;while(i<len){c=array[i++];switch(c>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=String.fromCharCode(c);break;case 12:case 13:char2=array[i++];out+=String.fromCharCode((c&31)<<6|char2&63);break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode((c&15)<<12|(char2&63)<<6|(char3&63)<<0);break}}return out}function gzip(str){let arr=pako.gzip(str,{});return uint8ArrayToBase64(arr)}function ungzip(b64Data){let strData=atob(b64Data);const charData=strData.split("").map(function(x){return x.charCodeAt(0)});const binData=new Uint8Array(charData);const data=pako.inflate(binData);return Utf8ArrayToStr(data)}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}const RSA={decode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let privateKey=this.getPrivateKey(key);const decryptor=new JSEncrypt;decryptor.setPrivateKey(privateKey);let uncrypted="";uncrypted=decryptor.decryptUnicodeLong(data);return uncrypted}else{return false}},encode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let publicKey=this.getPublicKey(key);const encryptor=new JSEncrypt;encryptor.setPublicKey(publicKey);let encrypted="";encrypted=encryptor.encryptUnicodeLong(data);return encrypted}else{return false}},fixKey(key,prefix,endfix){if(!key.includes(prefix)){key=prefix+key}if(!key.includes(endfix)){key+=endfix}return key},getPrivateKey(key){let prefix="-----BEGIN RSA PRIVATE KEY-----";let endfix="-----END RSA PRIVATE KEY-----";return this.fixKey(key,prefix,endfix)},getPublicKey(key){let prefix="-----BEGIN PUBLIC KEY-----";let endfix="-----END PUBLIC KEY-----";return this.fixKey(key,prefix,endfix)}};function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function fixAdM3u8(m3u8_text,m3u8_url,ad_remove){if(!m3u8_text&&!m3u8_url||!m3u8_text&&m3u8_url&&!m3u8_url.startsWith("http")){return""}if(!m3u8_text){log("m3u8_url:"+m3u8_url);m3u8_text=request(m3u8_url)}log("len(m3u8_text):"+m3u8_text.length);if(!ad_remove){return m3u8_text}if(ad_remove.startsWith("reg:")){ad_remove=ad_remove.slice(4)}else if(ad_remove.startsWith("js:")){ad_remove=ad_remove.slice(3)}let m3u8_start=m3u8_text.slice(0,m3u8_text.indexOf("#EXTINF")).trim();let m3u8_body=m3u8_text.slice(m3u8_text.indexOf("#EXTINF"),m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let m3u8_end=m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let murls=[];let m3_body_list=m3u8_body.split("\n");let m3_len=m3_body_list.length;let i=0;while(i<m3_len){let mi=m3_body_list[i];let mi_1=m3_body_list[i+1];if(mi.startsWith("#EXTINF")){murls.push([mi,mi_1].join("&"));i+=2}else if(mi.startsWith("#EXT-X-DISCONTINUITY")){let mi_2=m3_body_list[i+2];murls.push([mi,mi_1,mi_2].join("&"));i+=3}else{break}}let new_m3u8_body=[];for(let murl of murls){if(ad_remove&&new RegExp(ad_remove).test(murl)){}else{let murl_list=murl.split("&");if(!murl_list[murl_list.length-1].startsWith("http")&&m3u8_url.startsWith("http")){murl_list[murl_list.length-1]=urljoin(m3u8_url,murl_list[murl_list.length-1])}murl_list.forEach(it=>{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url,headers){let ts=(new Date).getTime();let option=headers?{headers:headers}:{};function b(s1,s2){let i=0;while(i<s1.length){if(s1[i]!==s2[i]){break}i++}return i}function reverseString(str){return str.split("").reverse().join("")}let m3u8=request(m3u8_url,option);m3u8=m3u8.trim().split("\n").map(it=>it.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");m3u8=m3u8.replace(/\n\n/gi,"\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.length<5){last_url=m3u8.split("\n").slice(-2)[0]}if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=urljoin2(m3u8_url,last_url);log("嵌套的m3u8_url:"+m3u8_url);m3u8=request(m3u8_url,option)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr="";let maxl=0;let kk=0;let kkk=2;let secondstr="";for(let i=0;i<ss.length;i++){let s=ss[i];if(!s.startsWith("#")){if(kk==0)firststr=s;if(kk==1)maxl=b(firststr,s);if(kk>1){if(maxl>b(firststr,s)){if(secondstr.length<5)secondstr=s;kkk=kkk+2}else{maxl=b(firststr,s);kkk++}}kk++;if(kk>=20)break}}if(kkk>30)firststr=secondstr;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let maxc=0;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);maxc++;if(firststrlen-maxl<=ml+k||maxc>10){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i<ss.length;i++){let s=ss[i];if(!s.startsWith("#")){if(b(firststr,s)<maxl){ad_urls.push(s);ss.splice(i-1,2);i=i-2}else{ss[i]=urljoin(m3u8_url,s)}}else{ss[i]=s.replace(/URI=\"(.*)\"/,'URI="'+urljoin(m3u8_url,"$1")+'"')}}log("处理的m3u8地址:"+m3u8_url);log("----广告地址----");log(ad_urls);m3u8=ss.join("\n");log("处理耗时:"+((new Date).getTime()-ts).toString());return m3u8}function forceOrder(lists,key,option){let start=Math.floor(lists.length/2);let end=Math.min(lists.length-1,start+1);if(start>=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];function getQuery(url){try{if(url.indexOf("?")>-1){url=url.slice(url.indexOf("?")+1)}let arr=url.split("#")[0].split("&");const resObj={};arr.forEach(item=>{let arr1=item.split("=");let key=arr1[0];let value=arr1.slice(1).join("=");resObj[key]=value});return resObj}catch(err){log(`getQuery发生错误:${e.message}`);return{}}}function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html="";if(this.api.endsWith("drpy/text")){html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true)}else{html=post(this.api,{body:img})}code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function $require(url){eval(request(url))}function keysToLowerCase(obj){return Object.keys(obj).reduce((result,key)=>{const newKey=key.toLowerCase();result[newKey]=obj[key];return result},{})}function parseQueryString(query){const params={};query.split("&").forEach(function(part){const regex=/^(.*?)=(.*)/;const match=part.match(regex);if(match){const key=decodeURIComponent(match[1]);const value=decodeURIComponent(match[2]);params[key]=value}});return params}function encodeIfContainsSpecialChars(value){const specialChars=":/?#[]@!$'()*+,;=%";if(specialChars.split("").some(char=>value.includes(char))){return encodeURIComponent(value)}return value}function objectToQueryString(obj){const encoded=[];for(let key in obj){if(obj.hasOwnProperty(key)){encoded.push(encodeURIComponent(key)+"="+encodeIfContainsSpecialChars(obj[key]))}}return encoded.join("&")}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA;if(typeof fetch_params==="object"&&fetch_params&&fetch_params.headers){let fetch_headers=keysToLowerCase(fetch_params.headers);if(fetch_headers["user-agent"]){headers["User-Agent"]=fetch_headers["user-agent"]}}}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}if(obj.redirect===false){obj.redirect=0}if(obj.headers.hasOwnProperty("Content-Type")||obj.headers.hasOwnProperty("content-type")){let _contentType=obj.headers["Content-Type"]||obj.headers["content-type"]||"";if(_contentType.includes("application/x-www-form-urlencoded")){log("custom body is application/x-www-form-urlencoded");if(typeof obj.body=="string"){let temp_obj=parseQueryString(obj.body);console.log(JSON.stringify(temp_obj))}}}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj=obj||{};obj.method="POST";return request(url,obj)}function reqCookie(url,obj,all_cookie){obj=obj||{};obj.withHeaders=true;all_cookie=all_cookie||false;let html=request(url,obj);let json=JSON.parse(html);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk]:"";if(Array.isArray(cookie)){cookie=cookie.join(";")}if(!all_cookie){cookie=cookie.split(";")[0]}html=json.body;return{cookie:cookie,html:html}}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){if(homeObj.class_parse.startsWith("js:")){var input=homeObj.MY_URL;try{eval(homeObj.class_parse.replace("js:",""));if(Array.isArray(input)){classes=input}}catch(e){log(`通过js动态获取分类发生了错误:${e.message}`)}}else{let p=homeObj.class_parse.split(";");let p0=p[0];let _ps=parseTags.getParse(p0);let is_json=p0.startsWith("json:");_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(is_json){try{let cms_cate_url=homeObj.MY_URL.replace("ac=detail","ac=list");let html=homeObj.home_html||getHtml(cms_cate_url);if(html){if(cms_cate_url===homeObj.MY_URL){homeHtmlCache=html}let list=_pdfa(html,p0.replace("json:",""));if(list&&list.length>0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=homeObj.home_html||getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]&&!homeObj.home_html){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表双层定位处理发生错误:${e.message}`)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表单层定位处理发生错误:${e.message}`)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}url=url.replaceAll("fyclass",cateObj.tid);let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print(`合并不同分类对应的默认筛选出错:${e.message}`)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl,fyclass:cateObj.tid});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}if(rule.searchNoPage&&Number(searchObj.pg)>1){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){let search_tag=rule.搜索验证标识||"系统安全验证|输入验证码";if(new RegExp(search_tag).test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print(`搜索发生错误:${e.message}`);return"{}"}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print(`格式化LISTS发生错误:${e.message}`)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print(`js执行lists: 发生错误:${e.message}`)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let list_url_prefix=p.list_url_prefix||"";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL);if(list_url_prefix){new_vod_list=new_vod_list.map(it=>it.split("$")[0]+"$"+list_url_prefix+it.split("$").slice(1).join("$"))}}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i<vodList.length;i++){let it=vodList[i];new_vod_list.push(_pdfh(it,list_text).trim()+"$"+list_url_prefix+_pd(it,list_url,MY_URL))}}if(new_vod_list.length>0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);try{vod=vodDeal(vod)}catch(e){console.log(`vodDeal发生错误:${e.message}`)}return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,url:input,flag:flag,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.trim();if(lazy_code.startsWith("js:")){lazy_code=lazy_code.replace("js:","").trim()}print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,jx:tellIsJx(input),url:input}}catch(e){print(`js免嗅错误:${e.message}`);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length>=3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log(`执行嗅探规则发生错误:${e.message}`);return false}}}function getOriginalJs(js_code){let current_match=/var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;if(current_match.test(js_code)){return js_code}let rsa_private_key="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";let decode_content="";function aes_decrypt(data){let key=CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");let iv=CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");let encrypted=CryptoJS.AES.decrypt({ciphertext:CryptoJS.enc.Base64.parse(data)},key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);return encrypted}let error_log=false;function logger(text){if(error_log){log(text)}}let decode_funcs=[text=>{try{return ungzip(text)}catch(e){logger("非gzip加密");return""}},text=>{try{return base64Decode(text)}catch(e){logger("非b64加密");return""}},text=>{try{return aes_decrypt(text)}catch(e){logger("非aes加密");return""}},text=>{try{return RSA.decode(text,rsa_private_key,null)}catch(e){logger("非rsa加密");return""}}];let func_index=0;while(!current_match.test(decode_content)){decode_content=decode_funcs[func_index](js_code);func_index++;if(func_index>=decode_funcs.length){break}}return decode_content}function runMain(main_func_code,arg){let mainFunc=function(){return""};try{eval(main_func_code+"\nmainFunc=main;");return mainFunc(arg)}catch(e){log(`执行main_funct发生了错误:${e.message}`);return""}}function init(ext){console.log("init");rule={};rule_fetch_params={};fetch_params=null;try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){let is_file=ext.startsWith("file://");if(ext.startsWith("http")||is_file){let query=getQuery(ext);if(is_file){ext=ext.split("?")[0]}let js=request(ext,{method:"GET"});if(js){js=getOriginalJs(js);eval("(function(){"+js.replace("var rule","rule")+"})()")}if(query.type==="url"&&query.params){if(is_file&&/^http/.test(query.params)){rule.params=query.params}else{rule.params=urljoin(ext,query.params)}}else if(query.params){rule.params=query.params}}else{ext=getOriginalJs(ext);eval("(function(){"+ext.replace("var rule","rule")+"})()")}}else{console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);return}rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)}}if(rule["模板"]==="自动"){try{let host_headers=rule["headers"]||{};let host_html=getCode(HOST,{headers:host_headers});let match_muban="";let muban_keys=Object.keys(muban).filter(it=>!/默认|短视2|采集1/.test(it));for(let muban_key of muban_keys){try{let host_data=JSON.parse(home({},host_html,muban[muban_key].class_parse));if(host_data.class&&host_data.class.length>0){match_muban=muban_key;console.log(`自动匹配模板:【${muban_key}】`);break}}catch(e){console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)}}if(match_muban){muban["自动"]=muban[match_muban];if(rule["模板修改"]&&rule["模板修改"].startsWith("js:")){eval(rule["模板修改"].replace("js:","").trim())}}else{delete rule["模板"]}}catch(e){delete rule["模板"]}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.类型=rule.类型||"影视";rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";if(!rule.hasOwnProperty("sniffer")){rule.sniffer=false}rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";if(rule.sniffer&&!rule.isVideo){rule.isVideo="http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"}rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:${e.message}`)}}}}}catch(e){console.log(`处理headers发生错误:${e.message}`)}}else{rule.headers={}}oheaders=deepCopy(rule.headers);rule_fetch_params={headers:rule.headers,timeout:rule.timeout,encoding:rule.encoding};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log(`init_test发生错误:${e.message}`)}}let homeHtmlCache=undefined;function home(filter,home_html,class_parse){console.log("home");home_html=home_html||"";class_parse=class_parse||"";if(typeof rule.filter==="string"&&rule.filter.trim().length>0){try{let filter_json=ungzip(rule.filter.trim());rule.filter=JSON.parse(filter_json)}catch(e){rule.filter={}}}let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:class_parse||rule.class_parse||"",cate_exclude:rule.cate_exclude,home_html:home_html};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function getRule(key){return key?rule[key]||"":rule}function deepCopy(_obj){return JSON.parse(JSON.stringify(_obj))}function matchesAll(str,pattern,flatten){if(!pattern.global){pattern=new RegExp(pattern.source,"g"+(pattern.ignoreCase?"i":"")+(pattern.multiline?"m":""))}var matches=[];var match;while((match=pattern.exec(str))!==null){matches.push(match)}return flatten?matches.flat():matches}function stringUtils(){Object.defineProperties(String.prototype,{replaceX:{value:function(regex,replacement){let matches=matchesAll(this,regex,true);if(matches&&matches.length>1){const hasCaptureGroup=/\$\d/.test(replacement);if(hasCaptureGroup){return this.replace(regex,m=>m.replace(regex,replacement))}else{return this.replace(regex,(m,p1)=>m.replace(p1,replacement))}}return this.replace(regex,replacement)},configurable:true,enumerable:false,writable:true},parseX:{get:function(){try{return JSON.parse(this)}catch(e){console.log(e.message);return this.startsWith("[")?[]:{}}},configurable:true,enumerable:false}})}function cut(text,start,end,method,All){let result="";let c=(t,s,e)=>{let result="";let rs=[];let results=[];try{let lr=new RegExp(String.raw`${s}`.toString());let rr=new RegExp(String.raw`${e}`.toString());const segments=t.split(lr);if(segments.length<2)return"";let cutSegments=segments.slice(1).map(segment=>{let splitSegment=segment.split(rr);return splitSegment.length<2?undefined:splitSegment[0]+e}).filter(f=>f);if(All){return`[${cutSegments.join(",")}]`}else{return cutSegments[0]}}catch(e){console.log(`Error cutting text:${e.message}`)}return result};result=c(text,start,end);stringUtils();if(method&&typeof method==="function"){result=method(result)}return result}function DRPY(){return{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai}}export default{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai,DRPY:DRPY};
var rule = { title: "斗鱼直播", host: "https://m.douyu.com", homeUrl: "/api/home/mix", url: "/api/room/list?page=fypage&type=fyfilter", filterable: 1, filter_url: "{{fl.cateId}}", filter: { yl: [{ key: "cateId", name: "分类", value: [{ n: "原创IP", v: "ip" }, { n: "一起看", v: "yqk" }, { n: "二次元", v: "ecy" }, { n: "音乐", v: "music" }, { n: "户外", v: "HW" }, { n: "美食", v: "ms" }, { n: "心动派对", v: "xdpd" }, { n: "音遇恋人", v: "yinyu" }, { n: "星秀", v: "xingxiu" }, { n: "心动FM", v: "dtxs" }, { n: "娱乐推荐", v: "yltj" }, { n: "新选", v: "xinxuan" }] }], PCgame: [{ key: "cateId", name: "分类", value: [{ n: "英雄联盟", v: "LOL" }, { n: "热门游戏", v: "rmyx" }, { n: "穿越火线", v: "CF" }, { n: "重生边缘", v: "CSBYOL" }, { n: "无畏契约", v: "VALORANT" }, { n: "CFHD", v: "CFHD" }, { n: "命运方舟", v: "LostArk" }, { n: "DNF", v: "DNF" }, { n: "DOTA2", v: "DOTA2" }, { n: "使命召唤", v: "COD" }, { n: "炉石传说", v: "How" }, { n: "CS2", v: "CounterStrike" }, { n: "lol云顶之弈", v: "ydzhy" }, { n: "魔兽争霸", v: "mszb" }, { n: "魔兽怀旧服", v: "wowclassic" }, { n: "全民街篮", v: "qmjl" }, { n: "自走棋", v: "dota2rpg" }, { n: "传奇", v: "cq" }, { n: "跑跑卡丁车", v: "Popkart" }, { n: "网易游戏", v: "wyyx" }, { n: "星际争霸", v: "SC" }, { n: "守望先锋", v: "Overwatch" }, { n: "DOTA", v: "DOTA" }, { n: "魔兽世界", v: "WOW" }, { n: "剑网3", v: "JX3" }, { n: "魔域", v: "EudemonsOnline" }, { n: "我的世界", v: "MC" }, { n: "超激斗梦境", v: "cjdmj" }, { n: "冒险岛", v: "mxd" }, { n: "三国杀", v: "sanguosha" }, { n: "梦幻西游", v: "MHXYOL" }, { n: "天涯明月刀", v: "tianya" }, { n: "街头篮球", v: "jtlq" }, { n: "NBA2KOL2", v: "NBA2KOL2" }, { n: "QQ飞车端游", v: "qqfcdy" }, { n: "战地之王", v: "AVA" }, { n: "军事游戏", v: "jsyx" }, { n: "棋牌娱乐", v: "qipai" }, { n: "FC ONLINE", v: "FCOL" }, { n: "热门网游", v: "rmwy" }, { n: "卡拉彼丘", v: "klbq" }, { n: "诛仙世界", v: "zxsj" }, { n: "千古风流", v: "qgflpc" }, { n: "APEX", v: "APEX" }, { n: "流放之路POE", v: "PathofExile" }, { n: "剑网3缘起", v: "JW3YQ" }, { n: "逆水寒", v: "nsh" }, { n: "风暴英雄", v: "HOTS" }, { n: "逆战", v: "NZ" }, { n: "坦克世界", v: "TKSJ" }, { n: "战舰世界", v: "wfws" }, { n: "巫师之昆特牌", v: "wszktp" }, { n: "反恐精英Online", v: "CS" }, { n: "暗黑破坏神", v: "DIABLO" }, { n: "梦三国2", v: "msg2" }, { n: "传奇世界", v: "cqsj" }, { n: "方舟:生存进化", v: "fzscjh" }, { n: "神武4电脑版", v: "swdnb" }, { n: "群雄逐鹿", v: "qxzl" }, { n: "堡垒之夜", v: "blzy" }, { n: "无限法则", v: "roe" }, { n: "问道电脑版", v: "wddnb" }, { n: "西山居游戏", v: "Seasun" }, { n: "最终幻想14", v: "FF14" }, { n: "战意", v: "WYZY" }, { n: "剑灵", v: "BladeSoul" }, { n: "星际战甲", v: "Warframe" }, { n: "龙之谷", v: "DragonNest" }, { n: "铁甲雄兵", v: "tjxb" }, { n: "古剑奇谭网络版", v: "gjqtwlb" }, { n: "轩辕传奇", v: "XYCQ" }, { n: "神途", v: "shentu" }, { n: "激战2", v: "GuildWars2" }, { n: "高达文化区", v: "gdyxq" }, { n: "忍者村大战2", v: "rzcdz2" }, { n: "RPG网游专区", v: "rpgwyzq" }, { n: "诛仙3", v: "zhuxian3" }, { n: "笑傲江湖OL", v: "xajhol" }, { n: "冒险岛2", v: "MXD2" }, { n: "超击突破", v: "SuperPeople" }, { n: "无尽战区", v: "WJZQ" }, { n: "斗战神", v: "dzs" }, { n: "永恒之塔", v: "AION" }, { n: "九阴真经", v: "JYZJ" }, { n: "FPS综合网游", v: "FPSOL" }, { n: "劲舞团", v: "jwt" }, { n: "天下", v: "tianxai" }, { n: "泡泡堂", v: "ppt" }, { n: "武侠乂", v: "wxy" }, { n: "音乐游戏", v: "MG" }, { n: "新倩女幽魂", v: "ONLINE" }, { n: "天谕", v: "tianyu" }, { n: "征途2", v: "zhengtu2" }, { n: "QQ炫舞", v: "qqxw" }, { n: "泰亚史诗", v: "tyss" }, { n: "怪物猎人ol", v: "MHol" }, { n: "手工星球", v: "sgxq" }, { n: "星战前夜:晨曦", v: "EVE" }, { n: "热血传奇:本源", v: "rxcqhjsgb" }, { n: "枪火重生", v: "qhcs" }, { n: "彩虹岛", v: "CHD" }, { n: "御龙在天", v: "YLZT" }, { n: "英魂之刃", v: "YHZR" }, { n: "自由篮球", v: "ZYLQ" }, { n: "洛奇英雄传", v: "LQYXZ" }, { n: "封印者", v: "FYZ" }, { n: "合金弹头", v: "HJDT" }, { n: "新英雄年代", v: "XYXSD" }, { n: "星尘传说", v: "XCCS" }, { n: "盛趣游戏", v: "SQYX" }, { n: "新热血英豪", v: "XRXYH" }, { n: "沙盒游戏", v: "SHYX" }, { n: "我的世界:地下城", v: "MD" }, { n: "恐鬼症", v: "KGZ" }, { n: "领地人生", v: "LDRS" }, { n: "梦塔防", v: "TDOTK" }, { n: "大话西游2", v: "dhxy2" }, { n: "猎人", v: "lr" }, { n: "热血江湖online", v: "rxjhol" }, { n: "千年3", v: "qn3" }, { n: "逍遥情缘", v: "xyqy" }, { n: "快乐西游", v: "klxy" }, { n: "鹿鼎记", v: "ldj" }, { n: "新桃花源记", v: "xthyj" }, { n: "疾风之刃电脑版", v: "jfzr1" }, { n: "武魂2电脑版", v: "wh2pc" }, { n: "奇迹世界sun", v: "qjsjsun" }, { n: "剑侠世界2电脑版", v: "jxsj2pc" }, { n: "斩魂", v: "zhpc" }, { n: "大唐2", v: "dt2pc" }, { n: "蜀山:初章", v: "ssczpc" }, { n: "狼人对决网游", v: "lrdjpc" }, { n: "武林群侠传", v: "wlqxzpc" }, { n: "飘流幻境", v: "plhjpc" }, { n: "破天一剑", v: "ptyj" }, { n: "四国军棋", v: "sgjq" }, { n: "新大话西游3", v: "xy3" }, { n: "装甲战争", v: "zjzz" }, { n: "暴雪游戏综合", v: "g_bliz" }, { n: "长尾4部虚拟分区", v: "cw4bxnfq" }, { n: "燕云十六声", v: "WHEREWINDSMEET" }, { n: "THE FINALS", v: "THEFINALS" }, { n: "NBA2K Online", v: "NBA2KOL" }, { n: "塔瑞斯世界", v: "Tarisland" }, { n: "跑跑卡丁车:漂移", v: "KartRiderDrift" }, { n: "传奇永恒", v: "EternalLegend" }, { n: "全境封锁2", v: "TheDivision2" }, { n: "盛趣传奇", v: "sqcq" }, { n: "火爆热游", v: "hbry" }, { n: "火爆传奇", v: "hbcq" }] }], djry: [{ key: "cateId", name: "分类", value: [{ n: "主机游戏", v: "TVgame" }, { n: "刺客信条:英灵殿", v: "AC" }, { n: "马里奥制造", v: "Mario" }, { n: "逃离塔科夫", v: "EFT" }, { n: "命运2", v: "MY2" }, { n: "恐怖游戏", v: "Horror" }, { n: "荒野大镖客", v: "hydbk" }, { n: "灵魂筹码", v: "lhcm" }, { n: "骑马与砍杀", v: "MountAndBlade" }, { n: "只狼", v: "ZL" }, { n: "格斗游戏", v: "FTG" }, { n: "饥荒", v: "DontStarve" }, { n: "全境封锁", v: "qjfs" }, { n: "怀旧游戏", v: "classic" }, { n: "NBA2K", v: "NBA2K" }, { n: "八方旅人", v: "OT" }, { n: "血污:夜之仪式", v: "Blood" }, { n: "人类一败涂地", v: "Human" }, { n: "环世界", v: "RimWorld" }, { n: "古墓丽影", v: "gmly" }, { n: "鬼泣", v: "DMC" }, { n: "往日不再", v: "WRBZ" }, { n: "仙剑奇侠传", v: "PAL" }, { n: "神秘海域", v: "Uncharted" }, { n: "塞尔达系列", v: "TLoZ" }, { n: "僵尸世界大战", v: "WWZ" }, { n: "足球游戏", v: "zq" }, { n: "橙光", v: "cg" }, { n: "了不起的修仙模拟器", v: "ACS" }, { n: "女神异闻录", v: "P5" }, { n: "超级马里奥", v: "SMO" }, { n: "三国志系列", v: "Sangokushi" }, { n: "最终幻想", v: "FF" }, { n: "中土世界:战争之影", v: "MiddleEarth" }, { n: "流放者柯南", v: "Conan" }, { n: "三国群英传", v: "SANGO" }, { n: "无主之地", v: "Bor" }, { n: "辐射", v: "fs" }, { n: "SCUM", v: "Scum" }, { n: "文明", v: "CVI" }, { n: "仁王", v: "NIOH" }, { n: "缺氧", v: "ONI" }, { n: "全面吃鸡模拟器", v: "TAB" }, { n: "古剑奇谭", v: "GuJian3" }, { n: "皇牌空战", v: "hpkz" }, { n: "体育游戏", v: "tyyx" }, { n: "海岛大亨", v: "hddh" }, { n: "碧海黑帆", v: "klhdt" }, { n: "植物大战僵尸:花园战争系列", v: "PvsZ" }, { n: "蜘蛛侠", v: "Spide" }, { n: "勇者斗恶龙:建造者2", v: "DQB2" }, { n: "遗迹:灰烬重生", v: "Rem" }, { n: "血源", v: "BB" }, { n: "旺达与巨像", v: "SotC" }, { n: "死亡搁浅", v: "DS" }, { n: "模拟人生", v: "Sims" }, { n: "空洞骑士", v: "HKS" }, { n: "胡闹厨房", v: "Overcooked" }, { n: "地铁:离去", v: "ME" }, { n: "生死狙击2", v: "ssjjtwo" }, { n: "三国战纪", v: "sgzj" }, { n: "怀旧FC", v: "edwcy" }, { n: "经典单机", v: "jddj" }, { n: "英雄无敌", v: "HoMM" }, { n: "街机游戏", v: "jjyx" }, { n: "合金装备", v: "MetalGear" }, { n: "红色警戒", v: "hsjj" }, { n: "镜之边缘", v: "MsE" }, { n: "勿忘我", v: "Remw" }, { n: "火焰纹章系列", v: "FireEmblem" }, { n: "星露谷物语", v: "Stardew" }, { n: "火炬之光", v: "Torchlight" }, { n: "赛博朋克2077", v: "Cyberpunk" }, { n: "中国式家长", v: "CP" }, { n: "精灵宝可梦系列", v: "Pokemon" }, { n: "尼尔:机械纪元", v: "NieR" }, { n: "无人深空", v: "NMS" }, { n: "EVOTINCTION", v: "EVOTINCTION" }, { n: "GT赛车7", v: "GT" }, { n: "超级机器人大战", v: "SRW" }, { n: "这是我的战争", v: "TWoM" }, { n: "杀戮尖塔", v: "sljt" }, { n: "冰汽时代", v: "Frostpunk" }, { n: "帝国时代", v: "AoEIV" }, { n: "死亡空间", v: "swkj" }, { n: "凯瑟琳Full Body", v: "CFB" }, { n: "足球经理", v: "Football" }, { n: "雨中冒险", v: "RoR" }, { n: "亿万僵尸", v: "Billions" }, { n: "武装突袭", v: "ArmA" }, { n: "石油大亨", v: "Oil" }, { n: "欧洲卡车模拟器", v: "Truck" }, { n: "美国逃亡者", v: "Fugitive" }, { n: "漫漫长夜", v: "mmcy" }, { n: "永恒轮回", v: "Survival" }, { n: "孤岛惊魂", v: "FarCry" }, { n: "都市:天际线", v: "Skylines" }, { n: "盗贼之海", v: "hdzh" }, { n: "Dayz", v: "DayZ" }, { n: "60秒", v: "60S" }, { n: "俄罗斯钓鱼", v: "RF" }, { n: "猎人:荒野的召唤", v: "theHunter" }, { n: "恐怖黎明", v: "GD" }, { n: "看门狗", v: "kmg" }, { n: "真三国无双", v: "DW" }, { n: "战斗砖块剧场", v: "BT" }, { n: "泰拉瑞亚", v: "Terraria" }, { n: "异星工厂", v: "Factorio" }, { n: "UFC", v: "UFC" }, { n: "底特律:变人", v: "Detroit" }, { n: "恶魔城", v: "Castlevania" }, { n: "毁灭战士", v: "Doom" }, { n: "火影忍者:究极忍者风暴", v: "Naruto" }, { n: "坎巴拉太空计划", v: "Kerbal" }, { n: "龙珠:超宇宙", v: "DBX" }, { n: "马里奥赛车", v: "MarioKart" }, { n: "欧陆风云", v: "EU" }, { n: "乞丐模拟器", v: "HoboToughLife" }, { n: "小偷模拟器", v: "ThiefSimulator" }, { n: "逆转裁判", v: "AceA" }, { n: "超越光速", v: "FTL" }, { n: "植物大战僵尸", v: "PvZ" }, { n: "游戏开发者", v: "GGM" }, { n: "最后的绿洲", v: "LO" }, { n: "大富翁", v: "RichMan" }, { n: "反恐精英", v: "fkjy" }, { n: "英雄连", v: "yxl" }, { n: "永劫无间", v: "NB" }, { n: "初音未来:歌姬计划", v: "MIKU" }, { n: "部落与弯刀", v: "BLYWD" }, { n: "一起开火车!", v: "Unrailed" }, { n: "霓虹深渊", v: "NA" }, { n: "主机其他游戏", v: "OG" }, { n: "战场兄弟", v: "ZCXD" }, { n: "地狱潜者", v: "DYQZ" }, { n: "地下城", v: "dxc" }, { n: "人间地狱", v: "RJDY" }, { n: "temtem", v: "temtem" }, { n: "弹丸论破", v: "dwlp" }, { n: "皇家美食", v: "HJMS" }, { n: "基佬大乱斗", v: "jldld" }, { n: "僵尸毁灭工程", v: "jshmgc" }, { n: "岛屿生存者", v: "Sur" }, { n: "冬日计划", v: "drjh" }, { n: "四海兄弟", v: "shxd" }, { n: "创世理想乡", v: "Craftopia" }, { n: "柯娜:精神之桥", v: "Kena" }, { n: "幽灵线:东京", v: "GTO" }, { n: "Solar Ash", v: "Ash" }, { n: "BUGSNAX", v: "BUGSNAX" }, { n: "生化危机4重制版", v: "ResidentEvil" }, { n: "Grounded", v: "Grounded" }, { n: "Superliminal", v: "Superliminal" }, { n: "Omno", v: "Omno" }, { n: "Röki", v: "Roki" }, { n: "Undungeon", v: "Undungeon" }, { n: "糖豆人", v: "FallGuys" }, { n: "渡神纪", v: "Gods" }, { n: "Aeolis Tournament", v: "Aeolis" }, { n: "猛兽派对", v: "Animals" }, { n: "Olija", v: "Olija" }, { n: "Creaks", v: "Creaks" }, { n: "暗影火炬城", v: "FIST" }, { n: "阿尔比恩", v: "Albion" }, { n: "Uragun", v: "Uragun" }, { n: "戴森球计划", v: "DSP" }, { n: "Muse Dash", v: "MuseDash" }, { n: "恐惧之间", v: "Fearsurrounds" }, { n: "孤岛惊魂6", v: "FarCry6" }, { n: "怪物猎人", v: "MonsterHunterRise" }, { n: "黑神话:悟空", v: "BlackMythWuKong" }, { n: "仁王2", v: "Nioh2" }, { n: "三国群英传8", v: "TheThreeKingdoms8" }, { n: "三国志14", v: "THREEKINGDOMSXIV" }, { n: "杀手3", v: "Hitman3" }, { n: "双人成行", v: "ittakestwo" }, { n: "Scrapnaut", v: "Scrapnaut" }, { n: "租房达人", v: "TheTenants" }, { n: "狙击手:幽灵战士契约2", v: "SniperContracts2" }, { n: "全面战争", v: "TotalWarWARHAMMER" }, { n: "复体", v: "TheComplex" }, { n: "战争机器:战术小队", v: "GearsTactics" }, { n: "海绵宝宝:比奇堡的冒险", v: "BattleforBikini" }, { n: "分离", v: "Disintegration" }, { n: "奇妙探险队2", v: "CuriousExpedition2" }, { n: "刺客信条:奥德赛", v: "Odyssey" }, { n: "丧尸围城4", v: "DeadRising4" }, { n: "星球大战:前线", v: "Battlefront" }, { n: "Moonray", v: "Moonray" }, { n: "灵魂旅人", v: "SpiritFarerlhlr" }, { n: "面容", v: "Visage" }, { n: "车祸现场模拟器", v: "Accident" }, { n: "破门而入2:北方特遣队", v: "DoorKickers2" }, { n: "俄罗斯方块效应:连接", v: "TetrisEffect" }, { n: "SD高达G世纪:起源", v: "SDGundamG" }, { n: "东方计划:不可思议的幻想乡", v: "TouHou" }, { n: "Fate/EXTELLA", v: "FateEXTELLA" }, { n: "临终:重生试炼", v: "DYINGReborn" }, { n: "虚拟现实乐园", v: "VRWorlds" }, { n: "苍翼默示录:神观之梦", v: "CentralFiction" }, { n: "晚班", v: "LateShift" }, { n: "子弹风暴", v: "Bulletstorm" }, { n: "巡警", v: "BeatCop" }, { n: "耻辱之日", v: "DayofInfamy" }, { n: "狙击精英4", v: "SniperElite4" }, { n: "热血物语:地下世界", v: "RiverCityRansom" }, { n: "史诗战争模拟器", v: "BattleSimulator" }, { n: "银河护卫队", v: "Guardians" }, { n: "上古卷轴:传奇", v: "ScrollsLegends" }, { n: "闪乱神乐:少女们的选择", v: "SenranKagura" }, { n: "幽灵行动:荒野", v: "GhostReconWildland" }, { n: "白色情人节", v: "WhiteDay" }, { n: "誓死坚守", v: "UntilWeDie" }, { n: "狂战传说", v: "TalesofBerseria" }, { n: "双截龙4", v: "DoubleDragon4" }, { n: "地下蚁国", v: "Undergrowth" }, { n: "寻找天堂", v: "findparadise" }, { n: "画中世界", v: "Gorogoa" }, { n: "现代战争", v: "ModernCombat" }, { n: "绯红结系", v: "SCARLETNEXUS" }, { n: "罪恶装备:STRIVE", v: "GuiltyGear" }, { n: "涅克罗蒙达:赏金猎人", v: "NHiredGun" }, { n: "骑士精神2", v: "Chivalry2" }, { n: "Rune Knights", v: "RuneKnights" }, { n: "红至日2:幸存者", v: "TheRed2" }, { n: "真女神转生3", v: "ShinMegami3" }, { n: "速降王者", v: "Descenders" }, { n: "工业崛起", v: "RiseIndustry" }, { n: "前往中世纪", v: "GoMedieval" }, { n: "Arid", v: "Arid" }, { n: "伊始之地", v: "TerraNil" }, { n: "进击的巨人2", v: "AttackonTitan2" }, { n: "魔域之书", v: "Bookofdevil" }, { n: "自由人:游击战争", v: "Freeman" }, { n: "战国无双5", v: "SWarriors5" }, { n: "不要喂食猴子", v: "NotFeedMonkeys" }, { n: "古剑奇谭3", v: "GuJianqitan3" }, { n: "剑士", v: "KenshiJS" }, { n: "GRIS", v: "GRIS" }, { n: "古剑奇谭:永夜", v: "gujianyongye" }, { n: "永恒边缘", v: "EdgeEternity" }, { n: "Below", v: "Below" }, { n: "彩虹坠入", v: "IrisFall" }, { n: "嗜血印", v: "BloodySpell" }, { n: "兽人必须死3", v: "OrcsDie3" }, { n: "狙击精英VR", v: "SniperEliteVR" }, { n: "遗忘之城", v: "ForgotCity" }, { n: "Last Stop", v: "LastStop" }, { n: "边界之外", v: "OutofLine" }, { n: "从军", v: "jointhearmy" }, { n: "石炉", v: "Stonehearth" }, { n: "狂热运输2", v: "TransportFever2" }, { n: "机甲战士5", v: "MechWarrior5" }, { n: "PICO PARK", v: "PICOPARK" }, { n: "光明记忆:无限", v: "Brightmemory" }, { n: "秘馆疑踪", v: "HeavenDust" }, { n: "侠盗公司", v: "RogueCompany" }, { n: "英雄传说:创之轨迹", v: "HajimariNOKiseki" }, { n: "战地系列", v: "Battlefiel" }, { n: "塞尔达传说:天空之剑HD", v: "SkywardSword" }, { n: "尘埃异变", v: "GRIME" }, { n: "异形:火力小队精英", v: "FireteamElite" }, { n: "12分钟", v: "TwelveMinutes" }, { n: "九十六号公路", v: "Road96" }, { n: "FORECLOSED", v: "FORECLOSED" }, { n: "RiMS Racing", v: "RiMSRacing" }, { n: "钢铁之尾", v: "TailsofIron" }, { n: "剑侠图", v: "JianXiaTu" }, { n: "审判之逝", v: "Lostjudgment" }, { n: "帝国神话", v: "mythofempires" }, { n: "艾尔登法环", v: "ELDENRING" }, { n: "极限竞速:地平线5", v: "ForzaHorizon5" }, { n: "使命召唤系列", v: "CALLOFDUTYCOD" }, { n: "网吧模拟器", v: "InternetCS" }, { n: "The Anacrusis", v: "TheAnacrusis" }, { n: "浩劫前夕", v: "TheDayBefore" }, { n: "文字游戏", v: "WordGame" }, { n: "消逝的光芒2", v: "DyingLight2" }, { n: "无主之地3", v: "Borderlands3" }, { n: "战神:诸神黄昏", v: "GodofWarRagnarok" }, { n: "海上狼人杀", v: "DreadHunger" }, { n: "侠乂行:浪迹天涯", v: "XIAYIXING" }, { n: "最终幻想:起源", v: "STRANGEROFPARADISE" }, { n: "HordeCore", v: "HordeCore" }, { n: "双子星:盛气凌人", v: "YoungSouls" }, { n: "Indies’ Lies", v: "IndiesLies" }, { n: "Deck of Ashes", v: "DeckofAshes" }, { n: "星空", v: "Starfield" }, { n: "Ilysia", v: "Ilysia" }, { n: "Project Q", v: "ProjectQ" }, { n: "Pummel Party", v: "PummelParty" }, { n: "Holomento", v: "Holomento" }, { n: "Overprime", v: "Overprime" }, { n: "森林之子", v: "SonsOfTheForest" }, { n: "弈仙牌", v: "yixianpai" }, { n: "夜族崛起", v: "VRising" }, { n: "罗马复兴", v: "RomanRenaissance" }, { n: "萤火突击", v: "LostLight" }, { n: "High on Life", v: "HighonLife" }, { n: "匹诺曹的谎言", v: "LiesofP" }, { n: "Isonzo", v: "Isonzo" }, { n: "瘟疫传说:安魂曲", v: "Requiem" }, { n: "漂泊牧歌", v: "WanderingVillage" }, { n: "塞尔达传说:王国之泪", v: "TEARSKINGDOM" }, { n: "破碎线", v: "Shatterline" }, { n: "卧龙:苍天陨落", v: "Wolong" }, { n: "卡库远古封印", v: "KAKU" }, { n: "原子之心", v: "AtomicHeart" }, { n: "Warhaven", v: "Warhaven" }, { n: "宝可梦:朱/紫", v: "ScarletandViolet" }, { n: "Evercore Heroes", v: "EvercoreHeroes" }, { n: "灵魂石幸存者", v: "SoulstoneSurvivors" }, { n: "主机一起看", v: "zjyqk" }, { n: "社交互动游戏", v: "SJHDYX" }, { n: "轮回修仙路", v: "lhxxl" }, { n: "Divine Knockout", v: "DivineKnockout" }, { n: "至暗时刻", v: "DarkandDarker" }, { n: "自杀小队:杀死正义联盟", v: "KTJL" }, { n: "XDefiant", v: "XDefiant" }, { n: "Warlander", v: "Warlander" }, { n: "Scars Above", v: "ScarsAbove" }, { n: "Pacific Drive", v: "PacificDrive" }, { n: "最终幻想16", v: "FinalFantasyXVI" }, { n: "街头霸王", v: "StreetFighter" }, { n: "Tchia", v: "Tchia" }, { n: "大侠立志传", v: "HerosAdventure" }, { n: "最后纪元", v: "LastEpoch" }, { n: "魔戒:咕噜", v: "Gollum" }, { n: "Prison Life 2", v: "PrisonLife" }, { n: "Innchanted", v: "Innchanted" }, { n: "幻兽帕鲁", v: "Palworld" }, { n: "Life by You", v: "LifebyYou" }, { n: "Eresys", v: "Eresys" }, { n: "Pax Dei", v: "PaxDei" }, { n: "Teravit", v: "Teravit" }, { n: "Caliber", v: "Caliber" }, { n: "沙盒与副本:英勇之地", v: "HerosLand" }, { n: "Coridden", v: "Coridden" }, { n: "Unrecord", v: "Unrecord" }, { n: "Deducto 2", v: "Deducto2" }, { n: "装甲核心6:境界天火", v: "ArmoredCore" }, { n: "Wayfinder", v: "Wayfinder" }, { n: "迷瘴纪事", v: "MiasmaChronicles" }, { n: "Minigame Madness", v: "MinigameMadness" }, { n: "严阵以待", v: "ReadyorNot" }, { n: "上古卷轴OL", v: "TheElderScrolls" }, { n: "弹幕风暴", v: "dmfb" }, { n: "学园构想家", v: "SchoolHomeroom" }, { n: "弈仙牌手游", v: "YiXianm" }, { n: "Jusant", v: "JUSANT" }, { n: "潜水员戴夫", v: "DAVETHEDIVER" }, { n: "GYLT", v: "GYLT" }, { n: "索利斯堡", v: "FortSolis" }, { n: "Towerborne", v: "Towerborne" }, { n: "33 Immortals", v: "33Immortals" }, { n: "Wildmender", v: "Wildmender" }, { n: "How 2 Escape", v: "How2Escape" }, { n: "碧蓝幻想:Relink", v: "Relink" }, { n: "漫威蜘蛛侠2", v: "MarvelSpiderman2" }, { n: "王权与自由", v: "ThroneandLiberty" }, { n: "博德之门3", v: "BG3" }, { n: "Eternights", v: "Eternights" }, { n: "Project F", v: "ProjectF" }, { n: "BaldMan Climbs Up", v: "BaldManClimbsUp" }, { n: "FC24", v: "FC24" }, { n: "NBA 2K24", v: "NBA2K24" }, { n: "沉没之地", v: "Sunkenland" }, { n: "七日世界", v: "qrsj" }, { n: "雾锁王国", v: "wswg" }] }], syxx: [{ key: "cateId", name: "分类", value: [{ n: "元梦之星", v: "YMZX" }, { n: "王者荣耀", v: "wzry" }, { n: "LOL手游", v: "LOLM" }, { n: "崩坏:星穹铁道", v: "bhxqtd" }, { n: "和平精英", v: "hpjy" }, { n: "暗区突围", v: "aqtw" }, { n: "蛋仔派对", v: "dzpd" }, { n: "高能英雄", v: "gnyx" }, { n: "幻塔", v: "ht" }, { n: "火影忍者", v: "hyrz" }, { n: "COD手游", v: "smzhsy" }, { n: "lol电竞经理", v: "EGAME" }, { n: "DNF手游", v: "mdnf" }, { n: "金铲铲之战", v: "JGAME" }, { n: "天刀手游", v: "tdsy" }, { n: "原神", v: "yuanshen" }, { n: "航海王热血航线", v: "HHWRXHX" }, { n: "逆水寒手游", v: "NSHM" }, { n: "万国觉醒", v: "wgjx" }, { n: "鸿图之下", v: "htzx" }, { n: "欢乐麻将", v: "HLMJ" }, { n: "王者模拟战", v: "wzrpg" }, { n: "中国象棋", v: "ZGXQ" }, { n: "天谕手游", v: "tysy" }, { n: "巅峰坦克", v: "DFTK" }, { n: "新游中心", v: "xyzx" }, { n: "热门手游", v: "phone" }, { n: "梦幻手游", v: "mhxy" }, { n: "QQ飞车", v: "qqfcsy" }, { n: "第五人格", v: "dwrg" }, { n: "欢乐斗地主", v: "hlddz" }, { n: "荒野乱斗", v: "hyld" }, { n: "阴阳师", v: "yys" }, { n: "狼人杀", v: "LRS" }, { n: "JJ斗地主", v: "jj" }, { n: "梦幻新诛仙", v: "mhxzx" }, { n: "街霸对决", v: "jbdj" }, { n: "机动都市阿尔法", v: "jddsaef" }, { n: "一人之下", v: "yrzx" }, { n: "多多自走棋", v: "zzq" }, { n: "崩坏3", v: "bhxl" }, { n: "风云岛行动", v: "fydxd" }, { n: "云游戏", v: "cloudgame" }, { n: "跑跑手游", v: "PPKDCSY" }, { n: "率土之滨", v: "stzb" }, { n: "灌篮高手", v: "glgs" }, { n: "皇室战争", v: "hszz" }, { n: "忍者必须死3", v: "rzbxs3" }, { n: "神武4手游", v: "sw3" }, { n: "梦幻模拟战", v: "mhmnz" }, { n: "实况足球", v: "skzq" }, { n: "剑与远征", v: "jyyz" }, { n: "航海王:燃烧意志", v: "hhwrsyz" }, { n: "球球大作战", v: "qqdzz" }, { n: "英雄杀", v: "yxs" }, { n: "魔域口袋版", v: "mykdb" }, { n: "口袋新旅程", v: "KDXLC" }, { n: "剑网3:指尖江湖", v: "jw3zjjh" }, { n: "部落冲突", v: "blct" }, { n: "剑与家园", v: "jyjy" }, { n: "新笑傲江湖", v: "xxajh" }, { n: "猫和老鼠", v: "mhls" }, { n: "猎人手游", v: "lrlr" }, { n: "明日之后", v: "mrzh" }, { n: "影之诗", v: "yzs" }, { n: "决战平安京", v: "jzpaj" }, { n: "魂斗罗归来", v: "DLHGL" }, { n: "贪吃蛇大作战", v: "tcsdzz" }, { n: "圣斗士星矢", v: "sdsxs" }, { n: "魔力宝贝手游", v: "mlbbsy" }, { n: "哈利波特:魔法觉醒", v: "HarryPotter" }, { n: "手游推广", v: "rmsy" }, { n: "魔灵召唤", v: "mlzh" }, { n: "香肠派对", v: "xcpd" }, { n: "迷你世界", v: "MNSJ" }, { n: "荒野行动", v: "hyxd" }, { n: "大话西游2口袋版", v: "dhxy2kdb" }, { n: "FC足球世界", v: "FCZQSJ" }, { n: "街篮", v: "jl" }, { n: "一起来捉妖", v: "yiqilaizhuoyao" }, { n: "明日方舟", v: "mrfz" }, { n: "自由幻想手游", v: "zyhx" }, { n: "一梦江湖", v: "ymjh" }, { n: "王牌战争:文明重启", v: "wmcq" }, { n: "完美世界手游", v: "wmsjsy" }, { n: "拳皇98OL", v: "kof98" }, { n: "赛尔号", v: "srh" }, { n: "猎魂觉醒", v: "lhjx" }, { n: "仙境传说", v: "xjcs" }, { n: "逃跑吧少年", v: "tpbsn" }, { n: "石器时代", v: "sqsd" }, { n: "英魂之刃口袋版", v: "yh" }, { n: "拉结尔", v: "lje" }, { n: "倩女幽魂手游", v: "qnyhsy" }, { n: "决斗之城2", v: "jdzc2" }, { n: "传奇手游", v: "cqsy" }, { n: "欢乐升级", v: "hlsj" }, { n: "雀魂", v: "Majsoul" }, { n: "二次元手游", v: "ecysy" }, { n: "天龙八部online", v: "tianlongbabuonline" }, { n: "征途2手游", v: "zt2sy" }, { n: "万王之王3D", v: "wwzw3D" }, { n: "武林外传", v: "wlwz" }, { n: "我叫MT4", v: "MT4" }, { n: "元气骑士", v: "yuanqiqishi" }, { n: "红警OL手游", v: "hjolsy" }, { n: "植物大战僵尸手游", v: "ZWDZJS" }, { n: "龙之谷手游", v: "lzgsy" }, { n: "创造与魔法", v: "ccymf" }, { n: "境界-死神激斗", v: "jjssjd" }, { n: "奇迹觉醒", v: "qjjx" }, { n: "光遇", v: "skygy" }, { n: "游戏王:决斗链接", v: "yxwjdlj" }, { n: "巅峰战舰", v: "dfzj" }, { n: "绝世战魂", v: "jszh" }, { n: "寻仙", v: "xunxian" }, { n: "天天象棋", v: "ttxq" }, { n: "王国纪元", v: "wgjy" }, { n: "龙族幻想", v: "lzhx" }, { n: "剑网3指尖对弈", v: "jwszjdy" }, { n: "剑侠情缘2:剑歌行", v: "jianxiaqingyuan" }, { n: "三国杀移动版", v: "SGSSY" }, { n: "罗布乐思", v: "Roblox" }, { n: "足球手游", v: "zqsy" }, { n: "月圆之夜", v: "yyzy" }, { n: "王牌战争", v: "wpzz" }, { n: "秦时明月世界", v: "qsmysj" }, { n: "独立手游", v: "dlsy" }, { n: "神都夜行录", v: "sdyxl" }, { n: "风之大陆", v: "fzdl" }, { n: "金属对决", v: "jsdj" }, { n: "轩辕剑龙舞云山", v: "xyjlwys" }, { n: "微乐棋牌", v: "WLQP" }, { n: "辐射:避难所Online", v: "fsbnsonline" }, { n: "街篮2", v: "jl2" }, { n: "极光计划", v: "jgjh" }, { n: "不良人3", v: "blr3" }, { n: "镇魔曲手游", v: "zmq" }, { n: "传奇世界手游", v: "cqsjsy" }, { n: "永恒纪元", v: "yhjy" }, { n: "乱世王者", v: "lswz" }, { n: "数码宝贝:相遇", v: "smbbxy" }, { n: "仙剑4", v: "xjqxz4" }, { n: "长安幻世绘", v: "cahsh" }, { n: "篮球手游", v: "lqsy" }, { n: "鬼泣-巅峰之战", v: "gqdfzz" }, { n: "射击类手游", v: "qtsy" }, { n: "命运歌姬", v: "mygj" }, { n: "光明大陆", v: "gmdl" }, { n: "暗黑不朽", v: "diabloimmortal" }, { n: "新神魔大陆", v: "xsmdl" }, { n: "公主连结Re:Dive", v: "gzlj" }, { n: "三国志战略版", v: "sgzzlb" }, { n: "天地劫:幽城再临", v: "tdj" }, { n: "Disorder", v: "Disorder" }, { n: "凹凸世界", v: "atsj" }, { n: "云上城之歌", v: "ysczg" }, { n: "五子棋", v: "wzq" }, { n: "围棋", v: "wq" }, { n: "梦想新大陆", v: "mxxdl" }, { n: "三国志幻想大陆:国创加强版", v: "sgzhxdl" }, { n: "全球行动", v: "qqxd" }, { n: "诛仙手游", v: "zxsy" }, { n: "妄想山海", v: "wxsh" }, { n: "黎明觉醒:生机", v: "lmjx" }, { n: "龙之谷2手游", v: "lzg2sy" }, { n: "庆余年", v: "QYN" }, { n: "我的侠客", v: "wdxk" }, { n: "曙光英雄", v: "sgyx" }, { n: "真三国无双霸", v: "zsgwsb" }, { n: "大话西游手游", v: "dhxysy" }, { n: "口袋进化", v: "kdjh" }, { n: "开心消消乐", v: "kxxxl" }, { n: "战争怒吼", v: "zznh" }, { n: "忘川风华录", v: "wcfhl" }, { n: "新剑侠情缘手游", v: "xjxqysy" }, { n: "重生细胞", v: "csxb" }, { n: "汉家江湖", v: "HJJH" }, { n: "海岛奇兵", v: "hdqb" }, { n: "钢铁力量2", v: "gtll2" }, { n: "仙剑奇侠传九野", v: "xjqxzjy" }, { n: "魔域手游", v: "mysy" }, { n: "大唐无双手游", v: "dtwssy" }, { n: "地铁跑酷", v: "dtpk" }, { n: "战舰世界闪击战", v: "zjsjsjz" }, { n: "狂暴之翼", v: "kbzy" }, { n: "西游女儿国", v: "xyneg" }, { n: "少年三国志", v: "snsgz" }, { n: "钢琴师", v: "gqs" }, { n: "横扫千军", v: "hsqj" }, { n: "节奏大爆炸", v: "jzdbz" }, { n: "喵斯快跑", v: "mskp" }, { n: "双子", v: "sz" }, { n: "梦想世界3手游", v: "mxsj3" }, { n: "精灵之境", v: "jlzj" }, { n: "镇魂街:武神躯", v: "zhjwsq" }, { n: "斗罗大陆:斗神再临", v: "dldldszl" }, { n: "斗罗大陆:武魂觉醒", v: "dldlwhjx" }, { n: "斗罗大陆2绝世唐门", v: "dldl2jstm" }, { n: "战神觉醒", v: "zsjx" }, { n: "九州仙剑传H5", v: "jzxjzh5" }, { n: "荣耀大天使", v: "rydts" }, { n: "蓝月传奇", v: "lycq" }, { n: "凡人修仙传挂机版H5", v: "frxxzgjbh5" }, { n: "我的帝国H5", v: "wddgh5" }, { n: "盗墓笔记", v: "dmbj" }, { n: "剑与轮回", v: "jylh" }, { n: "混沌起源", v: "hdqy" }, { n: "大天使之剑", v: "dtszj" }, { n: "战斗少女跑酷", v: "zdsnpk" }, { n: "绝世仙王", v: "jsxw" }, { n: "一刀传世", v: "ydcs" }, { n: "斗罗大陆", v: "dldl" }, { n: "破雪刃", v: "pxr" }, { n: "JJ象棋", v: "jjxq" }, { n: "天姬变", v: "tjb" }, { n: "剑玲珑", v: "jll" }, { n: "火线精英", v: "hxjy" }, { n: "造梦西游OL", v: "zmxyol" }, { n: "奥奇传说手游", v: "aqcssy" }, { n: "战斗吧龙魂", v: "zdblh" }, { n: "剑开仙门", v: "jkxm" }, { n: "机甲爱丽丝", v: "jjals" }, { n: "狼人对决", v: "lrdj" }, { n: "最终幻想:勇气启示录 幻影战争", v: "hyzz" }, { n: "贝比岛", v: "bbd" }, { n: "葫芦娃兄弟", v: "hlwxd" }, { n: "造梦西游4", v: "zmxy4" }, { n: "比特小队", v: "btxd" }, { n: "流言侦探", v: "lyzt" }, { n: "少女前线", v: "snqx" }, { n: "遇见", v: "yj" }, { n: "霓虹深渊:无限", v: "nhsywx" }, { n: "胡莱三国3", v: "hlsg3" }, { n: "奥拉星", v: "alx" }, { n: "先游云游戏", v: "Gamer" }, { n: "绿茵信仰", v: "lyxy" }, { n: "蜀山掌门", v: "sszm" }, { n: "球球联盟", v: "qqlm" }, { n: "碧蓝航线手游", v: "blhxsy" }, { n: "300大作战", v: "300dzz" }, { n: "第七史诗", v: "dqss" }, { n: "宝可梦大集结", v: "PokemonUNITE" }, { n: "无极仙途", v: "wjxt" }, { n: "汉末霸业", v: "hmby" }, { n: "EVE星战前夜:无烬星河", v: "evexzqywjxh" }, { n: "少女前线2:追放", v: "sq2zf" }, { n: "火力苏打(T3)", v: "T3" }, { n: "植物大战僵尸2", v: "zwdzjs2" }, { n: "球球英雄", v: "qqyx" }, { n: "悠长假期", v: "ycjq" }, { n: "无悔华夏", v: "whrhx" }, { n: "猫之城", v: "mzc" }, { n: "墨斗", v: "modou" }, { n: "圣斗士星矢:正义传说", v: "sdsxszyz" }, { n: "未定事件簿", v: "wdsjp" }, { n: "白夜极光", v: "byjg" }, { n: "斗罗大陆:魂师对决", v: "dldlhsdj" }, { n: "古墓丽影传说:迷踪", v: "gmlycsmz" }, { n: "放置与召唤", v: "fzyzh" }, { n: "闪烁之光", v: "syzg" }, { n: "老农种树", v: "lnzs" }, { n: "三国演义:吞噬无界", v: "sgyytswj" }, { n: "偶像梦幻祭2", v: "oxmhj2" }, { n: "卡卡保皇", v: "kkbh" }, { n: "灵猫传", v: "lmz" }, { n: "绝对演绎", v: "jdyy" }, { n: "剑侠世界3", v: "jxsj3" }, { n: "召唤与合成2", v: "zhyhc2" }, { n: "仙侠第一放置", v: "xxdyfz" }, { n: "弓箭手大作战", v: "gjsdzz" }, { n: "挨饿荒野", v: "aehy" }, { n: "诺亚之心", v: "nyzx" }, { n: "闪耀暖暖", v: "synn" }, { n: "模拟城市:我是市长", v: "mncswssc" }, { n: "重返帝国", v: "cfdg" }, { n: "长安幻想", v: "cahx" }, { n: "火炬之光:无限", v: "hjzgwx" }, { n: "富豪闯三国", v: "fhcsg" }, { n: "拂晓", v: "fx" }, { n: "火影忍者:忍者新世代", v: "hyrzrzxsd" }, { n: "滚动的天空", v: "gddtk" }, { n: "新斗罗大陆", v: "xdldl" }, { n: "登山赛车", v: "dssc" }, { n: "荒野乱斗(腾讯版)", v: "hyldtxb" }, { n: "小小勇者", v: "xxyz" }, { n: "小冰冰传奇", v: "xbbcq" }, { n: "三国战纪2手游", v: "sgzj2" }, { n: "我的战舰", v: "wdzj" }, { n: "我是大东家", v: "wsddj" }, { n: "幸存者危城", v: "xczwc" }, { n: "暗魔领主", v: "amlz" }, { n: "冒险公社手游", v: "mxgs" }, { n: "欧陆战争5:帝国", v: "olzz5dg" }, { n: "纪念碑谷2", v: "jnbg2" }, { n: "大航海探险物语", v: "dhhtxwy" }, { n: "我在7年后等着你", v: "wz7nhdzn" }, { n: "航海日记", v: "hhrj" }, { n: "一拳超人:最强之男", v: "yqcrzqzn" }, { n: "王国保卫战4", v: "wgbwz4" }, { n: "半世界之旅", v: "bsjzl" }, { n: "奥特曼宇宙英雄", v: "atmyzyx" }, { n: "新三国杀", v: "xsgs" }, { n: "奶块", v: "nk" }, { n: "策魂三国", v: "chsg" }, { n: "奥特曼系列OL", v: "atmxlol" }, { n: "洪荒文明", v: "hhwm" }, { n: "街头足球", v: "jtzq" }, { n: "同人圣三国蜀汉传", v: "trssgshc" }, { n: "我做夫人那些年", v: "wzfrnxn" }, { n: "小小五千年", v: "xxwqn" }, { n: "实况球会经理", v: "skqhjl" }, { n: "时空猎人", v: "sklr" }, { n: "星际逆战", v: "xjnz" }, { n: "LoveLive! 学园偶像祭", v: "lovelivexyoxj" }, { n: "黑色沙漠手游", v: "hesmsy" }, { n: "魔力宝贝:旅人", v: "mlbblr" }, { n: "盾之勇者成名录:浪潮", v: "dzyzcmllc" }, { n: "魔力宝贝归来", v: "mlbbgl" }, { n: "荣耀新三国", v: "ryxsg" }, { n: "巅峰极速", v: "dfjs" }, { n: "新盗墓笔记", v: "xdmbj" }, { n: "卧龙吟2", v: "wly2" }, { n: "武林闲侠", v: "wlxx" }, { n: "淘米游戏", v: "tmyx" }, { n: "暖雪", v: "warmsnow" }, { n: "无期迷途", v: "wqmt" }, { n: "逆光潜入", v: "ngqr" }, { n: "CF手游", v: "CFSY" }, { n: "新天龙八部手游", v: "xtlbbsy" }, { n: "无神之界", v: "wszj" }, { n: "尘白禁区", v: "cbjq" }, { n: "传奇天下", v: "CQTX" }, { n: "全民大灌篮", v: "qmdgl" }, { n: "枪火重生手游", v: "GunfireReborn" }, { n: "火影三国志", v: "g_hysg" }, { n: "网易其它组", v: "g_wyqt" }, { n: "三国战纪手游", v: "sgzjsy" }, { n: "染·钟楼谜团", v: "BOTC" }, { n: "绝区零", v: "jql" }, { n: "魔兽弧光大作战", v: "warcraftrumble" }, { n: "重返CODM", v: "RECODM" }, { n: "综合手游", v: "zhsy" }, { n: "IP游戏", v: "ipyx" }, { n: "鸣潮", v: "cm" }, { n: "棋牌游戏", v: "QPYX" }, { n: "奥比岛:梦想国度", v: "abdmxgd" }, { n: "铃兰之剑", v: "llzjwzhpdsj" }, { n: "晶核", v: "jhcoa" }, { n: "星之破晓", v: "dhpx" }, { n: "赛尔计划", v: "srjh" }, { n: "SLG综合", v: "SLG" }, { n: "代号:伙伴", v: "DHGB" }, { n: "天使之战", v: "tszz" }, { n: "全明星街球派对", v: "hoopheroes" }, { n: "合金弹头:觉醒", v: "MetalSlug" }, { n: "白荆回廊", v: "BJHL" }, { n: "三国志战棋版", v: "g_sgzzqb" }, { n: "鹅鸭杀手游", v: "GooseDuck" }, { n: "太空杀", v: "SuperSus" }, { n: "天龙八部2:飞龙战天", v: "tlbb2flzt" }, { n: "西行纪 燃魂", v: "xxjrh" }, { n: "决胜巅峰", v: "jueshengdianfeng" }, { n: "冒险岛:枫之传说", v: "MapleStory" }, { n: "石器时代:觉醒", v: "sqsdjx" }, { n: "星球:重启", v: "xqcq" }, { n: "决战玛法", v: "jzmf" }, { n: "二次元游戏", v: "ECYYX" }, { n: "圣境之塔", v: "sjzt" }, { n: "传说法师手游", v: "CSFSSY" }, { n: "钢岚", v: "Mecharashi" }, { n: "勇闯三国", v: "ycsg" }, { n: "绯色回响", v: "fshxgf" }, { n: "三国:谋定天下", v: "sgmdtx" }] }], kjwh: [{ key: "cateId", name: "分类", value: [{ n: "数码科技", v: "smkj" }, { n: "纪录片", v: "jlp" }, { n: "成年教育", v: "jiaoyu" }, { n: "人文社科", v: "Humanities" }] }], yp: [{ key: "cateId", name: "分类", value: [{ n: "派对", v: "paidui" }, { n: "心动FM.", v: "DIANT" }, { n: "一起玩", v: "yiqiwan" }] }], voice: [{ key: "cateId", name: "分类", value: [{ n: "语音交友", v: "yyjy" }, { n: "音乐之声", v: "yyzs" }, { n: "连麦互动", v: "lianmaihudong" }, { n: "娱乐开黑", v: "ylkh" }] }] }, filter_def: { yl: { cateId: "yqk" }, PCgame: { cateId: "LOL" }, djry: { cateId: "TVgame" }, syxx: { cateId: "wzry" }, yz: { cateId: "yz" }, kjwh: { cateId: "smkj" }, yp: { cateId: "yiqiwan" }, voice: { cateId: "yyzs" }, znl: { cateId: "znl" } }, class_name: "娱乐天地&网游竞技&单机热游&手游休闲&颜值&科技文化&语音互动&语音直播&正能量", class_url: "yl&PCgame&djry&syxx&yz&kjwh&yp&voice&znl", detailUrl: "https://m.douyu.com/fyid?dyshid=0-1c6d52c74b1e6bec7aa63a8e000617p1&dyshci=181", searchUrl: "/api/search/liveRoom?#did=10000000000000000000000000001501&limit=20&offset=0&sk=**;post", searchable: 2, quickSearch: 0, headers: { "User-Agent": "MOBILE_UA" }, timeout: 5e3, limit: 8, play_parse: !0, lazy: "js:\n\ let rid=input;\n\ let api='https://m.douyu.com/api/room/ratestream';\n\ let body='rid='+rid+'&did=10000000000000000000000000001501&rate=0';\n\ let res=JSON.parse(post(api,{body:body,headers:{\n\ 'User-Agent': MOBILE_UA,\n\ 'Content-Type':'application/x-www-form-urlencoded'\n\ }}));\n\ let d=res.data||{};\n\ let play='';\n\ if(d.url){\n\ play=d.url;\n\ }else if(d.rtmp_url&&d.rtmp_live){\n\ play=d.rtmp_url+'/'+d.rtmp_live;\n\ }\n\ if(!play) throw '斗鱼未开播或取流失败';\n\ input={parse:0,url:play};\n", isVideo: "js:/\\.m3u8|\\.flv/.test(input)", 推荐: "js:\n\ let d=[];\n\ let jo=JSON.parse(request(input)).data;\n\ jo.forEach(c=>{\n\ (c.list||[]).forEach(it=>{\n\ d.push({\n\ url: it.rid,\n\ title: it.roomName,\n\ img: it.roomSrc,\n\ desc: '👁'+it.hn+' · '+it.nickname\n\ })\n\ })\n\ });\n\ setResult(d);\n", 一级: "js:\n\ let d=[];\n\ let jo=JSON.parse(request(input)).data.list;\n\ jo.forEach(it=>{\n\ d.push({\n\ url: it.rid,\n\ title: it.roomName,\n\ img: it.roomSrc,\n\ desc: '👁'+it.hn+' · '+it.nickname\n\ })\n\ });\n\ setResult(d);\n", 二级: '*', 搜索: "js:\n\ let d=[];\n\ let r=input.split(';');\n\ let url=r[0].split('#')[0];\n\ let body=r[0].split('#')[1]||'';\n\ let jo=JSON.parse(post(url,{body:body,headers:rule.headers})).data.list;\n\ jo.forEach(it=>{\n\ d.push({\n\ url: it.roomId,\n\ title: it.roomName,\n\ img: it.roomSrc,\n\ desc: '👁'+it.hn+' · '+it.nickname\n\ })\n\ });\n\ setResult(d);\n", };
Editor Settings
Theme
Key bindings
Full width
Lines