// ==UserScript== // @name Hentai Foundry Downloader // @namespace BigDuckie.HentaiFoundryDownloader // @version 2025.1.13 // @description A script to add Ctrl + S support to Hentai Foundry, as well as a convenient download button. // @icon https://www.google.com/s2/favicons?sz=64&domain=hentai-foundry.com // @author Big Duckie // @copyright 2025, Big Duckie (https://bigduckie.dev) // @license MIT // @match *://*.hentai-foundry.com/pictures/user/* // @grant GM_download // ==/UserScript== (function () { 'use strict'; const regex = /\/user\/(.*)\/(\d*)\/(.*)/g; let m = regex.exec(window.location.href); var imageFilename = `${m[1]}-${m[2]}-${m[3].replace("-", "_")}`; var imageUrl = `https://pictures.hentai-foundry.com/${m[1].substring(0, 1).toLowerCase()}/${m[1]}/${m[2]}/${imageFilename}` var button = document.createElement("a"); button.setAttribute("class", "linkButton picButton"); button.setAttribute("id", "downloadBtn"); button.setAttribute("title", "Download Image"); button.appendChild(document.createTextNode("⇩ DOWNLOAD IMAGE")); button.addEventListener("click", event => { GM_download(`${imageUrl}.jpg`, `${imageFilename}.jpg`) GM_download(`${imageUrl}.png`, `${imageFilename}.png`) }); document.querySelector("#picBox>div.boxfooter").append(button) document.addEventListener("keydown", event => { if (event.ctrlKey || event.metaKey) { switch (String.fromCharCode(event.which).toLowerCase()) { case 's': event.preventDefault(); button.click(); break; } } }); })();