您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
see monthly progress of leetcode points
当前为
// ==UserScript== // @license MIT // @name Leetcode Points // @namespace https://github.com/pk2sd // @version 0.1 // @description see monthly progress of leetcode points // @author https://leetcode.com/pK2015/ // @match https://leetcode.com/store/ // @icon https://www.google.com/s2/favicons?sz=64&domain=leetcode.com // @require https://code.jquery.com/jquery-3.6.0.min.js // @grant none // @run-at document-end // ==/UserScript== $('document').ready(() => { $.ajax({ url: 'https://leetcode.com/points/api/' }).done((response) => { parseDataAndAddSummary(response) }) let toTable = (map) => { let mapToTr = (totr) => { return Array.from(totr).sort((a, b) => { return parseInt(b[1]) - parseInt(a[1]) }).map((entry) => { let key = entry[0] let value = entry[1] return '<tr>' + '<td>' + key + '</td>' + '<td>' + value + '</td>' + '</tr>' }).reduce((prev, cur) => prev + cur, '') } return '<table>' + '<thead>' + '<tr>' + '<th>' + 'Activity' + '</th>' + '<th>' + 'Points' + '</th>' + '</tr>' + '</thead>' + '<tbody>' + mapToTr(map) + '</tbody>' + '</table>' } let parseDataAndAddSummary = (points) => { const month = new Date().getMonth() const year = new Date().getFullYear() const npoints = points.scores.map(point => { return {...point, date: new Date(Date.parse(point.date))} }).filter(p => p.date.getMonth() == month && p.date.getFullYear() == year) const total = npoints.map(p => p.score).reduce((x,y) => x+y,0); const activityToPointsMap = npoints.reduce((map, curPoint) => { if(map.has(curPoint.description)){ map.set(curPoint.description, map.get(curPoint.description) + curPoint.score) } else { map.set(curPoint.description, curPoint.score) } return map }, new Map()) $('<p>', {id: 'points_p'}).prependTo('body') $('#points_p').html('<h4> Total points: ' + total + '</h4><br/>' + toTable(activityToPointsMap)) $('#points_p').css('display', 'flex') $('#points_p').css('align-items', 'center') $('#points_p').css('justify-content', 'center') } })