zip-downloader

资源下载器(下载资源、Zip 压缩、下载到本地)

이 스크립트는 직접 설치하는 용도가 아닙니다. 다른 스크립트에서 메타 지시문 // @require https://update.greasyfork.org/scripts/559087/1716149/zip-downloader.js을(를) 사용하여 포함하는 라이브러리입니다.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

작성자
xiaohuohumax
버전
2.0.3
생성일
2025-12-16
갱신일
2025-12-18
크기
277KB
라이선스
MIT

Zip Downloader

资源下载器(下载资源、Zip 压缩、下载到本地)

项目地址 开源协议 更新日志 问题反馈

📥 参数说明

Options 参数说明:

参数名 类型 是否必填 默认值 说明
filename string 保存的文件名,添加此参数时会将压缩包保存到本地,未配置返回压缩包的 Blob 对象
resources Resource[] 资源列表,数组,每个元素为对象,包含 nameurl 或者 blob 字段
concurrency number 10 并发数,默认 10
onProgress (index: number) => Promise 下载进度回调函数,参数为当前正在下载的资源索引

Resource 参数说明:

参数名 类型 是否必填 默认值 说明
name string 资源名称
url string URL 类型资源
blob Blob Blob 类型资源

📦 使用示例

下载,压缩,并保存到本地

await zipDownloader({
  filename: 'index.zip',
  resources: [
    { name: 'index.html', url: location.href },
    {
      name: 'hello.txt',
      blob: new Blob(['hello world'], { type: 'text/plain' }),
    },
  ],
  concurrency: 10,
  async onProgress(index) {
    console.log(`正在下载第 ${index + 1} 个资源`)
  },
})

仅下载和压缩

const blob = await zipDownloader({
  resources: [
    { name: 'index.html', url: location.href },
    {
      name: 'hello.txt',
      blob: new Blob(['hello world'], { type: 'text/plain' }),
    },
  ],
  concurrency: 10,
  async onProgress(index) {
    console.log(`正在下载第 ${index + 1} 个资源`)
  },
})
// 自行处理
// GM_download(URL.createObjectURL(blob), 'index.zip')

📖 使用方式

方式一:直接引入库文件

// ==UserScript==
// @require      https://**/zip-downloader.js?*
// @grant        GM_download
// ==/UserScript==

(async function () {
  'use strict'
  await zipDownloader({
    filename: 'index.zip',
    resources: [
      { name: 'index.html', url: location.href },
      {
        name: 'hello.txt',
        blob: new Blob(['hello world'], { type: 'text/plain' }),
      },
    ],
    concurrency: 10,
    async onProgress(index) {
      console.log(`正在下载第 ${index + 1} 个资源`)
    },
  })
})()

方式二:vite + vite-plugin-monkey [推荐]

  1. 初始化项目
npm create monkey
  1. 安装 zip-downloader 依赖
npm i @xiaohuohumax/zip-downloader
  1. 在 main.ts 中使用 zip-downloader
import zipDownloader from '@xiaohuohumax/zip-downloader'

await zipDownloader({
  filename: 'index.zip',
  resources: [
    { name: 'index.html', url: location.href },
    {
      name: 'hello.txt',
      blob: new Blob(['hello world'], { type: 'text/plain' }),
    },
  ],
  concurrency: 10,
  async onProgress(index) {
    console.log(`正在下载第 ${index + 1} 个资源`)
  },
})
  1. 修改 vite.config.ts 排除 zip-downloader 依赖和添加 GM_download 权限
import { defineConfig } from 'vite'
import monkey, { cdn } from 'vite-plugin-monkey'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    monkey({
      build: {
        externalGlobals: {
          '@xiaohuohumax/zip-downloader': cdn.jsdelivr('zipDownloader', 'dist/index.lib.js'),
        },
      },
      userscript: {
        grant: ['GM_download']
      },
    }),
  ],
})

🧩 依赖项目

🚨 免责声明

  • 本脚本仅供学习交流使用
  • 请勿用于任何商业用途
  • 使用本脚本产生的任何后果由用户自行承担

♻ 其他说明

GreasyFork 或者 ScriptCat 回复不及时,问题反馈推荐直接在 Github 提 Issue。

如果觉得本脚本对你有帮助,欢迎点个 ⭐ Star 支持一下!