Greasy Fork is available in English.
Adobe Firefly 直接提供下载按钮, 无水印
// ==UserScript==// @name Adobe Firefly 下载// @namespace http://tampermonkey.net/// @version 1.3// @description Adobe Firefly 直接提供下载按钮, 无水印// @license AGPL-3.0-or-later// @author Y.V// @match *://firefly.adobe.com/*// @icon https://firefly.adobe.com/adobe_favicon.ico// @grant GM_addStyle// @grant GM_xmlhttpRequest// @grant GM_registerMenuCommand// @grant unsafeWindow// @require https://code.jquery.com/jquery-3.6.0.min.js// ==/UserScript==class AdobeFireflyDownloader {constructor() {this.init = false;this.initCanvas = false;this.initSpBtn = false;this.intervalId = null;}initialize() {this.intervalId = setInterval(this.main.bind(this), 1000);}createButton(clickHandler) {const userLanguage = navigator.language;const buttonEl = $("<button class='test'>");buttonEl.css({display: "inline-block",position: "absolute",bottom: "10px",right: "10px",padding: "10px","z-index": "9999",backgroundColor: "#4A90E2",color: "#FFF",border: "none",borderRadius: "4px",fontSize: "14px",fontWeight: "bold",textTransform: "uppercase",cursor: "pointer",outline: "none",boxShadow: "0px 2px 4px rgba(0, 0, 0, 0.2)",transition: "background-color 0.3s ease",});buttonEl.hover(() => {buttonEl.css({backgroundColor: "#357ACD",});},() => {buttonEl.css({backgroundColor: "#4A90E2",});});if (userLanguage.startsWith("zh")) {buttonEl.text("下载图片");} else {buttonEl.text("Download");}buttonEl.on("click", clickHandler);return buttonEl;}main() {const textToImages = $(".clio-thumbnail-wrapper img");const textEffectsCanvas = $("canvas")[0];const testEl = $(".test")[0];let generativeFill = $('sp-theme clio-inpaint')[0];let self = this;if (textToImages.length === 4) {if (!this.init) {textToImages.each(function () {const buttonEl = self.createButton( () => {const linkEl = $("<a>");const timestamp = Date.now();const fileName = "image" + timestamp + ".jpg";linkEl.attr("href", $(this).attr("src"));linkEl.attr("download", fileName);linkEl.css("display", "none");$("body").append(linkEl);linkEl[0].click();linkEl.remove();});$(this).parent().parent().parent().parent().append(buttonEl);});this.init = true;}}if (!testEl) {const buttonEl = this.createButton(() => {const dataURL = textEffectsCanvas.toDataURL("image/png");const link = $("<a>").attr({"href": dataURL,"download": "image" + Date.now() + ".png",}).appendTo("body");link[0].click();link.remove();});if (textEffectsCanvas) {textEffectsCanvas.parentElement.appendChild(buttonEl.get(0));}}if (generativeFill) {generativeFill = generativeFill.shadowRoot;const b = $(generativeFill).find('main clio-md-stage')[0].shadowRoot;const c = $(b).find('#container clio-md-compositor-canvas')[0].shadowRoot;const gfCanvas = $(c).find('canvas')[0];const buttonEl = this.createButton(() => {const dataURL = gfCanvas.toDataURL("image/png");const link = $("<a>").attr({"href": dataURL,"download": "image" + Date.now() + ".png",}).appendTo("body");link[0].click();link.remove();});if (gfCanvas && !$(generativeFill).find('.test')[0]) {$(generativeFill)[0].appendChild(buttonEl.get(0));}}}initializeSpBtnListener() {let self = this;setInterval(() => {const sp = $('sp-button');if (sp) {if (!this.initSpBtn) {sp.click(() => {this.init = false;$('.test').remove();});$(document).keydown(function(event) {if (event.keyCode === 13) {self.init = false;$('.test').remove();}});} else {this.initSpBtn = true;}}}, 1000);}start() {this.initialize();this.initializeSpBtnListener();}stop() {clearInterval(this.intervalId);}}const downloader = new AdobeFireflyDownloader();downloader.start();