将角色标记为是否兼容代理(主要在搜索中)。
当前为
// ==UserScript==
// @name JanitorAI Proxy Checker
// @name:zh-CN JanitorAI 代理检查器
// @name:ja JanitorAI プロキシチェッカー
// @name:es JanitorAI Comprobador de proxy
// @name:nl JanitorAI Proxy-checker
// @namespace http://tampermonkey.net/
// @version 2025-08-15
// @description Marks characters as proxy-compatible or not primarily in search.
// @description:zh-CN 将角色标记为是否兼容代理(主要在搜索中)。
// @description:ja 主に検索で、キャラクターがプロキシ対応かどうかを表示します。
// @description:es Marca si los personajes son compatibles con proxies o no, principalmente en la búsqueda.
// @description:nl Maakt zichtbaar of karakters proxy-compatibel zijn of niet, voornamelijk in de zoekfunctie.
// @author You
// @match *://janitorai.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=janitorai.com
// @grant none
// @license GNU AGPLv3
// ==/UserScript==
void !(function () {
"use strict";
async function proxyAllowedFor(characterURL) {
const response = await fetch(characterURL);
const page = await response.text();
return page.includes("<div>proxy allowed</div>");
}
setInterval(async function () {
const characterCardElements = [...document.querySelectorAll(".profile-character-card-stack-link-component")];
for (let i = 0; i < characterCardElements.length; i++) {
const element = characterCardElements[i];
if (!document.body.contains(element)) {
continue;
}
if (element.getAttribute("proxy-checked") === null) {
element.setAttribute("proxy-checked", "yes");
const titleElement = element.children[0].children[0];
if (!(await proxyAllowedFor(element.href))) {
element.parentElement.parentElement.style.opacity = 0.25;
titleElement.textContent = "[PROXY ❌] " + titleElement.textContent;
} else {
titleElement.textContent = "[PROXY ✅] " + titleElement.textContent;
}
await new Promise(r => setTimeout(r, 100));
}
}
}, 2500);
})();