Greasy Fork

来自缓存

Greasy Fork is available in English.

洛谷显示他人咕值

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

目前为 2019-09-16 提交的版本,查看 最新版本

// ==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"]);
            }
          }
        );
      });
    }
  });
})();