Greasy Fork

Greasy Fork is available in English.

洛谷显示他人咕值

在洛谷中显示他人的咕值详情(仅限rk前1000用户)

当前为 2019-09-17 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         洛谷显示他人咕值
// @version      0.1.1
// @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();
    
    var another_show_func = function() {
    };
    if(ranktxt.indexOf("K")!=-1) {
      $('#add-rating-error').css('display','block');
      $('#add-rating-button').click(another_show_func);
      $('#add-rating-button').addClass("am-disabled");
    }
    else if(ranktxt.indexOf("N/A")!=-1) {
      $('#add-rating-error').css('display','block');
      $('#add-rating-error').html('用户没有排名,不能获取其咕值详情。');
      $('#add-rating-button').click(another_show_func);
      $('#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("脚本:洛谷显示他人咕值", "找不到用户的咕值信息,请刷新重试。");
            }
          }
        );
      });
    }
  });
})();