NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Bonus Calculator
// @version 2.5
// @include */torrents.php*
// @license GPL-3.0-or-later
// @downloadURL https://openuserjs.org/install/rsj001/Bonus_Calculator.user.js
// @updateURL https://openuserjs.org/meta/rsj001/Bonus_Calculator.meta.js
// @require http://code.jquery.com/jquery-1.11.0.min.js
// @copyright 2021, rsj001 (https://openuserjs.org/users/rsj001)
// @description A script of calulating bonus
// @author rsj001
// @grant XMLHttpRequest
// ==/UserScript==
(function () {
'use strict';
var T0, N0, L, B0;
function init(){
var req = new XMLHttpRequest();
req.open("GET","/mybonus.php",0);
req.send(null);
var text = req.responseText;
var p1=new RegExp("T0</b> = ([0-9]+)");
var p2=new RegExp("N0</b> = ([0-9]+)");
var p3=new RegExp("B0</b> = ([0-9]+)");
var p4=new RegExp("L</b> = ([0-9]+)");
T0 = (p1.exec(text))[1];
N0 = (p2.exec(text))[1];
B0 = (p3.exec(text))[1];
L = (p4.exec(text))[1];
}
function calc(T, S, N) {
var std = (1 - 1 / Math.pow(10, T / T0)) * (1 + Math.sqrt(2) / Math.pow(10, (N - 1) / (N0 - 1)));
var A = std * S;
var B = B0 * 2 / Math.PI * Math.atan(A / L);
return std;
}
function convertsize(size) {
if (size.indexOf("TB") != -1) return size.substring(0, size.indexOf("TB")) * 1024;
if (size.indexOf("GB") != -1) return size.substring(0, size.indexOf("GB"));
if (size.indexOf("MB") != -1) return size.substring(0, size.indexOf("MB")) / 1024;
if (size.indexOf("KB") != -1) return size.substring(0, size.indexOf("KB")) / 1024 / 1024;
if (size.indexOf("B") != -1) return size.substring(0, size.indexOf("B")) / 1024 / 1024 / 1024;
return 0;
}
function convertdate(date) {
var time = Date.parse(new Date());
var curtime = Date.parse(new Date(date));
var day = (time - curtime) / (1000 * 60 * 60 * 24 * 7);
return day;
}
init();
console.log("(T0, N0, L, B0)=("+T0+","+N0+","+L+","+B0+")");
var torrents = $(".torrents > tbody > tr"), area = $(".torrents");
var q = [], src = [];
var head = torrents.eq(0);
var hrows = head.find("> td");
var index = Object();
for (var i = 0; i < hrows.length; i++) {
var cur = hrows.eq(i);
if(cur.find(".time").length) index.time = i;
else if(cur.find(".size").length) index.size = i;
else if(cur.find(".seeders").length) index.seeders = i;
}
for (i = 1; i < torrents.length; i++) {
var torrent = torrents.eq(i);
var mt_official = torrent.find("img[alt='+20%']").length > 0;
var rows = torrent.find("> td");
var date = convertdate(rows.eq(index.time).find("span").attr("title"));
var size = convertsize(rows.eq(index.size).text());
var seeders = rows.eq(index.seeders).find("a").text().replace(",","");
var bonus_rate = calc(date, size, seeders) * (mt_official? 1.20:1.00);
rows.eq(2).after("<td class=\"rowfollow\">" + (bonus_rate * size).toFixed(4) + "</td>");
var c = {
content: torrent,
number: bonus_rate
};
q.push(c);
src.push(c);
}
torrents.eq(0).find("> td").eq(2).after("<td id=\"delta_A\" class=\"colhead\"><a href='javascript:void(0)'>ΔA</a></td>");
var rh = $("#delta_A");
var sorted = 0;
q.sort(function (b, a) {
return a.number - b.number;
});
rh.get(0).addEventListener("click", function () {
area.empty();
area.append(head);
if (sorted) {
for (i = 0; i < src.length; i++) area.append(src[i].content);
}
else {
for (i = 0; i < q.length; i++) area.append(q[i].content);
}
sorted = 1 - sorted;
});
})();