您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
QCoderの問題でACのものに色がつきます
// ==UserScript== // @name QCoder AC Problem // @namespace https://ruku.tellpro.net // @version 2024-11-04 // @description QCoderの問題でACのものに色がつきます // @author ruku // @match https://www.qcoder.jp/* // @icon https://www.qcoder.jp/_next/static/media/20231120_logo.5742ea86.svg // @grant none // @license MIT // ==/UserScript== (function () { "use strict"; let prevURL = ""; let data = new Map(); setInterval(() => { const url = location.href; if (!/https:\/\/www\.qcoder\.jp\/ja\/contests\/(.+)/.test(url)) { return; } if (url !== prevURL) { prevURL = url; const match = url.match(/https:\/\/www\.qcoder\.jp\/ja\/contests\/(.+)/)[1]; const apiURL = `https://www.qcoder.jp/api/contests/${match.split("/")[0]}/submissions/me`; fetch(apiURL) .then((e) => { return e.json(); }) .then((e) => { data = new Map(); e.reverse(); for (const dat of e) { if (data[dat.problemLabel] !== "AC") { data[dat.problemLabel] = dat.submissionStatusCode; } } }); } const ATags = document.getElementsByTagName("A"); const menuItems = Array.from(ATags).filter((a) => a.getAttribute("role") === "menuitem"); for (const item of menuItems) { const AURL = item.href.split("/"); if (data[AURL[AURL.length - 1]] === "AC") { item.style = "background-color: rgb(212, 237, 201);"; } else if (data[AURL[AURL.length - 1]] !== undefined) { item.style = "background-color: rgb(255, 227, 227);"; } } }, 1000); })();