您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Press the [~] tilde key under ESC to open a prompt with all tags
// ==UserScript== // @name Get Booru Tags // @namespace https://github.com/onusai/ // @version 0.4.8 // @description Press the [~] tilde key under ESC to open a prompt with all tags // @author Onusai#6441 // @match https://gelbooru.com/index.php?page=post&s=view* // @match https://safebooru.donmai.us/posts/* // @match https://danbooru.donmai.us/posts/* // @match https://aibooru.online/posts/* // @grant none // @license MIT // ==/UserScript== // todo: add support for safebooru.org/index.php?page=post&s=view* and realbooru.com (function() { 'use strict'; // edit to change default behavior let include_commas = true; // seperate each tag with a comma let remove_underscores = true; // replace underscores with spaces let remove_parentheses = false; // remove parentheses from tags let randomize_tag_order = false; // randomizes tags within each group, group order stays the same let escape_colons = false; // escapes colons, usually has no impact // edit to change tag group order or remove certain groups completely let tag_group_order = ["character", "general", "artist", "copyright"]; // "metadata" // edit to change hotkeys let hotkey_default = '`'; let hotkey_1 = '1'; // randomize tags function randomize_tags(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } } let keysPressed = {}; $(document).on('keyup', (event) => { if (event.key == hotkey_default) show_prompt(randomize_tag_order); }); $(document).on('keydown', (event) => { keysPressed[event.key] = true; if (!keysPressed[hotkey_default]) return; if (event.key == hotkey_1) show_prompt(true); }) function show_prompt(randomize=false) { for (var member in keysPressed) delete keysPressed[member]; let tags = null; let url = window.location.href; if (url.includes("/gelbooru.com"))tags = get_gel_tags(randomize); else if (url.includes("/danbooru.donmai.us") || url.includes("/safebooru.donmai.us") || url.includes("/aibooru.online")) tags = get_dan_tags(randomize); if (!tags) return; let tag_count = tags.length; for (var i = 0; i < tag_count; i++) { if (remove_underscores) tags[i] = tags[i].replaceAll("_", " "); else tags[i] = tags[i].replaceAll(" ", "_"); } tags = tags.join(", "); if (!include_commas) tags = tags.replaceAll(",", ""); if (escape_colons) tags = tags.replaceAll(":", ":\\"); if (remove_parentheses) tags = tags.replaceAll("(", "").replaceAll(")", ""); else tags = tags.replaceAll("(", "\\(").replaceAll(")", "\\)"); prompt("Prompt: " + tag_count + " tags", tags); } function get_gel_tags(randomize=false) { let tags = []; for (let group of tag_group_order) { let group_tags = []; for (let e of document.getElementsByClassName("tag-type-"+group)) group_tags.push(e.children[1].textContent); if (randomize) randomize_tags(group_tags); tags = tags.concat(group_tags); } return tags; } function get_dan_tags(randomize=false) { let tags = []; for (let group of tag_group_order) { group = ((group == "metadata") ? "meta" : group); let group_tags = []; for (let e of document.getElementsByClassName(group+"-tag-list")) { if (e.tagName != "UL") continue; for (let te of e.getElementsByClassName("search-tag")) group_tags.push(te.textContent); } if (randomize) randomize_tags(group_tags); tags = tags.concat(group_tags); } return tags; } })();