// ==UserScript== // @name what.cd highlighting // @namespace // @version 0.1 // @description Adds an extra column of the ratio of seeds to leeches. Useful for looking at good torrents to seed // @author Jordan // @match https://what.cd/torrents.php* // @grant none // @downloadURL https://update.greasyfork.cloud/scripts/10050/whatcd%20highlighting.user.js // @updateURL https://update.greasyfork.cloud/scripts/10050/whatcd%20highlighting.meta.js // ==/UserScript== function median(values) { values.sort( function(a,b) {return a - b;} ); var half = Math.floor(values.length/2); if(values.length % 2) return values[half]; else return (values[half-1] + values[half]) / 2.0; } $('.edition_info').attr('colspan',10); $('.sign.leechers').after('Ratio'); // Loop all rows, calculate ratio, add to an array of ratios to get median later all_ratios = []; $('tr.group_torrent, tr.group').each(function() { var leechers = $(this).find('td.number_column:last').html(); var seeders = $(this).find('td.number_column:last').prev().html(); if(typeof leechers == 'undefined' || typeof seeders == 'undefined') { // console.log('undefined'); } else { leechers = leechers.replace(',',''); seeders = seeders.replace(',',''); } var ratio = (leechers/seeders); if(typeof ratio != 'undefined' && !isNaN(ratio) && ratio != 'Infinity' ) { all_ratios.push(ratio); } }); // Get the median, get the max, find a point inbetween to give us useful highlighting var ratio_median = median(all_ratios); var max = Math.max.apply( Math, all_ratios ); var upper_fourth = ratio_median + ((max - ratio_median) / 3 ); // Loop again, this should probably have been unified with the looping above // Output an extra cell per row, highlighted if above the target level $('tr.group_torrent, tr.group').each(function() { var leechers = $(this).find('td.number_column:last').html(); var seeders = $(this).find('td.number_column:last').prev().html(); if(typeof leechers == 'undefined' || typeof seeders == 'undefined') { // console.log('undefined'); } else { leechers = leechers.replace(',',''); seeders = seeders.replace(',',''); } // console.log(leechers + '/' + seeders + '=' + ratio); var ratio = (leechers/seeders).toFixed(2); if(typeof ratio != 'undefined' && !isNaN(ratio) ) { all_ratios.push(ratio); if(ratio > upper_fourth || ratio == 'Infinity') { var style = 'font-weight:bold;'; } else { var style = null; } $(this).find('td.number_column:last').after('' + ratio + ''); } });