Advertisement
Gambler75

GLB League Player Value (Greasemonkey)

Mar 27th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name           Player Value To League Page
  3. // @namespace      pbr
  4. // @include        https://glb.warriorgeneral.com/game/league.pl?league_id=*
  5. // @copyright      2010, pabst
  6. // @license        (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
  7. // @version        12.06.25
  8. // ==/UserScript==
  9.  
  10. window.setTimeout( function() {
  11.     var button = document.createElement("input");
  12.     button.setAttribute("value","Get Eff Levels");
  13.     button.setAttribute("type","button");
  14.     button.addEventListener("click", main, true);
  15.     button.setAttribute("id","levelbutton");
  16.  
  17.     var endorsements = document.getElementById("endorsements");
  18.     endorsements.parentNode.insertBefore(button, endorsements);
  19. }, 100);
  20.  
  21. var numTeams;
  22. var data = new Array();
  23.  
  24. function main() {
  25.     document.getElementById("levelbutton").disabled = "true";
  26.  
  27.     var conferences = document.getElementsByClassName("conference_table");
  28.     numTeams = conferences.length*6;
  29.     for (var c=0; c<conferences.length; c++) {
  30.         var teams = conferences[c].getElementsByTagName("a");
  31.         for (var t=0; t<teams.length; t++) {
  32. //          console.log(teams[t].href.toString());
  33.             if (teams[t].href.toString().indexOf("team.pl") != -1) {
  34.                 getInetPage(teams[t].href.toString().replace("team","roster"), handleTeam);
  35.             }
  36.         }
  37.     }
  38.     setTimeout(finish, 2000);
  39. }
  40.  
  41. function tsort(arr, col) {
  42.     for (var i=0; i<arr.length-1; i++) {
  43.         for (var j=i; j<arr.length; j++) {
  44.             if (parseFloat(arr[i][col]) < parseFloat(arr[j][col])) {
  45.                 var temp = arr[i];
  46.                 arr[i] = arr[j];
  47.                 arr[j] = temp;
  48.             }
  49.         }
  50.     }
  51. }
  52.  
  53. function finish() {
  54.     if (data.length != numTeams) {
  55.         setTimeout(finish, 2000);
  56.         return;
  57.     }
  58.  
  59.     tsort(data,4);
  60.  
  61.     var text = "";
  62.  
  63.     var str = "<table><tbody>";
  64.     var hdr = "<tr class='nonalternating_color'>";
  65.     var titles = ["Rank","Team","Players","Age","Level","Value","Eff Level","Salary"];
  66.     for (var i=0; i<titles.length; i++) {
  67.         hdr += "<td>"+titles[i]+"</td>";
  68.     }
  69.     hdr += "</tr>";
  70.  
  71.     var cap = document.getElementsByClassName("info_item")[0].lastChild.textContent;
  72.     cap = parseFloat(cap.replace(/\$/g,"").replace(/\,/g,""));
  73.     var output = str+hdr;
  74.     var t = "";
  75.     for (var i=0; i<data.length; i++) {
  76.         output += "<tr class='alternating_color"+(i%2+1)+"'>";
  77.         output += "<td>"+(i+1)+"</td>";
  78.  
  79.         if ((i+1) < 10) text += ".";
  80.         text += (i+1)+" ... ";
  81.  
  82.         for (var j=0; j<data[i].length; j++) {
  83.             output += "<td";
  84.             if (j == 6) {
  85.                 output += " style='text-align: right;";
  86.                 if (parseFloat(data[i][j].replace(/\$/g,"").replace(/\,/g,"")) > cap) {
  87.                     output += " color:red;";
  88.                 }
  89.                 output += "'";
  90.             }
  91.             else if (j > 0) {
  92.                 output += " style='text-align: center'";
  93.             }
  94.             output += ">"+data[i][j]+"</td>";
  95.  
  96.             if (j == 0) {
  97.                 t = data[i][j].slice(data[i][j].indexOf(">")+1, data[i][j].indexOf("</a"));
  98.                 t = t.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  99.             }
  100.             else {
  101.                 var d = [null, 2, 3, 2, 7, 2, 11];
  102.                 if (isNaN(data[i][j].toString().slice(-1)) == true) data[i][j] = 0;
  103.                 while (data[i][j].toString().length < d[j]) data[i][j] = "."+data[i][j];
  104.                 text += data[i][j] + " ... ";
  105.             }
  106.  
  107.             if (j == 6) {
  108.                 text += t + " ... ";
  109.             }
  110.         }
  111.         output += "</tr>";
  112.         text = text.slice(0,text.length-4) + "\n";
  113.     }
  114.     output += "</tbody></table>";
  115.     console.log(text);
  116.  
  117.     var btn = document.getElementById("levelbutton");
  118.     btn.style.visibility = "hidden";
  119.     btn.style.display = "none";
  120.  
  121.     var div = document.createElement("div");
  122.     div.innerHTML = output;
  123.  
  124.     var end = document.getElementById("endorsements");
  125.     end.parentNode.insertBefore(div,end);
  126. }
  127.  
  128. var processed=0;
  129.  
  130. function handleTeam(address, page) {
  131.     processed++;
  132.     var pr = page.responseText.replace(/<img/g,"<div").replace(/\/img/g,"/div>");
  133.     var team = pr.split('"big_head subhead_head">')[1].split("<")[0];
  134.     team = team.split("(")[0];
  135.     var color="#ff0000";
  136.     if (processed > 16) color = "#0000ff";
  137.     team = "<a style=color:"+color+" href="+address+">"+team+"</a>";
  138.  
  139.     var text = page.responseText.split("Count:")[1].split("Roster")[0];
  140.     var salary = "$"+text.split("($")[1].split(".00/yr)")[0];
  141.     var numPlayers = parseInt(text.split(">")[2]);
  142.     var avgLevel = parseInt(text.split("Avg Lv ")[1]);
  143.     var avgValue = parseFloat(text.split('margin-bottom: 6px;">')[3].split("</div>"));
  144.     var effLevel = parseInt(text.split("Effective Lv ")[1]);
  145.  
  146.     text = page.responseText.split("content_contracts")[0];
  147.     text = text.split("content_rosters")[1];
  148. //    console.log(text);
  149.  
  150.     var cpuPlayers = text.split('class="cpu"').length - 1;
  151.     numPlayers -= cpuPlayers;
  152.  
  153.     var avgAge = 0;
  154. // td class name bug here
  155.     var ages = text.split("player_level\">");
  156.     if (ages.length > 0) {
  157.         for (var i=2; i<ages.length; i=i+2) {
  158.             var tmp = ages[i].split("<")[0];
  159.             if (isNaN(parseInt(tmp)) == false) {
  160.                 avgAge += parseInt(ages[i]);
  161.             }
  162.         }
  163.     }
  164.     avgAge = avgAge / numPlayers;
  165.  
  166. //    console.log(team+") "+numPlayers+" - "+cpuPlayers+" - "+avgLevel+" - "+avgValue+" - "+avgAge+" - "+effLevel+" - "+salary);
  167.     data.push([team,numPlayers,avgAge.toFixed(0),avgLevel,avgValue.toFixed(2),effLevel,salary]);
  168.     document.getElementById("levelbutton").value += ".";
  169. }
  170.  
  171. function getInetPage(address, func) {
  172. //    console.log("getInetPage : "+address);
  173.     var req = new XMLHttpRequest();
  174.     req.open( 'GET', address, true );
  175.     req.onload = function() {
  176.         if (this.status != 200) {
  177.             alert("pbr gm script: Error "+this.status+" loading "+address);
  178.         }
  179.         else {
  180. //          console.log("loaded: "+address)
  181.             func(address,this);
  182.         }
  183.     };
  184.  
  185.     req.send(null);
  186.     return req;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement