Bulk DL or Single DL on img click
// ==UserScript==
// @name VSCO Gallery DL
// @version 1
// @description Bulk DL or Single DL on img click
// @license MIT
// @match https://vsco.co/*/gallery
// @icon https://www.google.com/s2/favicons?sz=64&domain=vsco.co
// @grant GM_download
// @namespace https://greasyfork.org/users/1205165
// ==/UserScript==
const observer = new MutationObserver(() => {
addClickEventOnImgs();
});
(function () {
"use strict";
addClickEventOnImgs();
const userBox = document.querySelector(".css-8o02ty");
const followBtn = document.querySelector(".css-sa5rcr");
const gridImgs = document.querySelector(".css-1ub14e5");
observer.observe(gridImgs, {
subtree: true,
childList: true,
});
const box = document.createElement("div");
box.style.display = "flex";
box.style.justifyContent = "space-around";
box.style.gap = "1rem";
const dlBtn = document.createElement("div");
dlBtn.setAttribute("class", "css-sa5rcr e2k8kpg0");
const dlBtnLink = document.createElement("a");
dlBtnLink.textContent = "Download All";
dlBtnLink.setAttribute("class", "css-10rsioe eq8m7vf1");
dlBtnLink.setAttribute("href", "#");
dlBtnLink.addEventListener("click", (e) => {
e.preventDefault();
const images = document.querySelectorAll(".MediaThumbnail a div div img");
Array.from(images).forEach((el, i) => {
const url = el.src.split("?")[0];
e.preventDefault();
GM_download({
url,
name: `image${i}.jpg`,
saveAs: false,
onerror: (e) => console.error(e),
});
});
});
dlBtn.appendChild(dlBtnLink);
box.appendChild(dlBtn);
box.appendChild(followBtn);
userBox.appendChild(box);
})();
function addClickEventOnImgs() {
const images = document.querySelectorAll(".MediaThumbnail a div div img");
Array.from(images).forEach((el, i) => {
const url = el.src.split("?")[0];
el.onclick = (e) => downloadOnClickEvent(e, url, i);
});
}
function downloadOnClickEvent(e, url, i) {
e.preventDefault();
GM_download({
url,
name: `image${i}.jpg`,
saveAs: false,
onerror: (e) => console.error(e),
});
}