您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays your approximate ranking percentile among all active AtCoder users on your profile page.
// ==UserScript== // @name AtCoder - You're top X% (only for algorithm ranking) // @namespace https://gist.github.com/k1832/9438a1469bb2fa94d26702e1556aff97 // @version 1.2 // @description Displays your approximate ranking percentile among all active AtCoder users on your profile page. // @author k1832 (Keita Morisaki) // @match https://atcoder.jp/users/* // @license MIT License, Copyright (c) 2024 Keita Morisaki // @grant GM_xmlhttpRequest // ==/UserScript== (function () { 'use strict'; const url = new URL(window.location.href); const contestType = url.searchParams.get('contestType'); if (contestType === 'algo' || contestType === null) { /* * EN: Fetch the total number of active AtCoder users from a JSON file hosted on GitHub. * JA: GitHub でホストされている JSON ファイルから、AtCoder のアクティブユーザーの総数を取得します。 * * API implementation/host: https://github.com/k1832/atcoder-api */ GM_xmlhttpRequest({ method: "GET", url: "https://k1832.github.io/atcoder-api/api/v1/total-active-users.json", onload: function (response) { const data = JSON.parse(response.responseText); const totalCount = data.val; let rankNode = document.evaluate( '//th[text()="順位" or text()="Rank"]/following-sibling::td', document, null, XPathResult.ANY_TYPE, null ).iterateNext(); if (!rankNode) { console.error('Ranking element not found.'); return; } const rankText = rankNode.textContent; // "8956th" -> 8956 const rank = parseInt(rankText.slice(0, -2), 10); const percentage = rank / totalCount * 100; rankNode.textContent += ` (top ${percentage.toFixed(2)}%)`; }, onerror: function (error) { console.error('Error fetching user count:', error); } }); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址