Greasy Fork

Greasy Fork is available in English.

LeetCode 考题频率显示

当打开一道题时 查询它是否在codeTop上存在 如果存在 就显示它最近的考察频率

目前为 2022-05-12 提交的版本。查看 最新版本

// ==UserScript==
// @name         LeetCode 考题频率显示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  当打开一道题时 查询它是否在codeTop上存在 如果存在 就显示它最近的考察频率
// @author       Leochens
// @match        https://leetcode.cn/problems/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=leetcode.cn
// @grant        GM_xmlhttpRequest
// @license MIT
// @connect *
// ==/UserScript==
function fmtDate(utcdate) {
    let dateee;
    if (utcdate) {
      dateee = new Date(utcdate).toJSON();
    } else {
      dateee = new Date().toJSON();
    }
    return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ')
      .replace(/\.[\d]{3}Z/, '');
}

window.onload = function(){
    'use strict';
     const title = document.querySelector('h4[data-cypress="QuestionTitle"]');
     const titleText = title.innerText;
     const container = title.parentNode;
     const codeTop = document.createElement("span");

     codeTop.setAttribute("id","codeTop");
     codeTop.setAttribute("style","display: inline-block;vertical-align: middle;margin-left: 20px;font-size: 12px;font-weight: 500;color: #666")

     container.insertBefore(codeTop,container.lastChild);

     // 获取codeTop数据
     GM_xmlhttpRequest({
        method: "get",
        url: `https://codetop.cc/api/questions/?page=1&search=${encodeURI(titleText).replace(".","")}&ordering=-frequency`,
        //    data: 'typeName=XXX&content=XXX&options=XXX',
        headers: { "Content-Type": "application/json" },
        onload: function(res) {
            // code
            if(res.status === 200){
                const obj = JSON.parse(res.response);
                console.log(obj);
                const value = obj.list[0].value;
                const time = obj.list[0].time;
                let color = "green";
                if(value > 50) color = "orange"
                if(value > 100) color = "red";
                codeTop.innerHTML = "本题考察频率: "
                    +`<span style="display: inline-block;font-size: 16px;font-weight: 500; color: ${color}"> ${value} </span>`+" 最近考察时间:"+fmtDate(time);
            }else{
                console.log("获取codeTop数据失败!")
            }
        },
         onerror:function(e){
         console.log("获取codeTop数据失败!")
     }
    });

}