// 脚本引用 https://raw.githubusercontent.com/kokoryh/Sparkle/master/dist/webpage.bilibili.js // Built at: 2025/8/20 22:25:56 function y(n={}){let e=Object.create(null),t=r=>typeof r=="string"?r.toLowerCase():r;for(let[r,o]of Object.entries(n))e[t(r)]=o;let s={get(r,o){return Reflect.get(r,t(o))},set(r,o,i){return Reflect.set(r,t(o),i)},has(r,o){return Reflect.has(r,t(o))},deleteProperty(r,o){return Reflect.deleteProperty(r,t(o))},ownKeys(r){return Reflect.ownKeys(r)},getOwnPropertyDescriptor(r,o){return Reflect.getOwnPropertyDescriptor(r,t(o))},defineProperty(r,o,i){return Reflect.defineProperty(r,t(o),i)}};return new Proxy(e,s)}function b(n){return typeof n!="object"||n===null?String(n):n instanceof Date?n.toISOString():n instanceof RegExp?n.toString():Array.isArray(n)?JSON.stringify(n):typeof n.toString=="function"&&n.toString!==Object.prototype.toString?n.toString():JSON.stringify(n)}var p=class n{static getInstance(e){let t="Surge";if(typeof $loon<"u")t="Loon";else if(typeof $task<"u")throw new Error("QuantumultX is not supported");return n.instances[t]||(n.instances[t]=n.classNames[t](e,t)),n.instances[t]}static classNames={Surge:(e,t)=>new l(e,t),Loon:(e,t)=>new m(e,t)};static instances={};className;name;logLevels={debug:1,info:2,warn:3,error:4,off:5};logLevel=this.logLevels.error;request;response;argument;_url;get url(){return this._url||(this._url=new URL(this.request.url)),this._url}constructor(e,t){this.className=t??"",this.name=e??"",this.init()}createProxy(e){return new Proxy(e,{get:this.getFn,set:this.setFn})}getFn(e,t,s){return Reflect.get(e,t,s)}setFn(e,t,s,r){return Reflect.set(e,t,s,r),!0}setName(e){this.name=e}getJSON(e){let t=this.getVal(e);return t?JSON.parse(t):null}setJSON(e,t){this.setVal(JSON.stringify(e),t)}logWithPrefix(e,t){console.log(`${e}${t.map(s=>b(s)).join(" | ")}`)}log(...e){this.logWithPrefix("",e)}debug(...e){this.logLevel>this.logLevels.debug||this.logWithPrefix("[DEBUG]",e)}info(...e){this.logLevel>this.logLevels.info||this.logWithPrefix("[INFO]",e)}warn(...e){this.logLevel>this.logLevels.warn||this.logWithPrefix("[WARN]",e)}error(...e){this.logLevel>this.logLevels.error||this.logWithPrefix("[ERROR]",e)}exit(){$done({})}},l=class n extends p{static propertyMap={bodyBytes:"body"};getFn(e,t,s){let r=n.propertyMap[t]||t;return super.getFn(e,r,s)}setFn(e,t,s,r){let o=n.propertyMap[t]||t;return super.setFn(e,o,s,r)}init(){typeof $request=="object"&&(this.request=this.createProxy($request)),typeof $response=="object"&&(this.response=this.createProxy($response)),typeof $argument=="string"&&(this.argument=JSON.parse($argument),"logLevel"in this.argument&&(this.logLevel=this.logLevels[this.argument.logLevel]??this.logLevels.error))}getVal(e){return $persistentStore.read(e)}setVal(e,t){return $persistentStore.write(e,t)}fetch(e){let{method:t,body:s,timeout:r=5,...o}=e;return new Promise((i,d)=>{$httpClient[t]({...o,body:s,"binary-mode":s instanceof Uint8Array,timeout:r},(c,u,f)=>{if(c)return d(c);let S=f instanceof Uint8Array?"bodyBytes":"body";i({status:u.status,headers:u.headers,[S]:f})})})}notify(e=this.name,t="",s="",r={}){let{openUrl:o,clipboard:i,mediaUrl:d,dismiss:c,sound:u=!0}=r,f={url:o,text:i,"media-url":d,"auto-dismiss":c,sound:u};o?f.action="open-url":i&&(f.action="clipboard"),$notification.post(e,t,s,f)}ungzip(e){return $utils.ungzip(e)}done(e){$done(e)}abort(){$done({abort:!0})}},m=class extends l{init(){super.init(),typeof $argument=="object"&&(this.argument=$argument,"logLevel"in this.argument&&(this.logLevel=this.logLevels[this.argument.logLevel]??this.logLevels.error))}fetch(e){return e.timeout=(e.timeout??5)*1e3,super.fetch(e)}notify(e=this.name,t="",s="",r={}){let{openUrl:o,mediaUrl:i,clipboard:d,delay:c}=r,u={openUrl:o,mediaUrl:i,clipboard:d};$notification.post(e,t,s,u,c)}abort(){$done()}};var a=p.getInstance();var g=class{message;domParser=new DOMParser;styleTemplate;scriptTemplate;filterList;constructor(){if(!y(a.response.headers)["content-type"]?.includes("text/html"))throw new Error("Invalid URL");this.message=this.fromString(a.response.body)}done(){a.done({body:this.toString()})}process(){if(this.filterList&&this.filterList.forEach(({selector:e,filterFn:t})=>{this.remove(this.query(e).filter(t))}),this.scriptTemplate){let e=this.message.createElement("script");e.textContent=this.scriptTemplate,this.append(this.message.head,e)}if(this.styleTemplate){let e=this.message.createElement("style");e.textContent=this.styleTemplate,this.append(this.message.head,e)}return this}fromString(e){return this.domParser.parseFromString(e,"text/html")}toString(){return`${this.message.documentElement.outerHTML}`}query(e){return Array.from(this.message.querySelectorAll(e))}append(e,...t){return t.map(s=>e.appendChild(s))}remove(e){return e.map(t=>t.parentElement?.removeChild(t))}};var h=class extends g{scriptTemplate="(()=>{var i=new Set,l=[\"EvaLayoutContainerPrerender\",\"EvaLayoutContainer\",\"EvaLinkButton\"];function a(n){return l.includes(n)}function d(n){let e=n.props?.jumpAddress;return e?!new URL(e).hostname.includes(\"bilibili\"):!1}function o(n,e=[]){for(let t of n){let r=a(t.name);r&&e.push(t.uuid),d(t)&&e.forEach(s=>i.add(s)),t.slots?.length&&u(t.slots,e),r&&e.pop()}}function u(n,e=[]){for(let t of n)t.children?.length&&o(t.children,e)}function c(n){return n.map(e=>`#${e}{display:none!important}`).join(\"\")}function m(){let n=window.__BILIACT_EVAPAGEDATA__?.layerTree;if(!n)return;o(n);let e=document.createElement(\"style\");e.textContent=c(Array.from(i)),document.head.append(e)}m();})();\n"};try{new h().process().done()}catch(n){a.error(n,a.request.url)}finally{a.exit()}