fix: better tag filter

Also formatted it with biomejs

I didn't realize that Honkai Star R(ai)l has AI in it 💀
This commit is contained in:
2024-03-07 00:39:56 +07:00
parent 7e07d807d5
commit c28408cabc
8 changed files with 262 additions and 250 deletions

View File

@ -5,7 +5,7 @@
// @match *://www.pixiv.net/*
// @icon https://upload.wikimedia.org/wikipedia/commons/7/7e/Pixiv_Icon.svg
// @grant none
// @version 1.0.2
// @version 1.0.3
// @author tretrauit
// @run-at document-idle
// @homepageURL https://gitlab.com/tretrauit/scripts
@ -14,32 +14,44 @@
// ==/UserScript==
function checkAI() {
if (!window.location.pathname.includes("/artworks/")) {
return;
}
const tagElms = document.querySelectorAll(".gtm-new-work-tag-event-click");
for (const elm of tagElms) {
if (elm.parentElement.parentElement.textContent.toLowerCase().includes("ai")) {
alert("AI artwork detected :(");
break;
}
}
if (!window.location.pathname.includes("/artworks/")) {
return;
}
const tagElms = document.querySelectorAll(".gtm-new-work-tag-event-click");
for (const elm of tagElms) {
const parentElm = elm.parentElement.parentElement;
for (const childElm of parentElm.children) {
const text = childElm.innerText.trim();
const textLowerCase = text.toLowerCase();
if (
text.startsWith("AI") ||
text.endsWith("AI") ||
textLowerCase === "ai" ||
(textLowerCase.includes("ai") &&
(textLowerCase.includes("generated") ||
textLowerCase.includes("illustration")))
) {
alert("AI artwork detected :(");
return;
}
}
}
}
// Stack Overflow thingy
let previousUrl = "";
const observer = new MutationObserver(() => {
if (window.location.href !== previousUrl) {
console.log(`URL changed from ${previousUrl} to ${window.location.href}`);
previousUrl = window.location.href;
// do your thing
setTimeout(checkAI, 1000);
}
if (window.location.href !== previousUrl) {
console.log(`URL changed from ${previousUrl} to ${window.location.href}`);
previousUrl = window.location.href;
// do your thing
setTimeout(checkAI, 1000);
}
});
const config = { subtree: true, childList: true };
// start observing change
console.log("AI notifier for Pixiv is running...");
observer.observe(document, config);
setTimeout(checkAI, 1000);
setTimeout(checkAI, 1000);