Rating Grab - 17lands.com

2021/7/16下午6:58:30 抓取17lands评分,在console打印出来

当前为 2021-10-04 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        Rating Grab - 17lands.com
// @namespace   Douxt Scripts
// @match       https://www.17lands.com/tier_list/*
// @grant       none
// @version     1.0
// @author      非瑞克西亚食尸鬼
// @description 2021/7/16下午6:58:30  抓取17lands评分,在console打印出来
// ==/UserScript==
// @requrie     https://libs.baidu.com/jquery/2.0.0/jquery.min.js


(function(){
  'use strict';
  console.log('hello world!');
  //makeBox();
  
  //setInterval(loopCheck,500);
  
  setTimeout(grabRating,5000);
  
  $(document).keydown(function (event) {
    console.log(event.keyCode);
    let key = event.keyCode;
    if(key == 72){
      toggleHide();
    } else if(key == 82){
      grabRating();
    }
    else {
      setTimeout(startWork,200);
    }
    
  });
})();


  let nt=0,nf=0,nb=0;

  let hide = false;

  let legend = ['A+','A','A-','B+','B','B-','C+','C','C-','D+','D','D-','F','备','玄'];

  function grabRating(){
    console.log('grabRating');
    
    
    let bucks = document.getElementsByClassName('tier_bucket');
    
    
    
    console.log('bucks length:',bucks.length);
    //console.log('children:',buck.children);
    
    let rating = {};
    
    for(let i = 0; i < bucks.length; i++){
      
      let buck = bucks[i];
      for(let j = 0; j< buck.children.length; j++){
        let text = buck.children[j].children[0].innerHTML;
        console.log('text:',text,i,legend[i%15]);
        rating[text] = {Rate:legend[i%15],Desc:''};
      }      
      
    }
    
    console.log('rating:',JSON.stringify(rating));
  }

  function toggleHide(){
      hide = !hide;
      if(hide){
        $(".rate").hide();
        $(".rate2").hide();
        //$(".ref").hide();
        $(".fix-top").hide();
      } else {
        $(".rate").show();
        $(".rate2").show(); 
        //$(".ref").show();
        $(".fix-top").show();
        startWork();
      }
  }

  function loopCheck(){
    
    //return;
    //console.log('loopCheck');
    let nnt = $("img.card_slot_2").length;
    let nnf = $("img.card_slot_2.front").length;
    let nnb = $("img.card_slot_2.behind").length;
    
    if(nnt!=nt || nnf!=nf || nnb!= nb){
      console.log('changed!refresh!');
      startWork();
    }
    
    nt = nnt;nf = nnf; nb = nnb;
    //console.log(nnt,nnf,nnb);
  }

  function makeMap(){
    for(var i = 0; i < reviews.length; i ++){
      map[reviews[i][0]] = i;
    }
    //console.log('map:',map);
    for(var i = 0; i < reviews2.length; i ++){
      map2[reviews2[i][0]] = i;
    }
    //console.log('map2:',map);
  }

  function makeBox(){
    let bd = $("body");
    let div = $('<div class="fix-top" id="review-box"><div class="zone">MTGAZone:<span id="zone-review"></span></div><div class="white"><div id="close">[关闭]</div></div></div>');
    div.appendTo(bd[0]);
    //console.log('bd:',bd);
    
    let hd = $("head");
    let st = $('<style>.pre{height:100px;}.t1{color:#0F0;}.t2{color:#83fa4d;}.t3{color:#a8fb4e;}.t4{color:#ddfc52;}.t5{color:#fbe14c;}.t6{color:#f19c38;}.t7{color:#ed5e2a;}.t8{color:#FF0000;}.tno{color:#444;}.rate{position:absolute;left:5px;bottom:5px;width:20px;height:20px;background-color:black;text-align:center;line-height:20px;z-index:9;}.rate2{position:absolute;right:5px;bottom:5px;width:20px;height:20px;background-color:black;text-align:center;line-height:20px;z-index:9;}.white{color:white;float:right;width:34%;margin:5px;position:relative;}.zone{color:white;float:left;width:64%;border:1px solid yellow;margin:5px;}.fix-top{position:fixed;top:0;left:0;right:0;background:#000;}.ref{color:white;border:1px solid yellow;}#close{position:absolute;right:5px;bottom:-20px;color:yellow;}</style>');
    st.appendTo(hd[0]);
    
    $("#close").mouseover(function(){
      //console.log('mouseOverReview');
      $("#review-box").hide();
    });
    
    let ref = $('<div class="ref"><div>鼠标移动到牌面上显示评价,按方向键←→翻页,按h键隐藏/显示评分内容。有异常可以尝试浏览器刷新。&nbsp;&nbsp; ——非瑞克西亚食尸鬼<br/><br/></div>参考资料:<div><a target="_blank" href="https://mp.weixin.qq.com/s/AKVi2V5_vI8nS779f0aCzQ">大白:【限制】2天到秘稀——AFR限制攻略</a></div><div><a target="_blank" href="https://mtgazone.com/innistrad-midnight-hunt-limited-set-review-white/">MTGAZone:Innistrad: Midnight Hunt Limited Set Review</a></div><br /><br /></div>');
    ref.appendTo(bd[0]);
    
    let url = window.location.href;
    if(url.indexOf("site_draft")!=-1){
      let pre = $('<div class="pre"></div>');
      pre.prependTo($("div#site_draft_app"));
    }
  }


  

  function startWork(){
    //console.log('startWork');
    
    $("div.card_slot_2").each(function(){
      
      if(hide){
        return;
      }
      let ch = $(this).children("img");
      //console.log('ch:',ch[0].alt);
      //ch[0].info = ch[0].alt + 'is good';
      let name = ch[0].alt;
      
      let children = $(this).children(".rate");
      //console.log('children:',children.length,children);
      let zrt = getZoneRating(name);
      //console.log(name,":",zrt);
      
      if(zrt){
        let cc = getColorClass(zrt);
        if(children.length==0){
          let div = $('<div class="rate"><span class="' + cc + '">' + zrt + '</span></div>');
          div.appendTo($(this));      
        } else {
          children.html('<span class="' + cc + '">' + zrt + '</span>');
        }        
      }
      
      let children2 = $(this).children(".rate2");
      //console.log('children:',children.length,children);
      let brt = getBaiRating(name);
      //console.log(name,":",brt);
      
      if(brt){
        let cc = getColorClass(brt);
        if(children2.length==0){
          let div = $('<div class="rate2"><span class="' + cc + '">' + brt + '</span></div>');
          div.appendTo($(this));      
        } else {
          children2.html('<span class="' + cc + '">' + brt + '</span>');;
        }        
      }
      

      $(this).mouseover(function(){
        console.log('mouse over:',name);
        
        if(hide){
          return;
        }
        
        let text = showReviewText(name);

        $("#review-box").show();

      });
    });
  }

  function showReviewText(name){
    
    if(name in reviews){
      let rv = reviews[name];
      //console.log('review:',rv);
      $("#zone-review").text('Rating: ' + rv["Rate"] + '. ' + name + '. ' + rv["Desc"]); 
    } else {
      $("#zone-review").text('no comment!'); 
    }
    
    // if(name in map2){
    //   let idx = map2[name];
    //   let rv = reviews2[idx];
    //   //console.log('review2:',rv);
    //   $("#bai-review").text('第' + rv[1] + '梯队' + '。' + rv[2] + '。' + rv[3]); 
    // } else {
    //   $("#bai-review").text('此牌有玄机!欲知详情请备好礼物与我面谈!'); 
    // }
    
  }

  function getZoneRating(name){
    if(name in reviews){
      let rv = reviews[name];
      return rv["Rate"];
    } else {
      return '?';
    }  
  }

  function getBaiRating(name){
    return '';
    if(name in map2){
      let idx = map2[name];
      let rv = reviews2[idx];
      return rv[1];
    } else {
      return '玄';
    }  
  }

  function getColorClass(rate){
    let cc;
    switch(rate){
        case "A+":
        case "A":
        case "5.0":
        case "4.5":
          cc = "t1";
          break;
        case "A-":
        case "B+":
        case "4.0":
          cc = "t2";
          break;
        case "B-":
        case "C+":
        case "3.5":
          cc = "t3";
          break;
        case "C":
        case "C-":
        case "3.0":
          cc = "t4";
          break;
        case "D+":
        case "2.5":
          cc = "t5";
          break;
        case "D":
        case "2.0":
          cc = "t6";
          break;
        case "D-":
        case "1.5":
          cc = "t7";
          break;
        case "F":
        case "F+":
        case "F-":
        case "1.0":
        case "0.5":
        case "0.0":
          cc = "t8";
          break;
        
        default:
          cc = "tno";
    }
    //console.log('ColorClass:',cc);
    
    return cc;
  }