Add package emit mode option

This commit is contained in:
the1812 2020-10-19 17:12:10 +08:00
parent e17388a26c
commit 2a2eb45502
15 changed files with 105 additions and 77 deletions

View File

@ -501,6 +501,7 @@ declare global {
unfoldFeeds: boolean,
feedsImageExporter: boolean,
columnImageExporter: boolean,
downloadPackageEmitMode: '打包下载' | '分别下载',
latestVersionLink: string,
currentVersion: string,
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -28,7 +28,7 @@
"clear-cache.min.js": "9AB1536D8278DA681831A589AD1414425BF206B36AE109FB4EC1E8A685BB2A9F",
"collapse-live-side-bar.min.css": "22348786547D2D8DB659A306AF2E9C1F2050D66488778C71545AAEF785FD57E6",
"collapse-live-side-bar.min.js": "BB1B1CF157099A70F1AEA3F154C84D9CA1A84A29B5F6E42357CA9F51FFC4965C",
"column-image-exporter.min.js": "EC98F065908736A6DA91A3F8AA68BF8DC9D4D3F2973E374BA7C36C66F5669345",
"column-image-exporter.min.js": "DA5AAE1D53273AE5D1F0950547A3500F5E6E67011F1C68757751AE5D3F148A0A",
"combo-like.min.js": "368DA34768E947628099D258ED23BC5FFFCFFD25A47346E086C7975C8A52F997",
"comment-apis.min.js": "193C9F7E1B288699B01146031A3401E5B5ED6F5DE4D64C15E1D4D20FAB077A01",
"comment-dark.min.css": "E980508E86203743C36FEE4F7149BFF53961ECBC4EC140E8C162D18D395B940A",
@ -38,7 +38,7 @@
"compact-layout.min.css": "CAC8B0DBA8E90B38D31F0811B7B469709052204AC36D5D3F20FE5D0899FDDCCB",
"compact-layout.min.js": "B20609A7CBBDB1845FA0156FB5BE6B1E1A1B8B069EA85F65D16241DD2C12D738",
"copy-comment-link.min.js": "0488EB370A89B79F39120AB5EF7696F9FEF354E12724E7E41197AE8D1A9A6553",
"copy-feeds-link.min.js": "E13B09593E00520336D9DB97383437ACE66F8E49CD408E336A536C22538EA98A",
"copy-feeds-link.min.js": "9B4DDB9001A8879F1AC893BDD812B0A0F2810B238A7AC3581F0CF248BDC1B0F4",
"custom-control-background.min.css": "1981FD2BF3B17ECF33F98D5DEDAF0D32ACBE9532A51FDB70822286991AB98EF3",
"custom-control-background.min.js": "B9F366B251D1572ACE801FF6ECF15D4D1AAB3EA5A5B04B961B6F4310E2AB1A84",
"custom-navbar-activities.min.js": "C2825BA81A3DD933346745F3FC8C45ED88932E180F65E7C8D7EED5CA3559A05E",
@ -71,7 +71,7 @@
"dark-schedule.min.js": "853C446547603F4F0425F19F09F73335C9EC451A790C1C07E5E5B88A09E9B453",
"dark-styles.min.js": "77F12E4F159C5139E1FC6030615F88EFD0A02443D34C3C4EDC3DB0B85F081631",
"dark.min.css": "EB41BBFB1AFBAA512456710911FB6A21B5B46B61679D901F600D9C6C5992E529",
"dark.user.css": "33D34E814FE6EBE4F21688577B1650AF876D46BAE203E47C421F50A5375485B0",
"dark.user.css": "9937A2001B339F3AE19DD0F3C90EA04AA65BF7436FC20873D16C3ABC13410E6D",
"debounce.min.js": "54D33E1273C1F3FE19550BF1844339C3D54D6B01DF8A39C3162D95B93B079CFA",
"default-danmaku-settings.min.css": "D9942B184FEDA7B08CFA0C34920E97D7A83B81762DCBF757642EBB60F95FF25D",
"default-danmaku-settings.min.js": "9DBC9AC9B5A3B59EBCC6F04D36527B523D66203AC5FE7C2AD5DB46FFB84F9382",
@ -86,11 +86,11 @@
"download-audio.min.js": "1F4536DE4FF302BFD026CA17E028AF8EB037FB6D0CB355692549DECAEAE0E8C9",
"download-danmaku.min.js": "BB6DAA0F0FD4FFAA8816FB45F8697E17F8B576EFE0DB048C248FD7E3063F8E34",
"download-live-records.min.js": "7EF26D22D22EB75A6B27B78B3DB0E2ADE6004587C11B0C2893CF1CCB3B6FAB6F",
"download-package.min.js": "4A09ADE741443A1949B7E6354DFC80C91254611BCAB184D5D65DFCB8B153305D",
"download-subtitle.min.js": "EAD1F63E53C5A0A9877EBF655B68FB3438601D2869F31D0D4A2F7BD2A215E5F3",
"download-video-package.min.js": "79C0338420F6B388B1F5FFB50DB8333CD8DBF253DFF564F143AA0C01E79EF518",
"download-video.min.css": "E312176F7A6AA8492FCF0E6422327996D8B9FAB866A39CEA237E43FE353B6569",
"download-video.min.html": "A4A17A677C1306AB0FAFEE26098D785533317B92F487BB1452E12A4F66A43303",
"download-video.min.js": "D025027B81451BFBDB0F04304DBB98CF90170E5838D20CDFCA39E0952D49BD17",
"download-video.min.js": "B425243D99A2DF30D822930E3659D3761383E57F67B198FD1E2A87F2F160B2B2",
"dpi-img.vue.min.js": "11DF7577B754D8C01E8331E4FDAC9494E72523099845A0D6B0D897849CD841D6",
"expand-danmaku.min.js": "B21658C40085AEA8DC49652AE62EB8610BB2EBEAF7A9C9AF69EF3B11E08EEC8D",
"expand-description.min.css": "58C7710A50521B80F7D872BDC4C652610D84C4FABC6874BA66DA37B4F8759224",
@ -101,7 +101,7 @@
"feeds-apis.min.js": "0A70658F6A398AC5122C4328F69EC93FC122BD19319F89C3DECF60389DC68C30",
"feeds-filter-card.vue.min.js": "D743BEF3C77C8A9AB8AA5DD24E8BD0A7AF7E638319137A103F3A9CF278F66CB4",
"feeds-filter.min.js": "9E8BC1A669D97992E888A3154FCE64912CE0B7A303D6BE40C3CA0C71A9533B96",
"feeds-image-exporter.min.js": "E92D2820FF7BD37AA4D930C9A89DF32B989B4E6A06F8AF6E0C3D9AE777343F81",
"feeds-image-exporter.min.js": "2FAB2F9AA7B396AA20C81044578067C592770FB262A7B05C0C54C4394ADC2F37",
"feeds-translate-providers.min.js": "DD3B48C051ED1CD89AB79B2563723B2639D8737EF2194136D63ABAA8D4B64F6C",
"feeds-translate.min.css": "54E959EC2AD38451B288E0DC669A269BF916CDB0F6B78497E2C315EB2811EF02",
"feeds-translate.min.js": "02C12D7A3382E185FF67C503C6287759ED18D2E9C838C2B94668953272BA09B1",
@ -123,7 +123,7 @@
"gbk.min.js": "872D7A4562F13A539C4A9AF1825DE89E610C775F1AD026EA6986A80DD74E4B53",
"get-number.min.js": "7B81A45D0F7D7F68CC6EDE25E02FCD76F8A05B2CF29274F94A99980BB23D8B76",
"gui-settings.min.css": "787D487EF39F28C18815C755BB4CA336355B84778861DCC70AA5AC998FDB9CC7",
"gui-settings.min.html": "760D5BFDF0A042C1FA0D13CF978C02AC4B3EC81D6E895527C1B53DE0F199B6DC",
"gui-settings.min.html": "AB918E5C79F2E28616444D8679A6F8CFB2971B2528B26A9D4689A2E72D7B444F",
"gui-settings.min.js": "A092181BBAF56712E2F62B46552DE97D582FB1891B626D9D55276E577BC44D7A",
"haruna-scale.min.js": "FD079C86741F614FD63E733CF9B7B896A7D20110754815A540F3341D4DC252B2",
"hide-bangumi-reviews.min.js": "7265C0CE994FDA926355A9A4F9B207E7E68E749D47332F3C537EF93E97927A23",

Binary file not shown.

View File

@ -1 +1 @@
(()=>{return(i,t)=>{(async()=>{const i=["https://t.bilibili.com/","https://space.bilibili.com/","https://live.bilibili.com/"];if(i.every(i=>!document.URL.includes(i))){return}const{forEachFeedsCard:e,addMenuItem:s}=await t.importAsync("feeds-apis");const c=i=>{s(i,{className:"copy-link",text:"复制链接",action:()=>{GM_setClipboard(`https://t.bilibili.com/${i.id}`,{mimetype:"text/plain"})}})};e({added:c})})()}})();
(()=>{return(t,e)=>{(async()=>{const{forEachFeedsCard:t,addMenuItem:a}=await e.importAsync("feeds-apis");const i=t=>{a(t,{className:"copy-link",text:"复制链接",action:()=>{GM_setClipboard(`https://t.bilibili.com/${t.id}`,{mimetype:"text/plain"})}})};t({added:i})})()}})();

View File

@ -1 +1 @@
(()=>{return(e,t)=>{class n{constructor(e={}){this.config=e;this.entries=[]}download(e,t){const a=document.createElement("a");const i=URL.createObjectURL(t);if(n.lastPackageUrl){URL.revokeObjectURL(n.lastPackageUrl)}n.lastPackageUrl=i;a.setAttribute("href",i);a.setAttribute("download",escapeFilename(e));document.body.appendChild(a);a.click();a.remove()}add(e,t){if(t===null||t===undefined){return}console.log(`add file: ${escapeFilename(e)}`);this.entries.push({name:escapeFilename(e),data:t})}async blob(){if(this.entries.length===0){return null}if(this.entries.length===1){const e=this.entries[0].data;return typeof e==="string"?new Blob([e]):e}const e=new JSZip;this.entries.forEach(({name:t,data:n})=>{e.file(t,n)});return await e.generateAsync({type:"blob"})}async emit(e){if(this.entries.length===0){return}if(!e||this.entries.length===1){e=this.entries[0].name}const t=await this.blob();if(!t){return}return this.download(e,t)}static async single(e,t,a={}){const i=new n(a);i.add(e,t);return await i.emit()}}n.lastPackageUrl="";return{export:{DownloadPackage:n}}}})();
(()=>{return(e,t)=>{class n{constructor(e={}){this.config=e;this.entries=[]}download(e,t){const a=document.createElement("a");const i=URL.createObjectURL(t);if(n.lastPackageUrl){URL.revokeObjectURL(n.lastPackageUrl)}n.lastPackageUrl=i;a.setAttribute("href",i);a.setAttribute("download",escapeFilename(e));document.body.appendChild(a);a.click();a.remove()}add(e,t){if(t===null||t===undefined){return}console.log(`add file: ${escapeFilename(e)}`);this.entries.push({name:escapeFilename(e),data:t})}async blob(){if(this.entries.length===0){return null}if(this.entries.length===1){const e=this.entries[0].data;return typeof e==="string"?new Blob([e]):e}const e=new JSZip;this.entries.forEach(({name:t,data:n})=>{e.file(t,n)});return await e.generateAsync({type:"blob"})}async emit(t){if(this.entries.length===0){return}if(!t||this.entries.length===1){t=this.entries[0].name}if(e.downloadPackageEmitMode==="分别下载"&&this.entries.length>1){await Promise.all(this.entries.map(e=>n.single(e.name,e.data,this.config)));return}const a=await this.blob();if(!a){return}return this.download(t,a)}static async single(e,t,a={}){const i=new n(a);i.add(e,t);return await i.emit()}}n.lastPackageUrl="";return{export:{DownloadPackage:n}}}})();

File diff suppressed because one or more lines are too long

View File

@ -1,14 +1,6 @@
import { FeedsCard } from '../feeds-apis'
(async () => {
const urlList = [
'https://t.bilibili.com/',
'https://space.bilibili.com/',
'https://live.bilibili.com/',
]
if (urlList.every(url => !document.URL.includes(url))) {
return
}
const { forEachFeedsCard, addMenuItem } = await import('../feeds-apis')
const addCopyLinkButton = (card: FeedsCard) => {
addMenuItem(card, {

View File

@ -99,6 +99,7 @@ Resource.manifest = {
updateCdn: '更新源',
autoHideSideBar: '自动隐藏侧栏',
elegantScrollbar: '使用细滚动条',
downloadPackageEmitMode: '多文件下载模式',
},
dropdown: [
{
@ -116,7 +117,11 @@ Resource.manifest = {
{
key: 'updateCdn',
items: ['jsDelivr', 'GitHub'],
}
},
{
key:'downloadPackageEmitMode',
items: ['打包下载', '分别下载'],
},
],
},
useDarkStyle: {
@ -291,17 +296,17 @@ Resource.manifest = {
useCache: '启用缓存'
}
},
videoDownloadPackage: {
path: 'download-video-package.min.js',
videoPackage: {
path: 'download-package.min.js',
},
downloadVideo: {
path: 'download-video.min.js',
html: true,
style: 'instant',
dependencies: ['title', 'videoInfo', 'videoDownloadPackage'],
dependencies: ['title', 'videoInfo', 'videoPackage'],
displayNames: {
'downloadVideo': '下载视频',
'videoDownloadPackage': '下载视频打包器',
'videoPackage': '下载视频打包器',
'batchDownload': '批量下载',
'aria2Rpc': 'aria2 RPC',
}

View File

@ -278,6 +278,7 @@ const fixedSettings = {
oldTweets: false,
customNavbarCompact: false,
watchlaterExpireWarnings: false,
downloadPackageEmitMode: '打包下载',
latestVersionLink: 'https://cdn.jsdelivr.net/gh/the1812/Bilibili-Evolved@preview/bilibili-evolved.preview.user.js',
currentVersion: GM.info.script.version,
}

View File

@ -47,6 +47,10 @@ export class DownloadPackage {
if (!filename || this.entries.length === 1) {
filename = this.entries[0].name
}
if (settings.downloadPackageEmitMode === '分别下载' && this.entries.length > 1) {
await Promise.all(this.entries.map(e => DownloadPackage.single(e.name, e.data, this.config)))
return
}
const blob = await this.blob()
if (!blob) {
return

View File

@ -180,6 +180,7 @@
<dropdown indent="0" key="updateCdn" dependencies=""></dropdown>
<dropdown indent="0" key="scriptLoadingMode" dependencies=""></dropdown>
<dropdown indent="0" key="guiSettingsDockSide" dependencies=""></dropdown>
<dropdown indent="0" key="downloadPackageEmitMode" dependencies=""></dropdown>
<textbox indent="0" key="sideBarOffset" dependencies=""></textbox>
<checkbox indent="0" key="elegantScrollbar" dependencies=""></checkbox>
<checkbox indent="0" key="autoHideSideBar" dependencies=""></checkbox>