diff --git a/.gitignore b/.gitignore index 9973d6c..aac1657 100644 --- a/.gitignore +++ b/.gitignore @@ -140,3 +140,4 @@ dist /yarn.lock /custom.json /index.json +/vod_cache/ diff --git a/controllers/mediaProxy.js b/controllers/mediaProxy.js index fd6965d..d1cd6f6 100644 --- a/controllers/mediaProxy.js +++ b/controllers/mediaProxy.js @@ -1,4 +1,4 @@ -import {base64Decode} from '../libs_drpy/crypto-util.js'; +import {base64Decode, md5} from '../libs_drpy/crypto-util.js'; import '../utils/random-http-ua.js' import {keysToLowerCase} from '../utils/utils.js'; import {ENV} from "../utils/env.js"; @@ -25,6 +25,9 @@ export default (fastify, options, done) => { fastify.all('/mediaProxy', async (request, reply) => { const {thread = 1, form = 'urlcode', url, header, size = '128K', randUa = 0} = request.query; + // console.log('url:', url) + // console.log('header:', header) + // Check if the URL parameter is missing if (!url) { return reply.code(400).send({error: 'Missing required parameter: url'}); @@ -32,9 +35,9 @@ export default (fastify, options, done) => { try { // Decode URL and headers based on the form type - const decodedUrl = form === 'base64' ? base64Decode(url) : decodeURIComponent(url); + const decodedUrl = form === 'base64' ? base64Decode(url) : url; const decodedHeader = header - ? JSON.parse(form === 'base64' ? base64Decode(header) : decodeURIComponent(header)) + ? JSON.parse(form === 'base64' ? base64Decode(header) : header) : {}; // Call the proxy function, passing the decoded URL and headers @@ -45,7 +48,7 @@ export default (fastify, options, done) => { return await proxyStreamMediaMulti(decodedUrl, decodedHeader, request, reply, thread, size, randUa); } else { console.log('[mediaProxy] chunkStream 磁盘加速 chunkSize:', sizeToBytes('256K')); - return await chunkStream(request, reply, decodedUrl, null, decodedHeader, + return await chunkStream(request, reply, decodedUrl, md5(decodedUrl), decodedHeader, Object.assign({chunkSize: 1024 * 256, poolSize: 5, timeout: 1000 * 10}, { // chunkSize: sizeToBytes(size), poolSize: thread diff --git a/data/cat/index.js b/data/cat/index.js index 57a615e..0e77168 100644 --- a/data/cat/index.js +++ b/data/cat/index.js @@ -441,7 +441,7 @@ ${i}`;break;case"retry":Ore(i)&&(r[s]=i);break;case"id":Mre(i)&&(r[s]=i);break;c `}}async function h$e(e,t){let r=e.body.wd,n=await kr.get(`${Jo}/user/hm.html?q=${encodeURIComponent(r)}`,{headers:{accept:"application/json","User-Agent":TC,Referer:`${Jo}/s?q=${encodeURIComponent(r)}`}}),i=(Array.isArray(n.headers["set-cookie"])?n.headers["set-cookie"].join(";;;"):n.headers["set-cookie"]).split(";;;"),o={};for(let u of i){let l=u.trim(),A=l.indexOf("="),f=l.substr(0,A),d=l.substr(A+1,l.indexOf(";")-A-1);o[f]=d}let a=await kr.get(`${Jo}/user/search.html?q=${encodeURIComponent(r)}&so=undefined`,{headers:{accept:"application/json","User-Agent":TC,cookie:"hm="+o.hm,Referer:`${Jo}/s?q=${encodeURIComponent(r)}`}}),c=[];for(let u of a.data)c.push({book_id:u.url_list,book_name:u.articlename,book_pic:u.url_img,book_remarks:u.author});return{tline:2,list:c}}async function p$e(e,t){try{let r=function(o){o.statusCode&&o.statusCode==500&&console.error(o)},n=e.server.prefix,s={},i=await e.server.inject().post(`${n}/init`);if(s.init=i.json(),r(i.json()),i=await e.server.inject().post(`${n}/home`),s.home=i.json(),r(i.json()),s.home.class.length>0&&(i=await e.server.inject().post(`${n}/category`).payload({id:s.home.class[0].type_id,page:1,filter:!0,filters:{}}),s.category=i.json(),r(i.json()),s.category.list.length>0&&(i=await e.server.inject().post(`${n}/detail`).payload({id:s.category.list[0].book_id}),s.detail=i.json(),r(i.json()),s.detail.list&&s.detail.list.length>0))){s.play=[];for(let o of s.detail.list){let a=o.volumes.split("$$$"),c=o.urls.split("$$$");for(let u=0;u{e.post("/init",u$e),e.post("/home",l$e),e.post("/category",A$e),e.post("/detail",f$e),e.post("/play",d$e),e.post("/search",h$e),e.get("/test",p$e)}};var rs=Fe(Rh(),1);var Bf="https://www.copymanga.tv";async function xf(e){return(await kr.get(e,{headers:{"User-Agent":Y$}})).data}async function g$e(e,t){return{}}async function m$e(e,t){var r=await xf(Bf+"/comics");let n=Ts(r),s={},i={key:"region",name:"\u5730\u5340",init:""},o=[];o.push({n:"\u5168\u90E8",v:""}),o.push({n:"\u65E5\u6F2B",v:"0"}),o.push({n:"\u97D3\u6F2B",v:"1"}),o.push({n:"\u7F8E\u6F2B",v:"2"}),i.value=o;let a={key:"ordering",name:"\u6392\u5E8F",init:"-datetime_updated"},c=[];c.push({n:"\u66F4\u65B0\u6642\u9593\u2193",v:"-datetime_updated"}),c.push({n:"\u66F4\u65B0\u6642\u9593\u2191",v:"datetime_updated"}),c.push({n:"\u71B1\u9580\u2193",v:"-popular"}),c.push({n:"\u71B1\u9580\u2191",v:"popular"}),a.value=c;let u={key:"sort",name:"\u72C0\u614B",init:""},l=[];l.push({n:"\u5168\u90E8",v:""}),l.push({n:"\u9023\u8F09\u4E2D",v:"0"}),l.push({n:"\u5DF2\u5B8C\u7D50",v:"1"}),l.push({n:"\u77ED\u7BC7",v:"2"}),u.value=l,s.c1=[];let A=[{n:"\u5168\u90E8",v:""}];for(let f of n('div.classify-right>a[href*="theme="]'))A.push({n:n(f).text().trim(),v:f.attribs.href.match(/.*?theme=(.*)&/)[1]});return s.c1.push({key:"theme",name:"",init:"",wrap:1,value:A}),s.c1.push(i),s.c1.push(u),s.c1.push(a),{class:[{type_name:"all",type_id:"c1"}],filters:s}}async function E$e(inReq,_outResp){let pg=inReq.body.page,extend=inReq.body.filters,page=pg||1;page==0&&(page=1);let link=Bf+`/comics?theme=${extend.theme||""}®ion=${extend.region||""}&status=${extend.status||""}&ordering=${extend.ordering||"-datetime_updated"}`;page>1&&(link+="&offset="+(page-1)*50+"&limit=50");var html=await xf(link);let $=Ts(html),list=eval($('div[class="row exemptComic-box"]')[0].attribs.list),books=[];for(let e of list)books.push({book_id:e.path_word,book_name:e.name,book_pic:e.cover,book_remarks:e.author?e.author[0].name:""});return{page,pagecount:list.length==50?page+1:page,list:books}}async function C$e(e,t){let r=Array.isArray(e.body.id)?e.body.id:[e.body.id],n=[];for(let u of r){var s=await xf(Bf+`/comic/${u}`);let l=Ts(s),A={book_name:l("h6").text().trim(),book_director:l('span.comicParticulars-right-txt>a[href*="/author/"]').map((p,C)=>l(C).text().trim()).get().join("/"),book_content:l("p.intro").text().trim()},f=(await xf(Bf+`/comicdetail/${u}/chapters`)).results;var i=rs.default.enc.Utf8.parse("xxxmanga.woo.key"),o=rs.default.enc.Utf8.parse(f.substr(0,16)),a=rs.default.enc.Hex.parse(f.substr(16)),c=rs.default.AES.decrypt({ciphertext:a},i,{iv:o,padding:rs.default.pad.Pkcs7});c=rs.default.enc.Utf8.stringify(c);let h=JSON.parse(c).groups.default.chapters.map(p=>p.name+"$"+u+"|"+p.id).join("#");A.volumes="\u9ED8\u8A8D",A.urls=h,n.push(A)}return{list:n}}async function y$e(e,t){var n=e.body.id.split("|"),s=await xf(Bf+`/comic/${n[0]}/chapter/${n[1]}`);let o=Ts(s)("div.imageData")[0].attribs.contentkey;var a=rs.default.enc.Utf8.parse("xxxmanga.woo.key"),c=rs.default.enc.Utf8.parse(o.substr(0,16)),u=rs.default.enc.Hex.parse(o.substr(16)),l=rs.default.AES.decrypt({ciphertext:u},a,{iv:c,padding:rs.default.pad.Pkcs7});l=rs.default.enc.Utf8.stringify(l);let A=JSON.parse(l);var f=[];for(let d=0;d1?((s-1)*12).toString():""}&platform=2&limit=12&q=${n}&q_type=`;var o=(await xf(i)).results.list;let a=[];for(let c of o)a.push({book_id:c.path_word,book_name:c.name,book_pic:c.cover,book_remarks:c.author?c.author[0].name:""});return{page:s,pagecount:o.length==12?s+1:s,list:a}}async function b$e(e,t){try{let r=function(o){o.statusCode&&o.statusCode==500&&console.error(o)},n=e.server.prefix,s={},i=await e.server.inject().post(`${n}/init`);if(s.init=i.json(),r(i.json()),i=await e.server.inject().post(`${n}/home`),s.home=i.json(),r(i.json()),s.home.class.length>0&&(i=await e.server.inject().post(`${n}/category`).payload({id:s.home.class[0].type_id,page:1,filter:!0,filters:{}}),s.category=i.json(),r(i.json()),s.category.list.length>0&&(i=await e.server.inject().post(`${n}/detail`).payload({id:s.category.list[0].book_id}),s.detail=i.json(),r(i.json()),s.detail.list&&s.detail.list.length>0))){s.play=[];for(let o of s.detail.list){let a=o.volumes.split("$$$"),c=o.urls.split("$$$");for(let u=0;u{e.post("/init",g$e),e.post("/home",m$e),e.post("/category",E$e),e.post("/detail",C$e),e.post("/play",y$e),e.post("/search",I$e),e.get("/test",b$e)}};var _b=Fe(vne(),1);var Qf="",cc=[];async function pp(e){return(await kr(e,{method:"get"})).data}async function LGe(e,t){return Qf=e.server.config.ffm3u8.url,cc=e.server.config.ffm3u8.categories,{}}var Qne=[];async function OGe(e,t){let r=await pp(Qf),n=[];for(let s of r.class){let i=s.type_name.toString().trim();cc&&cc.length>0&&cc.indexOf(i)<0||n.push({type_id:s.type_id.toString(),type_name:i})}if(cc&&cc.length>0&&(n=n.sort((s,i)=>cc.indexOf(s.type_name)-cc.indexOf(i.type_name))),r.list){let s=await pp(Qf+`?ac=detail&ids=${r.list.map(i=>i.vod_id).join(",")}`);for(let i of s.list)Qne.push({vod_id:i.vod_id.toString(),vod_name:i.vod_name.toString(),vod_pic:i.vod_pic,vod_remarks:i.vod_remarks})}return{class:n}}async function MGe(e,t){let r=e.body.id,s=e.body.page||1;s==0&&(s=1);let i=await pp(Qf+`?ac=detail&t=${r}&pg=${s}`),o=[];for(let a of i.list)o.push({vod_id:a.vod_id.toString(),vod_name:a.vod_name.toString(),vod_pic:a.vod_pic,vod_remarks:a.vod_remarks});return{page:parseInt(i.page),pagecount:i.pagecount,total:i.total,list:o}}async function PGe(e,t){let r=Array.isArray(e.body.id)?e.body.id:[e.body.id],n=[];for(let s of r){let i=(await pp(Qf+`?ac=detail&ids=${s}`)).list[0],o={vod_id:i.vod_id,vod_name:i.vod_name,vod_pic:i.vod_pic,type_name:i.type_name,vod_year:i.vod_year,vod_area:i.vod_area,vod_remarks:i.vod_remarks,vod_actor:i.vod_actor,vod_director:i.vod_director,vod_content:i.vod_content.trim(),vod_play_from:i.vod_play_from,vod_play_url:i.vod_play_url};o.likes=Qne,n.push(o)}return{list:n}}async function UGe(e,t){let r=e.params.what,n=decodeURIComponent(e.params.ids);if(r=="hls"){let s=await kr(n,{method:"get"}),i=_b.parse(s.data);if(i.variants){for(let c of i.variants)c.uri.startsWith("http")||(c.uri=new URL(c.uri,n).toString());i.variants.map(c=>{c.uri=e.server.prefix+"/proxy/hls/"+encodeURIComponent(c.uri)+"/.m3u8"})}if(i.segments){for(let c of i.segments)c.uri.startsWith("http")||(c.uri=new URL(c.uri,n).toString()),c.key&&c.key.uri&&!c.key.uri.startsWith("http")&&(c.key.uri=new URL(c.key.uri,n).toString());i.segments.map(c=>{c.uri=e.server.prefix+"/proxy/ts/"+encodeURIComponent(c.uri)+"/.ts"})}let o=_b.stringify(i),a={};return s.headers["content-length"]?Object.assign(a,s.headers,{"content-length":o.length.toString()}):Object.assign(a,s.headers),delete a["transfer-encoding"],delete a["cache-control"],a["content-encoding"]=="gzip"&&delete a["content-encoding"],t.code(s.status).headers(a),o}else{t.redirect(n);return}}async function HGe(e,t){let r=e.body.id;if(r.indexOf(".m3u8")<0){let n=await e.server.messageToDart({action:"sniff",opt:{url:r,timeout:1e4,rule:"http((?!http).){12,}?\\.m3u8(?!\\?)"}});if(n&&n.url){let s={};return n.headers&&(n.headers["user-agent"]&&(s["User-Agent"]=n.headers["user-agent"]),n.headers.referer&&(s.Referer=n.headers.referer)),{parse:0,url:n.url,header:s}}}return{parse:0,url:e.server.address().dynamic+e.server.prefix+"/proxy/hls/"+encodeURIComponent(r)+"/.m3u8"}}async function qGe(e,t){let r=e.body.wd,n=await pp(Qf+`?ac=detail&wd=${r}`),s=[];for(let i of n.list)s.push({vod_id:i.vod_id.toString(),vod_name:i.vod_name.toString(),vod_pic:i.vod_pic,vod_remarks:i.vod_remarks});return{page:parseInt(n.page),pagecount:n.pagecount,total:n.total,list:s}}async function VGe(e,t){try{let r=function(o){o.statusCode&&o.statusCode==500&&console.error(o)},n=e.server.prefix,s={},i=await e.server.inject().post(`${n}/init`);if(s.init=i.json(),r(i.json()),i=await e.server.inject().post(`${n}/home`),s.home=i.json(),r(i.json()),s.home.class.length>0&&(i=await e.server.inject().post(`${n}/category`).payload({id:s.home.class[0].type_id,page:1,filter:!0,filters:{}}),s.category=i.json(),r(i.json()),s.category.list.length>0&&(i=await e.server.inject().post(`${n}/detail`).payload({id:s.category.list[0].vod_id}),s.detail=i.json(),r(i.json()),s.detail.list&&s.detail.list.length>0))){s.play=[];for(let o of s.detail.list){let a=o.vod_play_from.split("$$$"),c=o.vod_play_url.split("$$$");for(let u=0;u{e.post("/init",LGe),e.post("/home",OGe),e.post("/category",MGe),e.post("/detail",PGe),e.post("/play",HGe),e.post("/search",qGe),e.get("/proxy/:what/:ids/:end",UGe),e.get("/test",VGe)}};var Ak=Fe(Pie(),1);async function Ps(e){return(await kr(e,{method:"get"})).data}async function fk(e,t={}){return(await kr(e,{method:"post",data:t})).data}function Ko(e,t){let r=new URL(e),s={...Ak.default.parse(r.search,{ignoreQueryPrefix:!0}),...t},i=Ak.default.stringify(s);return r.search=`?${i}`,r.toString()}var $b=Fe(Rh(),1);function pWe(){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=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 r(s){var i,o,a,c,u,l;for(a=s.length,o=0,i="";o>2),i+=e.charAt((c&3)<<4),i+="==";break}if(u=s.charCodeAt(o++),o==a){i+=e.charAt(c>>2),i+=e.charAt((c&3)<<4|(u&240)>>4),i+=e.charAt((u&15)<<2),i+="=";break}l=s.charCodeAt(o++),i+=e.charAt(c>>2),i+=e.charAt((c&3)<<4|(u&240)>>4),i+=e.charAt((u&15)<<2|(l&192)>>6),i+=e.charAt(l&63)}return i}function n(s){var i,o,a,c,u,l,A;for(l=s.length,u=0,A="";u>4);do{if(a=s.charCodeAt(u++)&255,a==61)return A;a=t[a]}while(u>2);do{if(c=s.charCodeAt(u++)&255,c==61)return A;c=t[c]}while(u{if(typeof r!="object"||!r.name||!r.init)throw new Error("Invalid JSEP plugin format");this.registered[r.name]||(r.init(this.jsep),this.registered[r.name]=r)})}},Mn=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,r,n){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=r,n?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,r){return e.literals[t]=r,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(r=>r.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let r=new Error(t+" at character "+this.index);throw r.index=this.index,r.description=t,r}runHook(t,r){if(e.hooks[t]){let n={context:this,node:r};return e.hooks.run(t,n),n.node}return r}searchHook(t){if(e.hooks[t]){let r={context:this};return e.hooks[t].find(function(n){return n.call(r.context,r),r.node}),r.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),r=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",r)}gobbleExpressions(t){let r=[],n,s;for(;this.index0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.lengthi.right_a&&A.right_a?n>A.prec:n<=A.prec;for(;s.length>2&&l(s[s.length-2]);)a=s.pop(),r=s.pop().value,o=s.pop(),t={type:e.BINARY_EXP,operator:r,left:o,right:a},s.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),s.push(i,t)}for(c=s.length-1,t=s[c];c>1;)t={type:e.BINARY_EXP,operator:s[c-1].value,left:s[c-2],right:t},c-=2;return t}gobbleToken(){let t,r,n,s;if(this.gobbleSpaces(),s=this.searchHook("gobble-token"),s)return this.runHook("after-token",s);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)s=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)s=this.gobbleArray();else{for(r=this.expr.substr(this.index,e.max_unop_len),n=r.length;n>0;){if(e.unary_ops.hasOwnProperty(r)&&(!e.isIdentifierStart(this.code)||this.index+r.length=r.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(i===e.COMMA_CODE){if(this.index++,s++,s!==r.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let o=r.length;o":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});Mn.max_unop_len=Mn.getMaxKeyLen(Mn.unary_ops);Mn.max_binop_len=Mn.getMaxKeyLen(Mn.binary_ops);var Zo=e=>new Mn(e).parse(),mWe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(Mn).filter(e=>!mWe.includes(e)&&Zo[e]===void 0).forEach(e=>{Zo[e]=Mn[e]});Zo.Jsep=Mn;var EWe="ConditionalExpression",CWe={name:"ternary",init(e){e.hooks.add("after-expression",function(r){if(r.node&&this.code===e.QUMARK_CODE){this.index++;let n=r.node,s=this.gobbleExpression();if(s||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let i=this.gobbleExpression();if(i||this.throwError("Expected expression"),r.node={type:EWe,test:n,consequent:s,alternate:i},n.operator&&e.binary_ops[n.operator]<=.9){let o=n;for(;o.right.operator&&e.binary_ops[o.right.operator]<=.9;)o=o.right;r.node.test=o.right,o.right=r.node,r.node=n}}else this.throwError("Expected :")}})}};Zo.plugins.register(CWe);var Uie=47,yWe=92,IWe={name:"regex",init(e){e.hooks.add("gobble-token",function(r){if(this.code===Uie){let n=++this.index,s=!1;for(;this.index=97&&c<=122||c>=65&&c<=90||c>=48&&c<=57)o+=this.char;else break}let a;try{a=new RegExp(i,o)}catch(c){this.throwError(c.message)}return r.node={type:e.LITERAL,value:a,raw:this.expr.slice(n-1,this.index)},r.node=this.gobbleTokenProperty(r.node),r.node}this.code===e.OBRACK_CODE?s=!0:s&&this.code===e.CBRACK_CODE&&(s=!1),this.index+=this.code===yWe?2:1}this.throwError("Unclosed Regex")}})}},hk=43,bWe=45,Nf={name:"assignment",assignmentOperators:new Set(["=","*=","**=","/=","%=","+=","-=","<<=",">>=",">>>=","&=","^=","|=","||=","&&=","??="]),updateOperators:[hk,bWe],assignmentPrecedence:.9,init(e){let t=[e.IDENTIFIER,e.MEMBER_EXP];Nf.assignmentOperators.forEach(n=>e.addBinaryOp(n,Nf.assignmentPrecedence,!0)),e.hooks.add("gobble-token",function(s){let i=this.code;Nf.updateOperators.some(o=>o===i&&o===this.expr.charCodeAt(this.index+1))&&(this.index+=2,s.node={type:"UpdateExpression",operator:i===hk?"++":"--",argument:this.gobbleTokenProperty(this.gobbleIdentifier()),prefix:!0},(!s.node.argument||!t.includes(s.node.argument.type))&&this.throwError(`Unexpected ${s.node.operator}`))}),e.hooks.add("after-token",function(s){if(s.node){let i=this.code;Nf.updateOperators.some(o=>o===i&&o===this.expr.charCodeAt(this.index+1))&&(t.includes(s.node.type)||this.throwError(`Unexpected ${s.node.operator}`),this.index+=2,s.node={type:"UpdateExpression",operator:i===hk?"++":"--",argument:s.node,prefix:!1})}}),e.hooks.add("after-expression",function(s){s.node&&r(s.node)});function r(n){Nf.assignmentOperators.has(n.operator)?(n.type="AssignmentExpression",r(n.left),r(n.right)):n.operator||Object.values(n).forEach(s=>{s&&typeof s=="object"&&r(s)})}}};Zo.plugins.register(IWe,Nf);Zo.addUnaryOp("typeof");Zo.addLiteral("null",null);Zo.addLiteral("undefined",void 0);var BWe=new Set(["constructor","__proto__","__defineGetter__","__defineSetter__"]),Bt={evalAst(e,t){switch(e.type){case"BinaryExpression":case"LogicalExpression":return Bt.evalBinaryExpression(e,t);case"Compound":return Bt.evalCompound(e,t);case"ConditionalExpression":return Bt.evalConditionalExpression(e,t);case"Identifier":return Bt.evalIdentifier(e,t);case"Literal":return Bt.evalLiteral(e,t);case"MemberExpression":return Bt.evalMemberExpression(e,t);case"UnaryExpression":return Bt.evalUnaryExpression(e,t);case"ArrayExpression":return Bt.evalArrayExpression(e,t);case"CallExpression":return Bt.evalCallExpression(e,t);case"AssignmentExpression":return Bt.evalAssignmentExpression(e,t);default:throw SyntaxError("Unexpected expression",e)}},evalBinaryExpression(e,t){return{"||":(n,s)=>n||s(),"&&":(n,s)=>n&&s(),"|":(n,s)=>n|s(),"^":(n,s)=>n^s(),"&":(n,s)=>n&s(),"==":(n,s)=>n==s(),"!=":(n,s)=>n!=s(),"===":(n,s)=>n===s(),"!==":(n,s)=>n!==s(),"<":(n,s)=>n":(n,s)=>n>s(),"<=":(n,s)=>n<=s(),">=":(n,s)=>n>=s(),"<<":(n,s)=>n<>":(n,s)=>n>>s(),">>>":(n,s)=>n>>>s(),"+":(n,s)=>n+s(),"-":(n,s)=>n-s(),"*":(n,s)=>n*s(),"/":(n,s)=>n/s(),"%":(n,s)=>n%s()}[e.operator](Bt.evalAst(e.left,t),()=>Bt.evalAst(e.right,t))},evalCompound(e,t){let r;for(let n=0;n-Bt.evalAst(n,t),"!":n=>!Bt.evalAst(n,t),"~":n=>~Bt.evalAst(n,t),"+":n=>+Bt.evalAst(n,t),typeof:n=>typeof Bt.evalAst(n,t)}[e.operator](e.argument)},evalArrayExpression(e,t){return e.elements.map(r=>Bt.evalAst(r,t))},evalCallExpression(e,t){let r=e.arguments.map(s=>Bt.evalAst(s,t));return Bt.evalAst(e.callee,t)(...r)},evalAssignmentExpression(e,t){if(e.left.type!=="Identifier")throw SyntaxError("Invalid left-hand side in assignment");let r=e.left.name,n=Bt.evalAst(e.right,t);return t[r]=n,t[r]}},mk=class{constructor(t){this.code=t,this.ast=Zo(this.code)}runInNewContext(t){let r=Object.assign(Object.create(null),t);return Bt.evalAst(this.ast,r)}};function Ac(e,t){return e=e.slice(),e.push(t),e}function Ek(e,t){return t=t.slice(),t.unshift(e),t}var Ck=class extends Error{constructor(t){super('JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'),this.avoidNew=!0,this.value=t,this.name="NewError"}};function ut(e,t,r,n,s){if(!(this instanceof ut))try{return new ut(e,t,r,n,s)}catch(o){if(!o.avoidNew)throw o;return o.value}typeof e=="string"&&(s=n,n=r,r=t,t=e,e=null);let i=e&&typeof e=="object";if(e=e||{},this.json=e.json||r,this.path=e.path||t,this.resultType=e.resultType||"value",this.flatten=e.flatten||!1,this.wrap=Object.hasOwn(e,"wrap")?e.wrap:!0,this.sandbox=e.sandbox||{},this.eval=e.eval===void 0?"safe":e.eval,this.ignoreEvalErrors=typeof e.ignoreEvalErrors>"u"?!1:e.ignoreEvalErrors,this.parent=e.parent||null,this.parentProperty=e.parentProperty||null,this.callback=e.callback||n||null,this.otherTypeCallback=e.otherTypeCallback||s||function(){throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.")},e.autostart!==!1){let o={path:i?e.path:t};i?"json"in e&&(o.json=e.json):o.json=r;let a=this.evaluate(o);if(!a||typeof a!="object")throw new Ck(a);return a}}ut.prototype.evaluate=function(e,t,r,n){let s=this.parent,i=this.parentProperty,{flatten:o,wrap:a}=this;if(this.currResultType=this.resultType,this.currEval=this.eval,this.currSandbox=this.sandbox,r=r||this.callback,this.currOtherTypeCallback=n||this.otherTypeCallback,t=t||this.json,e=e||this.path,e&&typeof e=="object"&&!Array.isArray(e)){if(!e.path&&e.path!=="")throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().');if(!Object.hasOwn(e,"json"))throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().');({json:t}=e),o=Object.hasOwn(e,"flatten")?e.flatten:o,this.currResultType=Object.hasOwn(e,"resultType")?e.resultType:this.currResultType,this.currSandbox=Object.hasOwn(e,"sandbox")?e.sandbox:this.currSandbox,a=Object.hasOwn(e,"wrap")?e.wrap:a,this.currEval=Object.hasOwn(e,"eval")?e.eval:this.currEval,r=Object.hasOwn(e,"callback")?e.callback:r,this.currOtherTypeCallback=Object.hasOwn(e,"otherTypeCallback")?e.otherTypeCallback:this.currOtherTypeCallback,s=Object.hasOwn(e,"parent")?e.parent:s,i=Object.hasOwn(e,"parentProperty")?e.parentProperty:i,e=e.path}if(s=s||null,i=i||null,Array.isArray(e)&&(e=ut.toPathString(e)),!e&&e!==""||!t)return;let c=ut.toPathArray(e);c[0]==="$"&&c.length>1&&c.shift(),this._hasParentSelector=null;let u=this._trace(c,t,["$"],s,i,r).filter(function(l){return l&&!l.isParentSelector});return u.length?!a&&u.length===1&&!u[0].hasArrExpr?this._getPreferredOutput(u[0]):u.reduce((l,A)=>{let f=this._getPreferredOutput(A);return o&&Array.isArray(f)?l=l.concat(f):l.push(f),l},[]):a?[]:void 0};ut.prototype._getPreferredOutput=function(e){let t=this.currResultType;switch(t){case"all":{let r=Array.isArray(e.path)?e.path:ut.toPathArray(e.path);return e.pointer=ut.toPointer(r),e.path=typeof e.path=="string"?e.path:ut.toPathString(e.path),e}case"value":case"parent":case"parentProperty":return e[t];case"path":return ut.toPathString(e[t]);case"pointer":return ut.toPointer(e.path);default:throw new TypeError("Unknown result type")}};ut.prototype._handleCallback=function(e,t,r){if(t){let n=this._getPreferredOutput(e);e.path=typeof e.path=="string"?e.path:ut.toPathString(e.path),t(n,r,e)}};ut.prototype._trace=function(e,t,r,n,s,i,o,a){let c;if(!e.length)return c={path:r,value:t,parent:n,parentProperty:s,hasArrExpr:o},this._handleCallback(c,i,"value"),c;let u=e[0],l=e.slice(1),A=[];function f(d){Array.isArray(d)?d.forEach(h=>{A.push(h)}):A.push(d)}if((typeof u!="string"||a)&&t&&Object.hasOwn(t,u))f(this._trace(l,t[u],Ac(r,u),t,u,i,o));else if(u==="*")this._walk(t,d=>{f(this._trace(l,t[d],Ac(r,d),t,d,i,!0,!0))});else if(u==="..")f(this._trace(l,t,r,n,s,i,o)),this._walk(t,d=>{typeof t[d]=="object"&&f(this._trace(e.slice(),t[d],Ac(r,d),t,d,i,!0))});else{if(u==="^")return this._hasParentSelector=!0,{path:r.slice(0,-1),expr:l,isParentSelector:!0};if(u==="~")return c={path:Ac(r,u),value:s,parent:n,parentProperty:null},this._handleCallback(c,i,"property"),c;if(u==="$")f(this._trace(l,t,r,null,null,i,o));else if(/^(-?\d*):(-?\d*):?(\d*)$/u.test(u))f(this._slice(u,l,t,r,n,s,i));else if(u.indexOf("?(")===0){if(this.currEval===!1)throw new Error("Eval [?(expr)] prevented in JSONPath expression.");let d=u.replace(/^\?\((.*?)\)$/u,"$1"),h=/@.?([^?]*)[['](\??\(.*?\))(?!.\)\])[\]']/gu.exec(d);h?this._walk(t,p=>{let C=[h[2]],m=h[1]?t[p][h[1]]:t[p];this._trace(C,m,r,n,s,i,!0).length>0&&f(this._trace(l,t[p],Ac(r,p),t,p,i,!0))}):this._walk(t,p=>{this._eval(d,t[p],p,r,n,s)&&f(this._trace(l,t[p],Ac(r,p),t,p,i,!0))})}else if(u[0]==="("){if(this.currEval===!1)throw new Error("Eval [(expr)] prevented in JSONPath expression.");f(this._trace(Ek(this._eval(u,t,r.at(-1),r.slice(0,-1),n,s),l),t,r,n,s,i,o))}else if(u[0]==="@"){let d=!1,h=u.slice(1,-2);switch(h){case"scalar":(!t||!["object","function"].includes(typeof t))&&(d=!0);break;case"boolean":case"string":case"undefined":case"function":typeof t===h&&(d=!0);break;case"integer":Number.isFinite(t)&&!(t%1)&&(d=!0);break;case"number":Number.isFinite(t)&&(d=!0);break;case"nonFinite":typeof t=="number"&&!Number.isFinite(t)&&(d=!0);break;case"object":t&&typeof t===h&&(d=!0);break;case"array":Array.isArray(t)&&(d=!0);break;case"other":d=this.currOtherTypeCallback(t,r,n,s);break;case"null":t===null&&(d=!0);break;default:throw new TypeError("Unknown value type "+h)}if(d)return c={path:r,value:t,parent:n,parentProperty:s},this._handleCallback(c,i,"value"),c}else if(u[0]==="`"&&t&&Object.hasOwn(t,u.slice(1))){let d=u.slice(1);f(this._trace(l,t[d],Ac(r,d),t,d,i,o,!0))}else if(u.includes(",")){let d=u.split(",");for(let h of d)f(this._trace(Ek(h,l),t,r,n,s,i,!0))}else!a&&t&&Object.hasOwn(t,u)&&f(this._trace(l,t[u],Ac(r,u),t,u,i,o,!0))}if(this._hasParentSelector)for(let d=0;d{t(r)})};ut.prototype._slice=function(e,t,r,n,s,i,o){if(!Array.isArray(r))return;let a=r.length,c=e.split(":"),u=c[2]&&Number.parseInt(c[2])||1,l=c[0]&&Number.parseInt(c[0])||0,A=c[1]&&Number.parseInt(c[1])||a;l=l<0?Math.max(0,l+a):Math.min(a,l),A=A<0?Math.max(0,A+a):Math.min(a,A);let f=[];for(let d=l;d{f.push(p)});return f};ut.prototype._eval=function(e,t,r,n,s,i){this.currSandbox._$_parentProperty=i,this.currSandbox._$_parent=s,this.currSandbox._$_property=r,this.currSandbox._$_root=this.json,this.currSandbox._$_v=t;let o=e.includes("@path");o&&(this.currSandbox._$_path=ut.toPathString(n.concat([r])));let a=this.currEval+"Script:"+e;if(!ut.cache[a]){let c=e.replaceAll("@parentProperty","_$_parentProperty").replaceAll("@parent","_$_parent").replaceAll("@property","_$_property").replaceAll("@root","_$_root").replaceAll(/@([.\s)[])/gu,"_$_v$1");if(o&&(c=c.replaceAll("@path","_$_path")),this.currEval==="safe"||this.currEval===!0||this.currEval===void 0)ut.cache[a]=new this.safeVm.Script(c);else if(this.currEval==="native")ut.cache[a]=new this.vm.Script(c);else if(typeof this.currEval=="function"&&this.currEval.prototype&&Object.hasOwn(this.currEval.prototype,"runInNewContext")){let u=this.currEval;ut.cache[a]=new u(c)}else if(typeof this.currEval=="function")ut.cache[a]={runInNewContext:u=>this.currEval(c,u)};else throw new TypeError(`Unknown "eval" property "${this.currEval}"`)}try{return ut.cache[a].runInNewContext(this.currSandbox)}catch(c){if(this.ignoreEvalErrors)return!1;throw new Error("jsonPath: "+c.message+": "+e)}};ut.cache={};ut.toPathString=function(e){let t=e,r=t.length,n="$";for(let s=1;s{let r=qie.default.createServer();r.once("error",()=>{t(!1)}),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e)})}async function Yie(e){let t=Number(e);for(;!await xWe(t);)t+=1;return t}function fc(e){let t=/\[(.*?)\]/g,n=[...e.matchAll(t)].map(s=>s[1].split(""));return[...new Set(n.flat())]}function $ie(e){let t=[...e];for(let r=t.length-1;r>0;r--){let n=Math.floor(Math.random()*(r+1));[t[r],t[n]]=[t[n],t[r]]}return t}var Gie=Fe(r1(),1);async function vWe(e,t,r,n=0){let s=Number(n)||Number(process.env.MAX_TASK)||16,i=0,o=!1,a=[],c=Gie.default.promise(async l=>{if(o)return;let{func:A,param:f,id:d}=l;try{if(o)return;let h=await A({...f,stopExecution:()=>o});if(o)return;a.push(h),i++,t&&typeof t.func=="function"&&t.func(t.param,d,null,h)==="break"&&(o=!0),r&&i>=r&&(o=!0)}catch(h){t&&typeof t.func=="function"&&t.func(t.param,d,h,null)}},s);e.forEach(l=>{c.push(l).catch(A=>{console.error(`Task queue error for task ${l.id}:`,A)})});let u=new Promise(l=>{let A=setInterval(()=>{o&&(c.kill(),clearInterval(A),l())},50)});return await Promise.race([c.drained(),u]),console.log(`batchExecute completed with max_task: ${s} and ${i} successful tasks.`),a}var jie=vWe;var Jie={key:"drpyS",name:"\u9053\u957FDS",type:7},ro=new Map,Wie=new Map,QWe=ns(Jie.type),zie=Nr.drpyS.home_site;ro.set(QWe,{api:zie,extend:""});function kf(e){let t=ro.get(e),r=t.api;return t.extend&&(r=Ko(r,{extend:t.extend})),r}function yk(){return kf(ns("push"))}function TWe(e){e.forEach(t=>{let r=ns(t.key);ro.set(r,Object.assign(ro.get(r)||{},{api:t.ext.api,extend:t.ext.extend}))})}function wWe(e,t){Wie[e]=t}async function SWe(e,t){let r=e.server.prefix;return r.slice(r.lastIndexOf("/")+1)==="push"?"true":"false"}async function _We(e,t){let{ext:r,skey:n,stype:s}=e.body,i=ns(n);if(console.log("ext:",r),console.log("skey:",n),console.log("stype:",s),ro.has(i)){let a=ro.get(i);return console.log("\u5DF2\u50A8\u5B58:",a),a}let o={api:r.api,extend:r.ext};return ro.set(i,o),console.log("\u672A\u50A8\u5B58:",o),o}async function RWe(e,t){let r=e.server.prefix,n=ns(r.slice(r.lastIndexOf("/")+1)),s=kf(n),i=await Ps(s),o=ro.get(n);if(/platform=ysc/.test(s)&&i.filters&&typeof i.filters=="object"&&Object.keys(i.filters).length>0){let a={};Object.keys(i.filters).forEach(c=>{i.filters[c]&&!Array.isArray(i.filters[c])?a[c]=[i.filters[c]]:a[c]=i.filters[c]}),i.filters=a}return i.list&&i.list.length>0&&Array.isArray(i.class)&&(o.home_videos=i.list,i.class.unshift({type_name:"\u63A8\u8350",type_id:"dsHome"})),ro.set(n,o),i}async function DWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=kf(i),a=e.body.id,c=e.body.page||1;if(a==="dsHome")return c===1?{list:ro.get(i).home_videos}:{list:[]};let u=e.body.filters||{},l;Object.keys(u).length>0&&(l=dk(JSON.stringify(u))),o=Ko(o,{ac:"detail",t:a,pg:c,ext:l});let f=await Ps(o);return(s.includes("\u753B")||s.includes("\u4E66"))&&(f.list=f.list.map(d=>({book_id:d.vod_id,book_name:d.vod_name,book_pic:d.vod_pic,book_remarks:d.vod_remarks,book_content:d.vod_content}))),f}async function NWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=kf(i),a=Array.isArray(e.body.id)?e.body.id:[e.body.id];if(a[0].startsWith("push://")){let l=a[0].slice(7),A=yk();console.log("detail push _ids:",l),console.log("detail push _url:",A);let f={ac:"detail",ids:l},d;if(/platform=ysc/.test(A)?(o=Ko(o,f),d=await Ps(o)):d=await fk(A,f),d&&Array.isArray(d.list)){let h=d.list[0].vod_play_url;d.list[0].vod_play_url=h.split("#").map(p=>p.replace("$","$push://")).join("#")}return d}let c={ac:"detail",ids:a.join(",")};o=Ko(o,c);let u=await Ps(o);if(u.list&&Array.isArray(u.list)){let l=u.list[0].vod_play_url,A=u.list[0].vod_play_from;if(l&&l.includes("push://")){console.log("vod_play_url:",l);let f=[],d=A.split("$$$"),h=l.split("$$$");console.log(h);for(let p in h){let C=h[p];if(console.log("play_url:",C),C.includes("push://")){let m=C.split("#");console.log("tab_urls:",m);let I=[];for(let y of m){let E=y.split("$")[0],B=y.split("$")[1];if(B&&B.startsWith("push://")){let v=B.slice(7),x=yk();console.log("tab push _ids:",v),console.log("tab push _url:",x);let Q={ac:"detail",ids:v},S;if(/platform=ysc/.test(x)?(o=Ko(o,Q),S=await Ps(o)):S=await fk(x,Q),S&&Array.isArray(S.list)){let T=S.list[0].vod_play_url;d[p]=S.list[0].vod_play_from,I=I.concat(T.split("#").map(R=>R.replace("$","$push://")).join("#"))}}else I.push(y)}f.push(I.join("#"))}else f.push(C)}u.list[0].vod_play_url=f.join("$$$"),u.list[0].vod_play_from=d.join("$$$")}}return(s.includes("\u753B")||s.includes("\u4E66"))&&(u.list=u.list.map(l=>({book_id:l.vod_id,book_name:l.vod_name,book_pic:l.vod_pic,book_remarks:l.vod_remarks,book_content:l.vod_content,urls:l.vod_play_url,volumes:l.vod_play_from}))),u}async function kWe(e,t){let r=e.server.prefix,n=e.server.address().url.replace(":::","127.0.0.1:")+"/proxy",s=r.slice(r.lastIndexOf("/")+1),i=fc(s),o=ns(s),a=kf(o),c=e.body.id;c&&c.startsWith("push://")&&(a=yk(),c=c.slice(7),console.log("[play] push:",c));let u=e.body.flag,l=e.body.flags,A={play:`${c}`,flag:u};a=Ko(a,A);let f=await Ps(a),d={},h={},p="";if(i.includes("\u4E66")){let C=JSON.parse(f.url.replace("novel://",""));h.title=C.title,h.content=h.title+` -`+C.content,h.header=f.header,f=h}if(i.includes("\u753B"))d.content=f.url.replace("pics://","").split("&&").map(C=>{if(C.indexOf("@Referer=")){let m=C.split("@Referer=")[0];return p=C.split("@Referer=")[1],m}else return C}),p&&(d.header={Referer:p}),f=d;else if(f&&f.jx&&f.url){let C=f.url,m=Wie.parses.filter(Q=>Q.type===1);m=$ie(m);let I=Number(Nr.drpyS.parse_count)||6,y=Number(Nr.drpyS.parse_timeout)||5e3;console.log(`\u5F85\u5E76\u53D1\u7684json\u89E3\u6790\u6570\u91CF: ${m.length}`);let E=[],B=m.map((Q,S)=>{let T=Q.url+C;return{func:async function({jxObj:D,task_id:k}){let F=await Ps(k,{timeout:y}),j=Vie.query(F,"$.url");if(Array.isArray(j)&&(j=j[0]),console.log("_url:",j),!F.code||F.code===200||![-1,404,403].includes(F.code)){if(j){let H=j.lastIndexOf("/");if(j.slice(H+1).length>10)return{...F,name:D.name}}throw new Error(`${D.name} \u89E3\u6790 ${C} \u5931\u8D25: ${JSON.stringify(F)}`)}else throw new Error(`${D.name} \u89E3\u6790 ${C} \u5931\u8D25`)},param:{jxObj:Q,task_id:T},id:T}});await jie(B,{func:(Q,S,T,R)=>{if(T?console.error(`Task ${S} failed with error: ${T.message}`):R&&E.push({original:S,...R}),Q.stopOnFirst&&R&&R.url)return"break"},param:{stopOnFirst:!1}},I,16);let x=[];return E.forEach(Q=>{x.push(Q.name,Q.url)}),{parse:0,url:x}}else if(f&&f.parse&&f.url){let C=f.url;if(C&&C.startsWith("http")){let m=Nr.drpyS.sniffer_rule||"http((?!http).){12,}?\\.m3u8(?!\\?)",I=new RegExp(m);if(I.test(C))f.parse=0;else if(!I.test(C))if(Nr.drpyS.enable_hipy_sniffer&&Nr.drpyS.hipy_sniffer_url){let y=f.js,E=f.parse_extra,B={url:C,script:y?dk(y):void 0},v=Ko(Nr.drpyS.hipy_sniffer_url,B);E&&(v+=E);try{let x=await Ps(v);return console.log(`hipy\u55C5\u63A2\u5668\u4EFB\u52A1\u6267\u884C${v} \u5B8C\u6BD5: ${x.url}`),{parse:0,url:x.url,header:x.headers}}catch(x){console.log(`hipy\u55C5\u63A2\u5668\u55C5\u63A2\u9519\u8BEF: ${x.message}`)}}else{let y=await e.server.messageToDart({action:"sniff",opt:{url:C,timeout:1e4,rule:m}});if(y&&y.url){let E={};return y.headers&&(y.headers["user-agent"]&&(E["User-Agent"]=y.headers["user-agent"]),y.headers.referer&&(E.Referer=y.headers.referer),y.headers.cookie&&(E.Cookie=y.headers.cookie)),{parse:0,url:y.url,header:E}}}}}return f.url&&typeof f.url=="string"&&f.url.includes("http://127.0.0.1:5575/")?f.url=f.url.replaceAll("http://127.0.0.1:5575/proxy",n):f.url&&Array.isArray(f.url)&&f.url.find(C=>C.startsWith("http://127.0.0.1:5575/"))&&(f.url=JSON.parse(JSON.stringify(f.url).replaceAll("http://127.0.0.1:5575/proxy",n))),f}async function FWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=kf(i),a=e.body.wd,c=Number(e.body.page)||1,u=e.body.quick||void 0;o=Ko(o,{wd:a,pg:c,quick:u});let A=await Ps(o);return(s.includes("\u753B")||s.includes("\u4E66"))&&(A.list=A.list.map(f=>({book_id:f.vod_id,book_name:f.vod_name,book_pic:f.vod_pic,book_remarks:f.vod_remarks,book_content:f.vod_content}))),A}async function LWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=s.includes("\u753B")||s.includes("\u4E66");try{let a=function(l){l.statusCode&&l.statusCode==500&&console.error(l)},c={},u=await e.server.inject().post(`${r}/init`).payload({ext:{api:zie,extend:""},skey:n,stype:4});if(c.init=u.json(),a(u.json()),u=await e.server.inject().post(`${r}/home`),c.home=u.json(),a(u.json()),c.home.class.length>0&&(u=await e.server.inject().post(`${r}/category`).payload({id:c.home.class[0].type_id,page:1,filter:!0,filters:{}}),c.category=u.json(),a(u.json()),c.category.list.length>0&&(u=await e.server.inject().post(`${r}/detail`).payload({id:o?c.category.list[0].book_id:c.category.list[0].vod_id}),c.detail=u.json(),a(u.json()),c.detail.list&&c.detail.list.length>0))){c.play=[];for(let l of c.detail.list){let A=o?l.volumes:l.vod_play_from,f=o?l.urls:l.vod_play_url,d=A.split("$$$"),h=f.split("$$$");for(let p=0;p{e.post("/support",SWe),e.post("/init",_We),e.post("/home",RWe),e.post("/category",DWe),e.post("/detail",NWe),e.post("/play",kWe),e.post("/search",FWe),e.get("/test",LWe)}};var Ik=Fe(Rh(),1),qu=require("path"),hn=Fe(require("fs"),1),Kie=require("stream");async function OWe(e,t){let r=await kr.get(e,{responseType:"stream",headers:Object.assign({Range:"bytes=0-0"},t)}).catch(n=>(console.error(n),n.response||{status:500,data:{}}));if(r&&r.status===206){let n=r.headers["accept-ranges"]==="bytes",s=r.headers["content-range"],i=parseInt(r.headers["content-length"]),o=n||!!s||i===1,a=s?parseInt(s.split("/")[1]):i;return delete r.headers["content-range"],delete r.headers["content-length"],a&&(r.headers["content-length"]=a.toString()),[o,r.headers]}else return[!1,null]}var Qp={},Xie="",Ff=(process.env.NODE_PATH||".")+"/vod_cache",MWe=1024*1024*100;function PWe(e){try{hn.default.readdir(Ff,(t,r)=>{if(r)for(let n of r){if(n===e)continue;let s=(0,qu.join)(Ff,n);hn.default.stat(s,(i,o)=>{o&&o.isDirectory()&&hn.default.readdir(s,(a,c)=>{if(c)for(let u of c)u.endsWith(".p")||hn.default.rm((0,qu.join)(s,u),{recursive:!0},()=>{})})})}})}catch(t){console.error(t)}}async function UWe(e,t,r,n,s,i){if(n=n||Ik.default.enc.Hex.stringify(Ik.default.MD5(r)).toString(),Xie!==n&&(PWe(n),Xie=n),!Qp[n]){let[E,B]=await OWe(r,s);if(!E||!B["content-length"]){console.log(`[chunkStream] \u83B7\u53D6content-length\u5931\u8D25\uFF0C\u6267\u884C\u91CD\u5B9A\u5411\u5230: ${r}`),t.redirect(r);return}Qp[n]=B}let o=!0;await hn.default.promises.access((0,qu.join)(Ff,n)).catch(E=>o=!1),o||await hn.default.promises.mkdir((0,qu.join)(Ff,n),{recursive:!0});let a=parseInt(Qp[n]["content-length"]),c=0,u=a-1,l={};if(e.headers.range){let E=e.headers.range.trim().split(/=|-/);E.length>2&&E[2]&&(u=parseInt(E[2])),c=parseInt(E[1]),Object.assign(l,Qp[n]),l["content-length"]=(u-c+1).toString(),l["content-range"]=`bytes ${c}-${u}/${a}`,t.code(206)}else Object.assign(l,Qp[n]),t.code(200);i=i||{chunkSize:1024*256,poolSize:5,timeout:1e3*10};let A=i.chunkSize,f=i.poolSize,d=i.timeout,h=Math.ceil(a/A),p=Math.floor(c/A),C=p,m=!1,I={};for(let E=0;E{(async function v(x){if(m||p>=h){B();return}if(x===void 0&&(p-C)*A>=MWe){setTimeout(v,5);return}let Q=x||p++,S=`${e.id}-${Q}`;try{let T=(0,qu.join)(Ff,n,`${e.id}-${Q}.p`),R=!0;if(await hn.default.promises.access(T).catch(D=>R=!1),!R){let D=Q*A,k=Math.min(a-1,(Q+1)*A-1),F=await kr.get(r,{responseType:"stream",timeout:d,headers:Object.assign({Range:`bytes=${D}-${k}`},s)}),j=(0,qu.join)(Ff,n,`${e.id}-${Q}.dl`),H=hn.default.createWriteStream(j),U=setTimeout(()=>{H.destroy(new Error(`${S} read timeout`))},d),X=new Promise(Y=>{H.on("finish",async()=>{m?await hn.default.promises.rm(j).catch(G=>console.error(G)):(await hn.default.promises.rename(j,T).catch(G=>console.error(G)),I[S]=T),Y(!0)}),H.on("error",async G=>{console.error(G),await hn.default.promises.rm(j).catch(q=>console.error(q)),Y(!1)})});F.data.pipe(H);let L=await X;if(clearTimeout(U),!L){setTimeout(()=>{v(Q)},15);return}}setTimeout(v,5)}catch(T){console.error(T),setTimeout(()=>{v(Q)},15)}})()});t.headers(l);let y=new Kie.PassThrough;return new Promise(E=>{let B=!0;(async function v(){try{if(C>=h||m){y.end(),E();return}if(!B){setTimeout(v,5);return}let x=`${e.id}-${C}`;if(!I[x]){setTimeout(v,5);return}let Q=C*A,S=Math.min(a-1,(C+1)*A-1),T=Math.max(c,Q)-Q,R=I[x];delete I[x];let D=await hn.default.promises.open(R,"r"),k=Buffer.alloc(S-Q-T+1);await D.read(k,0,S-Q-T+1,T),await D.close().catch(F=>console.error(F)),await hn.default.promises.rm(R).catch(F=>console.error(F)),B=y.write(k),B||y.once("drain",()=>{B=!0}),C++,setTimeout(v,5)}catch{setTimeout(v,5)}})()}),y.on("close",async()=>{Object.keys(I).forEach(E=>{E.startsWith(e.id)&&(hn.default.rm(I[E],{recursive:!0},()=>{}),delete I[E])}),m=!0}),y}var Zie=UWe;var eoe=[Tne,bE,V$,lne,Ane,Hu],bk="/spider",Gb=[],Bk=[],Tp={},xk=null;async function vk(e){for(let t of eoe){let r=bk+"/"+t.meta.key+"/"+t.meta.type;t===Hu&&!Nr.drpyS.enable_home_site||t===bE&&Nr.drpyS.enable_dspush||(e.register(t.api,{prefix:r}),console.log("Register spider: "+r))}if(console.log(Nr),Nr.drpyS&&Nr.drpyS.config_url){let t=Nr.drpyS.config_url;if(t&&t.startsWith("http"))try{Tp=await Ps(t),Tp.homepage&&Tp.homepage.startsWith("https://github.com/hjdhnx")&&(Gb=Tp.sites.filter(n=>n.type===4).map(n=>{let s={},i=n.key,o=n.name,a=fc(o);return i==="push_agent"?s.type=4:a.includes("\u4E66")?s.type=10:a.includes("\u753B")?s.type=20:s.type=7,s.key=i==="push_agent"?"push":i,s.name=n.name,s.api=bk+"/drpyS/"+s.type+"/"+s.key,s.ext={api:n.api,extend:n.ext},s}),Bk=Tp.parses,Gb.forEach(n=>{let s=n.api;e.register(Hu.api,{prefix:s}),console.log("Register spider: "+s)}))}catch(r){xk=r.message,console.log(`\u52A0\u8F7D\u914D\u7F6E\u53D1\u751F\u4E86\u9519\u8BEF: ${xk}`)}}e.register(async t=>{t.get("/check",async function(r,n){n.send({run:!t.stop})}),t.get("/config",async function(r,n){let s={video:{sites:[]},read:{sites:[]},comic:{sites:[]},music:{sites:[]},pan:{sites:[]},color:t.config.color||[]};for(let i of eoe){if(i===Hu&&!Nr.drpyS.enable_home_site)continue;if(i===bE&&Nr.drpyS.enable_dspush)continue;let o=Object.assign({},i.meta);o.api=bk+"/"+o.key+"/"+o.type,o.key="nodejs_"+o.key,o.ext={};let a=i.meta.type;a<10?s.video.sites.push(o):a>=10&&a<20?s.read.sites.push(o):a>=20&&a<30?s.comic.sites.push(o):a>=30&&a<40?s.music.sites.push(o):a>=40&&a<50&&s.pan.sites.push(o)}Gb.forEach(i=>{let o=i.type;o<10?s.video.sites.push(i):o>=10&&o<20?s.read.sites.push(i):o>=20&&o<30?s.comic.sites.push(i):o>=30&&o<40?s.music.sites.push(i):o>=40&&o<50&&s.pan.sites.push(i)}),Hu.updateSiteMap(Gb),s.parses=Bk,s.drpyS_error=xk,Hu.updateDsCache("parses",Bk),console.log(`\u5171\u8BA1\u52A0\u8F7D\u4E86 ${s.video.sites.length} \u4E2A\u89C6\u9891\u6E90,\u5176\u4ED6\u6E90\u6682\u4E0D\u7EDF\u8BA1\uFF0C\u6B63\u5E38\u52A0\u8F7D\u5B8C\u6BD5`),n.send(s)}),t.all("/proxy",async(r,n)=>{try{let{thread:s,chunkSize:i,url:o,header:a}=r.query;if(!o){n.code(400).send({error:"url is required"});return}let c=decodeURIComponent(o),u=a?JSON.parse(decodeURIComponent(a)):{},l=r.headers,A=new URL(c),f={...l,...u,host:A.host,origin:`${A.protocol}//${A.host}`,referer:A.href};delete f["content-length"],delete f["transfer-encoding"],f["user-agent"]=f["user-agent"]||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",f.accept=f.accept||"*/*",f["accept-language"]=f["accept-language"]||"en-US,en;q=0.9",f["accept-encoding"]=f["accept-encoding"]||"gzip, deflate, br",delete f["sec-fetch-site"],delete f["sec-fetch-mode"],delete f["sec-fetch-dest"],delete f["sec-ch-ua"],delete f["sec-ch-ua-mobile"],delete f["sec-ch-ua-platform"],delete f.range;let d={chunkSize:i?1024*parseInt(i,10):1024*256,poolSize:s?parseInt(s,10):5,timeout:1e3*10},h=ns(c);return await Zie(r,n,c,h,f,d)}catch(s){n.code(500).send({error:s.message})}})})}var Zb=Fe(moe(),1);var ss=null;async function rze(e){ss=(0,Eoe.default)({serverFactory:catServerFactory,forceCloseConnections:!0,logger:process.env.NODE_ENV!=="development",maxParamLength:10240}),ss.messageToDart=async(n,s)=>{try{n.prefix||(n.prefix=s?s.server.prefix:""),console.log(n);let i=catDartServerPort();return i==0?null:(await tA.post(`http://127.0.0.1:${i}/msg`,n)).data}catch{return null}},ss.address=function(){let n=this.server.address();return n.url=`http://${n.address}:${n.port}`,n.dynamic="js2p://_WEB_",n},ss.addHook("onError",async(n,s,i)=>(console.error(i),i.statusCode||(i.statusCode=500),i)),ss.stop=!1,ss.config=e,ss.db=new Zb.JsonDB(new Zb.Config((process.env.NODE_PATH||".")+"/db.json",!0,!0,"/",!0)),ss.register(vk);let t=process.env.DEV_HTTP_PORT||5758,r=await Yie(t);ss.listen({port:r,host:"::"})}async function nze(){ss&&(ss.close(),ss.stop=!0),ss=null}0&&(module.exports={start,stop}); +`+C.content,h.header=f.header,f=h}if(i.includes("\u753B"))d.content=f.url.replace("pics://","").split("&&").map(C=>{if(C.indexOf("@Referer=")){let m=C.split("@Referer=")[0];return p=C.split("@Referer=")[1],m}else return C}),p&&(d.header={Referer:p}),f=d;else if(f&&f.jx&&f.url){let C=f.url,m=Wie.parses.filter(Q=>Q.type===1);m=$ie(m);let I=Number(Nr.drpyS.parse_count)||6,y=Number(Nr.drpyS.parse_timeout)||5e3;console.log(`\u5F85\u5E76\u53D1\u7684json\u89E3\u6790\u6570\u91CF: ${m.length}`);let E=[],B=m.map((Q,S)=>{let T=Q.url+C;return{func:async function({jxObj:D,task_id:k}){let F=await Ps(k,{timeout:y}),j=Vie.query(F,"$.url");if(Array.isArray(j)&&(j=j[0]),console.log("_url:",j),!F.code||F.code===200||![-1,404,403].includes(F.code)){if(j){let H=j.lastIndexOf("/");if(j.slice(H+1).length>10)return{...F,name:D.name}}throw new Error(`${D.name} \u89E3\u6790 ${C} \u5931\u8D25: ${JSON.stringify(F)}`)}else throw new Error(`${D.name} \u89E3\u6790 ${C} \u5931\u8D25`)},param:{jxObj:Q,task_id:T},id:T}});await jie(B,{func:(Q,S,T,R)=>{if(T?console.error(`Task ${S} failed with error: ${T.message}`):R&&E.push({original:S,...R}),Q.stopOnFirst&&R&&R.url)return"break"},param:{stopOnFirst:!1}},I,16);let x=[];return E.forEach(Q=>{x.push(Q.name,Q.url)}),{parse:0,url:x}}else if(f&&f.parse&&f.url){let C=f.url;if(C&&C.startsWith("http")){let m=Nr.drpyS.sniffer_rule||"http((?!http).){12,}?\\.m3u8(?!\\?)",I=new RegExp(m);if(I.test(C))f.parse=0;else if(!I.test(C))if(Nr.drpyS.enable_hipy_sniffer&&Nr.drpyS.hipy_sniffer_url){let y=f.js,E=f.parse_extra,B={url:C,script:y?dk(y):void 0},v=Ko(Nr.drpyS.hipy_sniffer_url,B);E&&(v+=E);try{let x=await Ps(v);return console.log(`hipy\u55C5\u63A2\u5668\u4EFB\u52A1\u6267\u884C${v} \u5B8C\u6BD5: ${x.url}`),{parse:0,url:x.url,header:x.headers}}catch(x){console.log(`hipy\u55C5\u63A2\u5668\u55C5\u63A2\u9519\u8BEF: ${x.message}`)}}else{let y=await e.server.messageToDart({action:"sniff",opt:{url:C,timeout:1e4,rule:m}});if(y&&y.url){let E={};return y.headers&&(y.headers["user-agent"]&&(E["User-Agent"]=y.headers["user-agent"]),y.headers.referer&&(E.Referer=y.headers.referer),y.headers.cookie&&(E.Cookie=y.headers.cookie)),{parse:0,url:y.url,header:E}}}}}return f.url&&typeof f.url=="string"&&f.url.includes("http://127.0.0.1:5575/")?f.url=f.url.replaceAll("http://127.0.0.1:5575/proxy",n):f.url&&Array.isArray(f.url)&&f.url.find(C=>C.startsWith("http://127.0.0.1:5575/"))&&(f.url=JSON.parse(JSON.stringify(f.url).replaceAll("http://127.0.0.1:5575/proxy",n))),f}async function FWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=kf(i),a=e.body.wd,c=Number(e.body.page)||1,u=e.body.quick||void 0;o=Ko(o,{wd:a,pg:c,quick:u});let A=await Ps(o);return(s.includes("\u753B")||s.includes("\u4E66"))&&(A.list=A.list.map(f=>({book_id:f.vod_id,book_name:f.vod_name,book_pic:f.vod_pic,book_remarks:f.vod_remarks,book_content:f.vod_content}))),A}async function LWe(e,t){let r=e.server.prefix,n=r.slice(r.lastIndexOf("/")+1),s=fc(n),i=ns(n),o=s.includes("\u753B")||s.includes("\u4E66");try{let a=function(l){l.statusCode&&l.statusCode==500&&console.error(l)},c={},u=await e.server.inject().post(`${r}/init`).payload({ext:{api:zie,extend:""},skey:n,stype:4});if(c.init=u.json(),a(u.json()),u=await e.server.inject().post(`${r}/home`),c.home=u.json(),a(u.json()),c.home.class.length>0&&(u=await e.server.inject().post(`${r}/category`).payload({id:c.home.class[0].type_id,page:1,filter:!0,filters:{}}),c.category=u.json(),a(u.json()),c.category.list.length>0&&(u=await e.server.inject().post(`${r}/detail`).payload({id:o?c.category.list[0].book_id:c.category.list[0].vod_id}),c.detail=u.json(),a(u.json()),c.detail.list&&c.detail.list.length>0))){c.play=[];for(let l of c.detail.list){let A=o?l.volumes:l.vod_play_from,f=o?l.urls:l.vod_play_url,d=A.split("$$$"),h=f.split("$$$");for(let p=0;p{e.post("/support",SWe),e.post("/init",_We),e.post("/home",RWe),e.post("/category",DWe),e.post("/detail",NWe),e.post("/play",kWe),e.post("/search",FWe),e.get("/test",LWe)}};var Ik=Fe(Rh(),1),qu=require("path"),hn=Fe(require("fs"),1),Kie=require("stream");async function OWe(e,t){let r=await kr.get(e,{responseType:"stream",headers:Object.assign({Range:"bytes=0-0"},t)}).catch(n=>(console.error(n),n.response||{status:500,data:{}}));if(r&&r.status===206){let n=r.headers["accept-ranges"]==="bytes",s=r.headers["content-range"],i=parseInt(r.headers["content-length"]),o=n||!!s||i===1,a=s?parseInt(s.split("/")[1]):i;return delete r.headers["content-range"],delete r.headers["content-length"],a&&(r.headers["content-length"]=a.toString()),[o,r.headers]}else return[!1,null]}var Qp={},Xie="",Ff=(process.env.NODE_PATH||".")+"/vod_cache",MWe=1024*1024*100;function PWe(e){try{hn.default.readdir(Ff,(t,r)=>{if(r)for(let n of r){if(n===e)continue;let s=(0,qu.join)(Ff,n);hn.default.stat(s,(i,o)=>{o&&o.isDirectory()&&hn.default.readdir(s,(a,c)=>{if(c)for(let u of c)u.endsWith(".p")||hn.default.rm((0,qu.join)(s,u),{recursive:!0},()=>{})})})}})}catch(t){console.error(t)}}async function UWe(e,t,r,n,s,i){if(n=n||Ik.default.enc.Hex.stringify(Ik.default.MD5(r)).toString(),Xie!==n&&(PWe(n),Xie=n),!Qp[n]){let[E,B]=await OWe(r,s);if(!E||!B["content-length"]){console.log(`[chunkStream] \u83B7\u53D6content-length\u5931\u8D25\uFF0C\u6267\u884C\u91CD\u5B9A\u5411\u5230: ${r}`),t.redirect(r);return}Qp[n]=B}let o=!0;await hn.default.promises.access((0,qu.join)(Ff,n)).catch(E=>o=!1),o||await hn.default.promises.mkdir((0,qu.join)(Ff,n),{recursive:!0});let a=parseInt(Qp[n]["content-length"]),c=0,u=a-1,l={};if(e.headers.range){let E=e.headers.range.trim().split(/=|-/);E.length>2&&E[2]&&(u=parseInt(E[2])),c=parseInt(E[1]),Object.assign(l,Qp[n]),l["content-length"]=(u-c+1).toString(),l["content-range"]=`bytes ${c}-${u}/${a}`,t.code(206)}else Object.assign(l,Qp[n]),t.code(200);i=i||{chunkSize:1024*256,poolSize:5,timeout:1e3*10};let A=i.chunkSize,f=i.poolSize,d=i.timeout,h=Math.ceil(a/A),p=Math.floor(c/A),C=p,m=!1,I={};for(let E=0;E{(async function v(x){if(m||p>=h){B();return}if(x===void 0&&(p-C)*A>=MWe){setTimeout(v,5);return}let Q=x||p++,S=`${e.id}-${Q}`;try{let T=(0,qu.join)(Ff,n,`${e.id}-${Q}.p`),R=!0;if(await hn.default.promises.access(T).catch(D=>R=!1),!R){let D=Q*A,k=Math.min(a-1,(Q+1)*A-1),F=await kr.get(r,{responseType:"stream",timeout:d,headers:Object.assign({Range:`bytes=${D}-${k}`},s)}),j=(0,qu.join)(Ff,n,`${e.id}-${Q}.dl`),H=hn.default.createWriteStream(j),U=setTimeout(()=>{H.destroy(new Error(`${S} read timeout`))},d),X=new Promise(Y=>{H.on("finish",async()=>{m?await hn.default.promises.rm(j).catch(G=>console.error(G)):(await hn.default.promises.rename(j,T).catch(G=>console.error(G)),I[S]=T),Y(!0)}),H.on("error",async G=>{console.error(G),await hn.default.promises.rm(j).catch(q=>console.error(q)),Y(!1)})});F.data.pipe(H);let L=await X;if(clearTimeout(U),!L){setTimeout(()=>{v(Q)},15);return}}setTimeout(v,5)}catch(T){console.error(T),setTimeout(()=>{v(Q)},15)}})()});t.headers(l);let y=new Kie.PassThrough;return new Promise(E=>{let B=!0;(async function v(){try{if(C>=h||m){y.end(),E();return}if(!B){setTimeout(v,5);return}let x=`${e.id}-${C}`;if(!I[x]){setTimeout(v,5);return}let Q=C*A,S=Math.min(a-1,(C+1)*A-1),T=Math.max(c,Q)-Q,R=I[x];delete I[x];let D=await hn.default.promises.open(R,"r"),k=Buffer.alloc(S-Q-T+1);await D.read(k,0,S-Q-T+1,T),await D.close().catch(F=>console.error(F)),await hn.default.promises.rm(R).catch(F=>console.error(F)),B=y.write(k),B||y.once("drain",()=>{B=!0}),C++,setTimeout(v,5)}catch{setTimeout(v,5)}})()}),y.on("close",async()=>{Object.keys(I).forEach(E=>{E.startsWith(e.id)&&(hn.default.rm(I[E],{recursive:!0},()=>{}),delete I[E])}),m=!0}),y}var Zie=UWe;var eoe=[Tne,bE,V$,lne,Ane,Hu],bk="/spider",Gb=[],Bk=[],Tp={},xk=null;async function vk(e){for(let t of eoe){let r=bk+"/"+t.meta.key+"/"+t.meta.type;t===Hu&&!Nr.drpyS.enable_home_site||t===bE&&Nr.drpyS.enable_dspush||(e.register(t.api,{prefix:r}),console.log("Register spider: "+r))}if(console.log(Nr),Nr.drpyS&&Nr.drpyS.config_url){let t=Nr.drpyS.config_url;if(t&&t.startsWith("http"))try{Tp=await Ps(t),Tp.homepage&&Tp.homepage.startsWith("https://github.com/hjdhnx")&&(Gb=Tp.sites.filter(n=>n.type===4).map(n=>{let s={},i=n.key,o=n.name,a=fc(o);return i==="push_agent"?s.type=4:a.includes("\u4E66")?s.type=10:a.includes("\u753B")?s.type=20:s.type=7,s.key=i==="push_agent"?"push":i,s.name=n.name,s.api=bk+"/drpyS/"+s.type+"/"+s.key,s.ext={api:n.api,extend:n.ext},s}),Bk=Tp.parses,Gb.forEach(n=>{let s=n.api;e.register(Hu.api,{prefix:s}),console.log("Register spider: "+s)}))}catch(r){xk=r.message,console.log(`\u52A0\u8F7D\u914D\u7F6E\u53D1\u751F\u4E86\u9519\u8BEF: ${xk}`)}}e.register(async t=>{t.get("/check",async function(r,n){n.send({run:!t.stop})}),t.get("/config",async function(r,n){let s={video:{sites:[]},read:{sites:[]},comic:{sites:[]},music:{sites:[]},pan:{sites:[]},color:t.config.color||[]};for(let i of eoe){if(i===Hu&&!Nr.drpyS.enable_home_site)continue;if(i===bE&&Nr.drpyS.enable_dspush)continue;let o=Object.assign({},i.meta);o.api=bk+"/"+o.key+"/"+o.type,o.key="nodejs_"+o.key,o.ext={};let a=i.meta.type;a<10?s.video.sites.push(o):a>=10&&a<20?s.read.sites.push(o):a>=20&&a<30?s.comic.sites.push(o):a>=30&&a<40?s.music.sites.push(o):a>=40&&a<50&&s.pan.sites.push(o)}Gb.forEach(i=>{let o=i.type;o<10?s.video.sites.push(i):o>=10&&o<20?s.read.sites.push(i):o>=20&&o<30?s.comic.sites.push(i):o>=30&&o<40?s.music.sites.push(i):o>=40&&o<50&&s.pan.sites.push(i)}),Hu.updateSiteMap(Gb),s.parses=Bk,s.drpyS_error=xk,Hu.updateDsCache("parses",Bk),console.log(`\u5171\u8BA1\u52A0\u8F7D\u4E86 ${s.video.sites.length} \u4E2A\u89C6\u9891\u6E90,\u5176\u4ED6\u6E90\u6682\u4E0D\u7EDF\u8BA1\uFF0C\u6B63\u5E38\u52A0\u8F7D\u5B8C\u6BD5`),n.send(s)}),t.all("/proxy",async(r,n)=>{try{let{thread:s,chunkSize:i,url:o,header:a}=r.query;if(!o){n.code(400).send({error:"url is required"});return}let c=o,u=a?JSON.parse(a):{},l=r.headers,A=new URL(c),f={...l,...u,host:A.host,origin:`${A.protocol}//${A.host}`,referer:A.href};delete f["content-length"],delete f["transfer-encoding"],f["user-agent"]=f["user-agent"]||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",f.accept=f.accept||"*/*",f["accept-language"]=f["accept-language"]||"en-US,en;q=0.9",f["accept-encoding"]=f["accept-encoding"]||"gzip, deflate, br",delete f["sec-fetch-site"],delete f["sec-fetch-mode"],delete f["sec-fetch-dest"],delete f["sec-ch-ua"],delete f["sec-ch-ua-mobile"],delete f["sec-ch-ua-platform"],delete f.range;let d={chunkSize:i?1024*parseInt(i,10):1024*256,poolSize:s?parseInt(s,10):6,timeout:1e3*10},h=ns(c);return await Zie(r,n,c,h,f,d)}catch(s){n.code(500).send({error:s.message})}})})}var Zb=Fe(moe(),1);var ss=null;async function rze(e){ss=(0,Eoe.default)({serverFactory:catServerFactory,forceCloseConnections:!0,logger:process.env.NODE_ENV!=="development",maxParamLength:10240}),ss.messageToDart=async(n,s)=>{try{n.prefix||(n.prefix=s?s.server.prefix:""),console.log(n);let i=catDartServerPort();return i==0?null:(await tA.post(`http://127.0.0.1:${i}/msg`,n)).data}catch{return null}},ss.address=function(){let n=this.server.address();return n.url=`http://${n.address}:${n.port}`,n.dynamic="js2p://_WEB_",n},ss.addHook("onError",async(n,s,i)=>(console.error(i),i.statusCode||(i.statusCode=500),i)),ss.stop=!1,ss.config=e,ss.db=new Zb.JsonDB(new Zb.Config((process.env.NODE_PATH||".")+"/db.json",!0,!0,"/",!0)),ss.register(vk);let t=process.env.DEV_HTTP_PORT||5758,r=await Yie(t);ss.listen({port:r,host:"::"})}async function nze(){ss&&(ss.close(),ss.stop=!0),ss=null}0&&(module.exports={start,stop}); /*! Bundled license information: forwarded/index.js: