Color Empornium Highest Seeds

Color codes torrents with highest seeds

As of 2014-12-29. See the latest version.

// ==UserScript==
// @name          Color Empornium Highest Seeds
// @description   Color codes torrents with highest seeds
// @version       2.1
// @author        Monkeys
// @namespace     empornium.me
// @include       *torrents.empornium.me/torrents.php*
// ==/UserScript==

(function(){
  
  // *** BEGIN USER ADJUSTABLE VARIABLES *** //
  var MODE = 5; //which to use to colorize: 1-seeds, 2-peers, 3-snatched, 4-ratio, 5-peers+seeds
  var COLORADJUST = 2; //which color to use: 1-red, 2-green, 3-blue
  var LOWEST = 1; //lowest color is: 0-black, 1-white
  // *** END USER ADJUSTABLE VARIABLES *** //
  
  //each torrent is a table row:
  //<tr class="torrent">
  var torrents = document.getElementsByClassName('torrent');
  var thislink, links, thisdata;
  var numtorrents = torrents.length;
  var snatchedi, seedsi, peersi;
  
  var seeds=[];
  var peers=[];
  var seedsPeers=[];
  var snatched=[];
  var ratio=[];
  
  var hiseeds=0;
  var hipeers=0;
  var hiseedsPeers=0;
  var hisnatched=0;
  var hiratio=0;
  var lowseeds=100000; //I should just set this to first torrent
  var lowpeers=100000;
  var lowseedsPeers=100000; 
  var lowsnatched=100000;
  var lowratio=100000;
  var MAXCOLORS=255;
  
  

  for (var i = 0; i < numtorrents; i++)
  {//first pass, collect data
    seeds[i]=0;
    peers[i]=0;
    snatched[i]=0;
    ratio[i]=1;
    
    links = torrents[i].getElementsByTagName('td'); //grab links in this torrent
    //console.log("\nTorrent #"+i);
    for (var j = 0; j< links.length; j++)
    {//go through each link, look for seeds, peers, snatched
      thislink = links[j].toString(); //href=
      thisdata = links[j].innerHTML.toString(); //link text
      //console.log("\nthis link: " + thislink + ", this data: " + thisdata);
      
      if (thisdata.indexOf('user.php?id=') != -1 || thisdata.indexOf('anon_name') != -1)
      {//found user td, prev 3 are seeds, peers, snatched
        snatchedi = j-3;
        seedsi = j-2;
        peersi = j-1;
        //console.log("seedsi: "+seedsi+", j: "+j);
        seeds[i] = parseInt(links[seedsi].innerHTML.toString().replace(/\D/g,''))
        peers[i] = parseInt(links[peersi].innerHTML.toString().replace(/\D/g,''))
        seedsPeers[i] = seeds[i] + peers[i];
        snatched[i] = parseInt(links[snatchedi].innerHTML.toString().replace(/\D/g,''))
      }
    }
    ratio[i] = seeds[i]/(peers[i]+1); //+1 to prevent divide by zero
    //console.log("Seeds: " + seeds[i] + ", Peers: " + peers[i] + ", Snatched: " + snatched[i] + ", seeds+peers: " + seedsPeers[i]);
    //GM_log("Seeds: " + typeof seeds[i] + ", Peers: " + typeof peers[i] + ", Snatched: " + typeof snatched[i]);
    //GM_log("Ratio: " + ratio[i]);
    
    //test to see if this is the highest so far:
    if (seeds[i] > hiseeds) hiseeds = seeds[i];
    if (peers[i] > hipeers) hipeers = peers[i];
    if (seedsPeers[i] > hiseedsPeers) hiseedsPeers = seedsPeers[i];
    
    if (snatched[i] > hisnatched) hisnatched = snatched[i];
    if (ratio[i] > hiratio) hiratio = ratio[i];
    
    //test to see if this is the lowest so far:
    if (seeds[i] < lowseeds) lowseeds = seeds[i];
    if (peers[i] < lowpeers) lowpeers = peers[i];
    if (seedsPeers[i] < lowseedsPeers) lowseedsPeers = seedsPeers[i];
    if (snatched[i] < lowsnatched) lowsnatched = snatched[i];
    if (ratio[i] < lowratio) lowratio = ratio[i];
    //GM_log("Snatched "+snatched[i]+", low: "+lowsnatched+", hi: "+hisnatched+", temp: ")
    
  } 
  //we now have seeds, peers, snatched, ratio for torrents
  //we have to go through again to do styles
  for (var i = 0; i < numtorrents; i++)
  {//go through each torrent to apply styles
    var tempcolor=0;
    var fullcolor;
    if (MODE==1) tempcolor = Math.round(((seeds[i]-lowseeds)/hiseeds) * MAXCOLORS);
    if (MODE==2) tempcolor = Math.round(((peers[i]-lowpeers)/hipeers) * MAXCOLORS);
    if (MODE==3) tempcolor = Math.round(((snatched[i]-lowsnatched)/hisnatched) * MAXCOLORS);
    if (MODE==4) tempcolor = Math.round(((ratio[i]-lowratio)/hiratio) * MAXCOLORS);
    if (MODE==5) tempcolor = Math.round(((seedsPeers[i]-lowseedsPeers)/hiseedsPeers) * MAXCOLORS);
    
    //console.log("Seeds "+seeds[i]+", low: "+lowseeds+", hi: "+hiseeds+", temp: "+tempcolor)
    
    if (LOWEST) tempcolor = MAXCOLORS-tempcolor; //flip in the case of white = low  
    
    if (COLORADJUST==1)
    {//red
      if (LOWEST)
      {//white
        fullcolor = "rgb("+MAXCOLORS+","+tempcolor+","+tempcolor+")";
      }
      else
      {//black
        fullcolor = "rgb("+tempcolor+"0,0)";
      }
    }
    else if (COLORADJUST==2)
    {//green
      if (LOWEST)
      {//white
        fullcolor = "rgb("+tempcolor+","+MAXCOLORS+","+tempcolor+")";
      }
      else
      {//black
        fullcolor = "rgb(0,"+tempcolor+",0)";
      }
    }
    else
    {//blue
      if (LOWEST)
      {//white
        fullcolor = "rgb("+tempcolor+","+tempcolor+","+MAXCOLORS+")";
      }
      else
      {//black
        fullcolor = "rgb(0,0,"+tempcolor+")";
      }
    }
    if (torrents[i].className.indexOf('redbar') == -1)
    {
      torrents[i].style.background = fullcolor; 
      
      //torrents[i].style.background = '#ff5644'; 
    }
      
    
  } 
})();