// ==UserScript== // @name 洛谷显示他人咕值 // @version 0.1.0 // @description 在洛谷中显示他人的咕值详情(仅限rk前1000用户) // @author 叶ID (KMnO4y_Fish, yezhiyi9670) // @match *://www.luogu.org/space/show?uid=* // @namespace https://greasyfork.org/zh-CN/users/370663-yezhiyi9670 // @downloadURL none // ==/UserScript== (function () { $('document').ready(function () { $sidebar = $('#app-old .lg-main-content .lg-right'); $firstele = $($sidebar.children()[2]); $setting = $('#setting_btn'); if($setting.length) return; // 是自己的账户 $rankbox = $($('.lg-summary-content .am-avg-sm-3 .lg-bignum-num')[2]); if(!$rankbox.length) return; // 已开启完全隐私保护 if($($($sidebar.children()[1]).children()[0]).html().trim()!='成就') { // alert("用户没有成就"); $firstele = $($sidebar.children()[1]); } $show_ele = $(`

咕值

`); $show_ele.insertAfter($firstele); ranktxt = $rankbox.html().trim(); if(ranktxt.indexOf("K")!=-1) { $('#add-rating-error').css('display','block'); $('#add-rating-button').addClass("am-disabled"); } else { var tt_user_rk = ranktxt.substring(0,ranktxt.indexOf('<'))*1; // show_alert("用户排名:"+tt_user_rk); var tt_rk_page = Math.floor((tt_user_rk-1)/50) + 1; // show_alert("排名信息在第"+tt_rk_page+"页"); var url = "https://www.luogu.org/ranking?page="+tt_rk_page+"&_contentOnly=1"; var tt_username = location.href.match(/\?(.*)uid\=(\d+)$/)?location.href.match(/\?(.*)uid\=(\d+)$/)[2]:''; if(!tt_username) tt_username = location.href.match(/\?(.*)uid\=(\d+)\&/)?location.href.match(/\?(.*)uid\=(\d+)\&/)[2]:''; if(!tt_username) show_alert("脚本:洛谷显示他人咕值","uid获取失败"); // else show_alert("调试","用户uid:"+tt_username); $('#add-rating-button').click(function(){ $('#add-rating-button').addClass("am-disabled"); console.log("获取排名网址:",url); $.get(url, function (data) { // var arr = eval('(' + data + ')'); // var arr = JSON.parse(data); var arr = data; console.log("用户数据:",arr); if (arr['code'] != 200) { $('#add-rating-button').removeClass('am-disabled'); show_alert("好像哪里有点问题", arr["message"]); } else { var dat = arr['currentData']['rankList']['result']; for(var i = 0;i < 50;i++) { if(!dat[i]) continue; if(dat[i]['user']['uid'] == tt_username) { // show_alert("找到用户"); $('#add-rating-button').css("display",'none'); $(function () { $('#add-rating-chart').highcharts({ chart:{ polar:true,type:'line',backgroundColor:"rgba(0,0,0,0)" }, pane:{size:'36%'},title:{text:"",floating:true},legend:{enabled:false},credits:{enabled:false}, xAxis: { categories: ['基础信用', '练习情况', '社区贡献', '比赛情况', '获得成就'], tickmarkPlacement: 'on', lineWidth: 0 }, yAxis: { gridLineInterpolation: 'polygon', lineWidth: 0, min: 0, max: 100 }, tooltip: { shared: true, pointFormat: '{point.y:,.0f}/100
' }, series: [{ name: '咕值', data: [ dat[i]['basicRating'], dat[i]['practiceRating'], dat[i]['socialRating'], dat[i]['contestRating'], dat[i]['prizeRating'] ], pointPlacement: 'on' }] }); }); $('#add-rating-showbox').css('display','block'); $('#add-rating-total').html(dat[i]['rating']); function getdate(t) { var now = new Date(t), y = now.getFullYear(), m = now.getMonth() + 1, d = now.getDate(); return y + "/" + (m < 10 ? "0" + m : m) + "/" + (d < 10 ? "0" + d : d); } $('#add-rating-date').html(getdate(dat[i]['calculateTime']*1000)); return; } } $('#add-rating-button').removeClass('am-disabled'); show_alert("无法找到用户的咕值信息", arr["message"]); } } ); }); } }); })();