您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Select specified tags and copy to clipboard, for Stable Diffusion WebUI or NovelAI to use.
// ==UserScript== // @name Danbooru Tags Select to Export (EDITED) // @version 0.2.12 // @description Select specified tags and copy to clipboard, for Stable Diffusion WebUI or NovelAI to use. // @author FSpark/ScriptAnon // @require https://code.jquery.com/jquery-3.6.1.min.js // @match https://gelbooru.com/index.php?page=post&s=view&id=* // @match https://danbooru.donmai.us/posts/* // @match https://e621.net/posts/* // @match https://rule34.xxx/index.php?page=post&s=view&id=* // @match https://rule34.paheal.net/post/view/* // @match https://furry.booru.org/index.php?page=post&s=view&id=* // @match https://e926.net/posts/* // @match https://booru.allthefallen.moe/posts/* // @match https://tbib.org/index.php?page=post&s=view&id=* // @match https://aibooru.online/posts/* // @match https://lolibooru.moe/post/show/* // @grant GM_setClipboard // @grant GM_notification // @license AGPL-3.0/MIT // @namespace https://greasyfork.org/users/972837 // ==/UserScript== (function () { 'use strict'; let Container = document.createElement('div'); Container.id = "tags-exporter-container"; Container.innerHTML =`<button id="select_all">Select All</button> <button id="select_none">Select None</button> <button id="invert_select">Invert Select</button> <button id="export">Export</button> `; function insertAfter(newNode, referenceNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } let hot_key = "`"; // edit to change hotkey let remove_commas = false; // set to false to include commas let remove_underscores = true; // set to false to include underscore let remove_parentheses = true; // set to false to include parentheses if (window.location.href.includes("/danbooru.donmai.us") || window.location.href.includes("/aibooru.online") || window.location.href.includes("/booru.allthefallen.moe")) { get_dan_tags(); } if (window.location.href.includes("/gelbooru.com")) { get_gel_tags(); } if (window.location.href.includes("/e621.net")) { get_e621_tags(); } if (window.location.href.includes("/e926.net")) { get_e926_tags(); } if (window.location.href.includes("/rule34.paheal.net")) { get_rule34paheal_tags(); } if (window.location.href.includes("/rule34.xxx")||(window.location.href.includes("/lolibooru.moe"))) { get_rule34xxx_tags(); }; if (window.location.href.includes("/furry.booru.org")||(window.location.href.includes("/tbib.org"))) { get_furrybooru_tags(); } function get_gel_tags() { insertAfter( Container, document.querySelector("#container > section")); let elms = ["tag-type-general", "tag-type-character", "tag-type-metadata", "tag-type-artist", "tag-type-copyright"]; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; chk.value=e.children[1].textContent.replaceAll("_"," "); e.insertBefore(chk,e.children[0]); }) }); } function get_dan_tags() { insertAfter( Container, document.querySelector("#tag-list")); let elms = ["general-tag-list", "character-tag-list", "meta-tag-list", "artist-tag-list", "copyright-tag-list"]; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { if (e.tagName == "UL") { Array.from(e.getElementsByClassName("search-tag")).forEach(s => { let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; console.log(s.parentNode); console.log(s.parentNode.dataset); chk.value=s.parentNode.dataset.tagName.replaceAll("_"," "); s.parentNode.insertBefore(chk,s.parentNode.firstChild); }) } }) }); } function get_e621_tags() { insertAfter( Container, document.querySelector("#tag-list")); let elms = ["artist-tag-list", "species-tag-list", "general-tag-list"]; let iprompt = []; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { if (e.tagName == "UL") { Array.from(e.getElementsByClassName("search-tag")).forEach(s => { let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; chk.value=s.textContent.replaceAll("_"," "); s.parentNode.insertBefore(chk,s.parentNode.firstChild); }) } }) }); } function get_e926_tags() { insertAfter( Container, document.querySelector("#tag-list")); let elms = ["artist-tag-list", "copyright-tag-list", "character-tag-list", "species-tag-list", "general-tag-list","lore-tag-list"]; let iprompt = []; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { if (e.tagName == "UL") { Array.from(e.getElementsByClassName("search-tag")).forEach(s => { let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; chk.value=s.textContent.replaceAll("_"," "); s.parentNode.insertBefore(chk,s.parentNode.firstChild); }) } }) }); } function get_rule34paheal_tags() { insertAfter( Container, document.querySelector("#Post_Controlsleft > h3")); let elms = ["tag_name_cell"]; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { Array.from(e.getElementsByClassName("tag_name")).forEach(s => { let elm = s.parentNode.parentNode.firstChild; let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; chk.value=s.textContent.replaceAll("_"," "); s.parentNode.parentNode.insertBefore(chk,elm); }) }) }); } function get_furrybooru_tags() { insertAfter( Container, document.querySelector("#tag-sidebar")); let elms = ["tag-type-general", "tag-type-character", "tag-type-metadata", "tag-type-artist", "tag-type-copyright"]; elms.forEach(tag => { Array.from(document.getElementsByClassName(tag)).forEach(e => { //console.log(e); let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; console.log(e.children[0].textContent); chk.value=e.children[0].textContent.replaceAll("_"," "); e.insertBefore(chk,e.children[0]); }) }); } function get_rule34xxx_tags() { let elm = document.getElementById("tag-sidebar"); let pattern = /(^\d)|(\s)|([[A-Za-z])/g; let iprompt = []; insertAfter( Container, elm); let children = elm.children; Array.from(children).forEach(li => { console.log(li); if (li.innerText == "Character" || li.innerText == "Artist" || li.innerText == "General") { } else { var tag = li.innerText.replace("?", "").trim(); var tagarray = tag.match(pattern).toString().replaceAll(",", "").trim(); let chk = document.createElement('input'); chk.type="checkbox"; chk.name="general-tags"; chk.value=tagarray.replaceAll("_"," "); li.insertBefore(chk,li.firstChild) } }); } document.getElementById("select_all").onclick=function(){ var items=document.getElementsByName("general-tags"); for(var i=0;i<items.length;i++){ items[i].checked=true; } }; document.getElementById("select_none").onclick=function(){ var items=document.getElementsByName("general-tags"); for(var i=0;i<items.length;i++){ items[i].checked=false; } }; document.getElementById("invert_select").onclick=function(){ var items=document.getElementsByName("general-tags"); for(var i=0;i<items.length;i++){ items[i].checked==true?items[i].checked=false:items[i].checked=true; } }; document.getElementById("export").onclick=function(){ let tags=[] document.querySelectorAll("[name='general-tags']:checked").forEach((e)=>{tags.push(e.value)}) let res=tags.join(", ") GM_setClipboard(res) GM_notification(`${tags.length} tag(s) were copied.`,"Danbooru Tags Exporter") }; })();