Last active
September 28, 2024 02:41
-
-
Save TypeA2/bff1474c0f4ca2188cf21897d4e4b2dd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Easier 1up | |
// @namespace https://github.com/TypeA2/booru-scripts | |
// @match *://*.donmai.us/uploads/* | |
// @grant none | |
// @version 1.0.3 | |
// @author TypeA2 | |
// @description 2024-06-18 (initial), 2024-06-19 (current) | |
// @downloadURL https://github.com/TypeA2/booru-scripts/raw/refs/heads/master/Easier_1up.user.js | |
// @updateURL https://github.com/TypeA2/booru-scripts/raw/refs/heads/master/Easier_1up.user.js | |
// @run-at document-end | |
// ==/UserScript== | |
"use strict"; | |
function copy_tags(post, parent) { | |
/* Copy tags and rating, omit commentary tags */ | |
/* All except commentary tags, but there's one gentag: | |
* https://danbooru.donmai.us/tags?search[name_or_alias_matches]=*commentary*&limit=1000 | |
*/ | |
const tags = post.dataset.tags.split(" ").filter(t => t === "social_commentary" || t.indexOf("commentary") == -1); | |
document.querySelector(`input.radio_buttons[value='${post.dataset.rating}']`).checked = true; | |
if (parent) { | |
document.getElementById("post_parent_id").value = post.dataset.id; | |
} else { | |
tags.push("child:" + post.dataset.id); | |
} | |
const tags_field = document.getElementById("post_tag_string"); | |
tags_field.value = tags.join(" ") + " "; | |
$(tags_field).trigger("input"); | |
document.querySelector(".source-tab").click(); | |
Danbooru.Utility.notice("Succesfully copied tags. Please check the commentary tags.", false); | |
} | |
function process_node(node) { | |
if (node.className !== "iqdb-posts") { | |
return; | |
} | |
for (const post of node.getElementsByTagName("article")) { | |
const similarity = post.querySelector(".iqdb-similarity-score"); | |
const links = similarity.parentNode; | |
const set_parent = document.createElement("a"); | |
set_parent.innerText = "parent"; | |
set_parent.href = "#"; | |
set_parent.addEventListener("click", () => copy_tags(post, true)); | |
const set_child = document.createElement("a"); | |
set_child.innerText = "child"; | |
set_child.href = "#"; | |
set_child.addEventListener("click", () => copy_tags(post, false)); | |
links.appendChild(document.createTextNode(" | ")); | |
links.appendChild(set_parent); | |
links.appendChild(document.createTextNode(" | ")); | |
links.appendChild(set_child); | |
} | |
} | |
function mutation_callback(mutations, observer) { | |
for (const mutation of mutations) { | |
switch (mutation.type) { | |
case "childList": | |
mutation.addedNodes.forEach(process_node); | |
break; | |
} | |
} | |
} | |
(()=>{ | |
const similar = document.getElementById("iqdb-similar"); | |
const observer = new MutationObserver(mutation_callback); | |
const config = { | |
subtree: true, | |
childList: true, | |
} | |
observer.observe(similar, config); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment