您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show the total number of questions per difficulty in LeetCode's statsbar.
当前为
// ==UserScript== // @name Better Statsbar (LeetCode) // @description Show the total number of questions per difficulty in LeetCode's statsbar. // @namespace https://gf.qytechs.cn/en/users/128831-marvinyan // @match https://leetcode.com/problemset/algorithms/ // @grant GM.getValue // @grant GM.setValue // @grant GM_getValue // @grant GM_setValue // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js // @require https://gf.qytechs.cn/scripts/374849-library-onelementready-es6/code/Library%20%7C%20onElementReady%20ES6.js?version=649483 // @version 0.0.1.20190108010704 // ==/UserScript== (() => { const LC_ALGO_API = 'https://leetcode.com/api/problems/algorithms/'; const CACHE_DURATION_MS = 10 * 1000; // Optional rate limit (default: 10s) const CURRENT_TIME_MS = new Date().getTime(); const getData = async url => { const lastCheck = await GM.getValue('lastCheck', Number.MAX_VALUE); const cachedJsonStr = await GM.getValue('cachedJsonStr', null); const timeSinceCheck = CURRENT_TIME_MS - lastCheck; return new Promise(resolve => { if (timeSinceCheck < CACHE_DURATION_MS && cachedJsonStr !== null) { resolve(cachedJsonStr); } else { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onload = () => { if (xhr.status >= 200 && xhr.status < 300) { GM.setValue('lastCheck', CURRENT_TIME_MS); GM.setValue('cachedJsonStr', xhr.responseText); resolve(xhr.responseText); } }; xhr.send(); } }); }; const parseData = response => { const counts = [0, 0, 0]; const questions = JSON.parse(response).stat_status_pairs; questions.forEach(q => { counts[q.difficulty.level - 1]++; }); return counts; }; const updateStatsBar = counts => { const statsBar = $('#welcome > span > span'); let $totalSolvedSpan = $(statsBar[0]).closest('span'); const newText = $totalSolvedSpan.text().replace('/', ' / '); $totalSolvedSpan.text(newText); for (let i = 1; i < statsBar.length; i++) { statsBar[i].append(` / ${counts[i - 1]}`); } }; const run = async () => { const data = await getData(LC_ALGO_API); const counts = parseData(data); updateStatsBar(counts); }; waitForKeyElements('#welcome', run); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址