(()=>{return(e,t)=>{const{getFriendlyTitle:n}=t.import("title");let s=null;let i=null;class o{constructor(e,t){this.blob=e;this.time=t;this.url=URL.createObjectURL(this.blob)}get filename(){return n()+" @"+this.time.toString()+".png"}revoke(){URL.revokeObjectURL(this.url)}}const r=e=>{if(s===null||i===null){s=document.createElement("canvas");s.width=e.videoWidth;s.height=e.videoHeight;i=s.getContext("2d")}const t=e.currentTime;return new Promise((n,r)=>{if(s===null||i===null){r("视频截图失败: canvas 未创建或创建失败.");return}i.drawImage(e,0,0);s.toBlob(e=>{if(e===null){r("视频截图失败: 创建 blob 失败.");return}n(new o(e,t))},"image/png")})};t.applyStyle("videoScreenshotStyle");document.body.insertAdjacentHTML("beforeend",`\n
\n \n
\n`);Vue.component("video-screenshot",{props:{objectUrl:String,filename:String},template:`\n \n
![]()
\n
\n
`,methods:{discard(){this.$emit("discard")}}});const c=new Vue({el:".video-screenshot-list",data:{screenshots:[]},methods:{discard(e){this.screenshots.splice(this.screenshots.indexOf(e),1);e.revoke()}}});Observer.videoChange(async()=>{const e=await SpinQuery.select("#bofqi video");const t=await SpinQuery.select(".bilibili-player-video-time");if(e===null||t===null||document.querySelector(".video-take-screenshot")){return}t.insertAdjacentHTML("afterend",`\n \n \n
`);const n=document.querySelector(".video-take-screenshot");if(n===null){return}n.addEventListener("click",async()=>{const t=await r(e);c.screenshots.push(t)})});return{export:{takeScreenshot:r,screenShotsList:c}}}})();