NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Informatics Task Status // @namespace https://openuserjs.org/users/Ivanq // @version 0.1 // @description Add ticks to solved tasks on informatics // @copyright 2019, Ivanq (https://openuserjs.org/users/Ivanq) // @author Ivanq // @license MIT // @match https://informatics.msk.ru/mod/statements/view* // @grant none // ==/UserScript== // ==OpenUserJS== // @author Ivanq // ==/OpenUserJS== 'use strict'; const userId = document.querySelector("#user_id").innerHTML; const reload = () => { for(const node of document.querySelectorAll(".statements_toc_alpha li > *")) { let statusNode = node.querySelector(".status"); if(!statusNode) { statusNode = document.createElement("span"); statusNode.className = "status"; node.appendChild(statusNode); } let problemId; if(node.tagName === "STRONG") { problemId = document.querySelector("#problem_id").innerHTML; } else { problemId = node.href.match(/chapterid=(\d+)/)[1]; } (async () => { const url = `https://informatics.msk.ru/py/problem/${problemId}/filter-runs?user_id=${userId}&status_id=0&page=0`; const res = await (await fetch(url)).json(); statusNode.innerHTML = res.metadata.count > 0 ? " ✔️" : ""; })(); } }; reload(); setInterval(reload, 10000);