Bilibili-Evolved/min/column-image-exporter.min.js
2021-10-26 13:22:15 +08:00

1 line
1.1 KiB
JavaScript

(()=>(t,n)=>({widget:{condition:()=>document.URL.startsWith("https://www.bilibili.com/read/cv"),content:`\n<button class="gui-settings-flat-button column-image-export">\n<i class="mdi mdi-24px mdi-export"></i>\n<span>导出图片</span>\n</button>`,success:()=>{const t=dq(".column-image-export");const e=dq(t,"span");t.addEventListener("click",(async()=>{try{t.disabled=true;e.textContent="下载中...";const a=[];const o=document.title.replace(/ - 哔哩哔哩$/,"");const i=dq(".banner-image .card-image__image");const s=retrieveImageUrl(i);if(s){a.push({...s,name:`${o}-banner${s.extension}`})}const c=dqa('.article-content .img-box img:not([class*="cut-off-"])');c.forEach((t=>{const n=retrieveImageUrl(t);if(n){a.push({...n,name:`${o}-${a.length}${n.extension}`})}}));if(a.length===0){Toast.info("此专栏没有检测到任何图片.","专栏图片导出");return}const{DownloadPackage:r}=await n.importAsync("download-package");const l=await Promise.all(a.map((({url:t})=>Ajax.getBlob(t))));const d=new r;l.forEach(((t,n)=>d.add(a[n].name,t)));await d.emit(`${o}.zip`)}catch(t){logError(t)}finally{e.textContent="导出图片";t.disabled=false}}))}}}))();