Greasy Fork is available in English.

GM_DL

GM_download but it actually works

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.org/scripts/523457/1519388/GM_DL.js

// ==UserScript==
// @name        GM_DL
// @namespace   Violentmonkey Scripts
// @grant       GM.xmlHttpRequest
// @version     1.3
// @author      https://greasyfork.org/en/users/1409235-paywalldespiser
// @description GM_download but it actually works
// @license     MIT
// @require     https://cdn.jsdelivr.net/npm/[email protected]/dist/FileSaver.min.js
// ==/UserScript==
/**
* Arguments for GM_DL
*
* @typedef {object} GM_DL_ARGS
* @property {string | URL} url
* @property {string} filename
* @property {("GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "TRACE" | "OPTIONS" | "CONNECT")} [method='GET']
* @property {("follow" | "error" | "manual")} [redirect='follow']
* @property {string | undefined} data
* @property {{ [key: string]: string; } | undefined} headers
*/
/**
* GM_download but it actually works
*
* @param {GM_DL_ARGS}
* @returns {Promise<void>}
*/
function GM_DL({
url,
filename,
method = 'GET',
redirect = 'follow',
data,
headers,
}) {
return GM.xmlHttpRequest({
url,
method,
responseType: 'blob',
redirect,
data,
headers,
}).then(({ response }) => saveAs(response, filename));
}