您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mass downloads all images from a collection on one page
// ==UserScript== // @name Imgsrc.ru Downloader // @namespace https://imgsrc.ru // @version 1.0.0 // @description Mass downloads all images from a collection on one page // @author You // @match https://imgsrc.ru/main/tape.php* // @icon https://www.google.com/s2/favicons?sz=64&domain=imgsrc.ru // @grant GM_xmlhttpRequest // @license MIT // ==/UserScript== if (typeof GM_download !== 'function') { if (typeof GM_xmlhttpRequest !== 'function') { throw new Error('GM_xmlhttpRequest is undefined. Please set @grant GM_xmlhttpRequest at metadata block.'); } function GM_download (url, name) { if (url == null) return; var data = { method: 'GET', responseType: 'arraybuffer', onload: function (res) { var blob = new Blob([res.response], {type: 'application/octet-stream'}); var url = URL.createObjectURL(blob); // blob url var a = document.createElement('a'); a.setAttribute('href', url); a.setAttribute('download', data.name != null ? data.name : 'filename'); document.documentElement.appendChild(a); // call download // a.click() or CLICK the download link can't modify filename in Firefox (why?) // Solution from FileSaver.js, https://github.com/eligrey/FileSaver.js/ var e = new MouseEvent('click'); a.dispatchEvent(e); document.documentElement.removeChild(a); setTimeout(function(){ // reduce memory usage URL.revokeObjectURL(url); if ('close' in blob) blob.close(); // File Blob.close() API, not supported by all the browser right now blob = undefined; }, 1000); if (typeof data.onafterload === 'function') data.onafterload(); // call onload function } // error object of onerror function is not supported right now }; if (typeof url === 'string') { data.url = url; data.name = name; } else { if (url instanceof Object === false) return; // as documentation, you can only use [url, name, headers, saveAs, onload, onerror] function, but we won't check them // Notice: saveAs is not supported if (url.url == null) return; for (var i in url) { if (i === 'onload') data.onafterload = url.onload; // onload function support else data[i] = url[i]; } } // it returns this GM_xhr, thought not mentioned in documentation return GM_xmlhttpRequest(data); } } (function() { 'use strict'; const imageUrls = [] const imageElements = document.querySelectorAll('.fts') const imageDiv = document.querySelector('.h100') for (let i = 0; i < imageElements.length; i++) { const url = 'https://' + imageElements[i].getAttribute('src'); imageUrls.push(url) } const buttonDiv = document.createElement("div") buttonDiv.style.display = 'flex' buttonDiv.style['justify-content'] = 'center' const btn = document.createElement("button") btn.innerText = 'Download all images on this page' btn.id = 'download' btn.style.color = '#fff' btn.style.background = '#000' btn.style.border = 'none' btn.style.padding = '20px' btn.style['border-radius'] = '15px' buttonDiv.append(btn) imageDiv.prepend(buttonDiv) btn.addEventListener("mouseenter", () => { btn.style.background = '#4e4e4e' btn.style.cursor = 'pointer' }) btn.addEventListener("mouseleave", () => { btn.style.background = '#000' }) btn.addEventListener("click", () => { for (let i = 0; i < imageUrls.length; i++) { GM_download({ url: imageUrls[i], name: imageUrls[i].split('/')[imageUrls[i].split('/').length - 1], saveAs: false }); } }) })();