// ==UserScript==
// @name 洛谷显示他人咕值
// @version 0.1.0
// @description 在洛谷中显示他人的咕值详情(仅限rk前1000用户)
// @author 叶ID (KMnO4y_Fish, yezhiyi9670)
// @match *://www.luogu.org/space/show?uid=*
// @namespace http://greasyfork.icu/zh-CN/users/370663-yezhiyi9670
// ==/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 = $(`
<div class="lg-article" id="add-rating">
<h2>咕值</h2>
<p id="add-rating-error" style="display:none;">该用户排名大于1000,不能获取其咕值信息。</p>
<button class="am-btn am-btn-primary" id="add-rating-button" style="margin-top:16px;">显示</button>
<div id="add-rating-showbox" style="display:none;">
<div id="add-rating-chart" style="margin: -120px 0;"></div>
<p style="margin-top:32px;margin-bottom:0;">咕值为 <strong id="add-rating-total"></strong> ,更新于 <span id="add-rating-date"></span></p>
</div>
</div>
`);
$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: '<b>{point.y:,.0f}</b>/100<br/>'
},
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"]);
}
}
);
});
}
});
})();