AtCoder Show Me Score Table

コンテスト名を配点に置き換えちゃうスクリプト

Ekde 2024/03/23. Vidu La ĝisdata versio.

  1. // ==UserScript==
  2. // @name AtCoder Show Me Score Table
  3. // @namespace https://atcoder.jp/
  4. // @version 0.1
  5. // @description コンテスト名を配点に置き換えちゃうスクリプト
  6. // @author hayatroid
  7. // @license MIT
  8. // @match https://atcoder.jp/contests/*
  9. // @exclude https://atcoder.jp/contests/*/json
  10. // ==/UserScript==
  11.  
  12. (async () => {
  13. const res = await fetch(`https://atcoder.jp/contests/${contestScreenName}`)
  14. .then((response) => {
  15. if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
  16. return response.text();
  17. })
  18. .then((text) => {
  19. const parser = new DOMParser();
  20. const doc = parser.parseFromString(text, "text/html");
  21. const table = [...doc.querySelectorAll("#contest-statement > .lang > .lang-ja table")]
  22. .filter((element) => {
  23. const th = [...element.querySelectorAll("thead > tr > th")];
  24. return th.length === 2 && th[0].textContent === "問題" && th[1].textContent === "点数";
  25. });
  26. if (table.length !== 1) throw new Error("Scoreboard cannot be found.");
  27. const res = [...table[0].querySelectorAll("tbody > tr > td")]
  28. .filter((element, index) => {
  29. return index % 2 === 1;
  30. })
  31. .map((element) => {
  32. return element.textContent;
  33. })
  34. .join(" - ");
  35. return res;
  36. });
  37. document.querySelector(".contest-title").textContent = res;
  38. })();