Bilibili-Evolved/min/view-cover.min.js
2018-12-19 23:04:47 +08:00

1 line
2.4 KiB
JavaScript

(()=>{return(e,n)=>{const t=n.attributes.videoInfo.export.VideoInfo;class i{constructor(e){this.url=e;if($(".image-viewer").length===0){this.createDom()}this.viewer=$(".image-viewer-container");this.downloadImage()}createDom(){$("body").append(n.data.imageViewerDom.text);$(".image-viewer-container .close").on("click",()=>this.hide());n.applyStyle("imageViewerStyle")}downloadImage(){const e=new XMLHttpRequest;e.open("GET",this.url.replace("http:","https:"),true);e.responseType="blob";e.onload=(()=>{const n=document.title.replace("_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili","").replace("_番剧_bilibili_哔哩哔哩","");const t=URL.createObjectURL(e.response);this.imageData=t;this.viewer.find(".download").attr("href",t).attr("download",n);this.viewer.find(".image").prop("src",t)});e.send()}show(){this.viewer.addClass("opened")}hide(){this.viewer.removeClass("opened")}}if($("meta[itemprop='image'],meta[property='og:image']").length>0){return{widget:{content:`\n <button\n class="gui-settings-flat-button"\n id="view-cover">\n <i class="icon-view"></i>\n <span>查看封面</span>\n </button>`,condition:async()=>{const e=await SpinQuery.condition(()=>(unsafeWindow||window).aid,e=>e!==undefined);return e!=="undefined"},success:async()=>{async function e(){const e=(unsafeWindow||window).aid;const n=new t(e);await n.fetchInfo();return n.coverUrl}let n=new i(await e());$("#view-cover").on("click",()=>{n.show()});Observer.subtree("#bofqi",async()=>{n=new i(await e())})}}}}else{return{widget:{content:`\n <button\n class="gui-settings-flat-button"\n id="view-cover">\n <i class="icon-view"></i>\n <span>查看封面</span>\n </button>`,condition:async()=>{const e=await SpinQuery.any(()=>$(".header-info-ctnr .room-cover"));return typeof e!=="undefined"},success:async()=>{const e=$(".header-info-ctnr .room-cover");const n=e.attr("href").match(/space\.bilibili\.com\/([\d]+)/);if(n&&n[1]){const e=n[1];const t=`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${e}`;const o=await downloadText(t);const a=JSON.parse(o).data.cover;const s=new i(a);$("#view-cover").on("click",()=>{s.show()})}}}}}}})();