您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Make Donload button click to save a description text file.
当前为
// ==UserScript== // @name Civitai Text Downloader // @namespace http://tampermonkey.net/ // @version 5.1 // @description Make Donload button click to save a description text file. // @author SenY // @match https://civitai.com/* // @icon https://civitai.com/favicon.ico // @grant none // @license BSD // ==/UserScript== (function() { 'use strict'; setInterval(function(){ document.querySelectorAll('*[href^="/api/download/"]').forEach(button => { if(!button.classList.contains("ctd-done")){ button.addEventListener("click", function(){ let _id = location.pathname.split("/")[2]; let file_id = button.getAttribute("href").split("/")[4].replace(/\?.*$/, ''); fetch("https://civitai.com/api/v1/models/" + _id).then(x => x.json()).then(j => { let file = j.modelVersions.find(x => x.id == file_id); let link = document.createElement('a'); let text = { "description": "", "sd version": { "SD 1.5": "SD1" }[file.baseModel] || "Unknown", "activation text": "", "preferred weight": 0, "notes": document.URL }; if(j.description && j.description.textContent){ text.description = j.description.textContent; } if(file.trainedWords){ text["activation text"] = file.trainedWords.join(" "); } text = [JSON.stringify(text)]; link.href = window.URL.createObjectURL(new Blob(text)); let filename = file.files.find(x => x).name || file_id + ".json"; filename = filename.replace(/\.[a-z]*$/, ".json") link.download = filename; link.click(); let image = file.images.find(x => x); if(image){ let xhr = new XMLHttpRequest(); let src = image.url; let suffix = "." + src.slice(src.lastIndexOf('.') + 1); suffix = ".png"; // URLの拡張子がjpegになってても実際にimage.civitai.comが返す画像はpngっぽいのでハードコーディングで決め打ち xhr.open('GET', src, true); xhr.responseType = "blob"; xhr.onload = function () { let dlLink = document.createElement("a"); const dataUrl = URL.createObjectURL(this.response); dlLink.href = dataUrl; filename = filename.replace(".json", suffix) dlLink.download = filename; document.body.insertAdjacentElement("beforeEnd", dlLink); dlLink.click(); dlLink.remove(); setTimeout(function () { window.URL.revokeObjectURL(dataUrl); }, 1000); }; xhr.send(); } }); }); button.style.color = "#ffff00"; button.classList.add("ctd-done"); } }); }, 500); })();