NexusPHP魔力计算器

在NexusPHP站点显示每个种子的A值。

目前为 2022-01-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         NexusPHP魔力计算器
// @namespace    http://tampermonkey.net/
// @version      1.2.7
// @description  在NexusPHP站点显示每个种子的A值。
// @author       neoblackxt, LaneLau
// @require https://greasyfork.org/scripts/415581-jquery%E5%BA%93/code/jquery%E5%BA%93.js?version=866373
// @match   *://*.avgv.cc/torrents*
// @match   *://*.beitai.pt/torrents*
// @match   *://*.pttime.org/torrents*
// @match   *://*.ptsbao.club/torrents*
// @match   *://*.pthome.net/torrents*
// @match   *://kp.m-team.cc/*
// @match   *://*.hddolby.com/torrents*
// @match   *://*.leaguehd.com/torrents*
// @match   *://*.hdhome.org/torrents*
// @match   *://*.hdsky.me/torrents*
// @match   *://*.ourbits.club/torrents*
// @match   *://*.u2.dmhy.org/torrents*
// @match   *://*.hdzone.me/torrents*
// @match   *://*.hdatmos.club/torrents*
// @match   *://*.pt.soulvoice.club/torrents*
// @match   *://*.discfan.net/torrents*
// @match   *://*.hdtime.org/torrents*
// @match   *://*.nicept.net/torrents*
// @match   *://*.pterclub.com/torrents*
// @match   *://*.hdarea.co/torrents*
// @match   *://*.hdfans.org/torrents*
// @match   *://pt.btschool.club/torrents*
// @match   *://*.1ptba.com/torrents*
// @match   *://*/mybonus.php*
// @license      GPL License
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==

function run() {
    var $ = jQuery;

    let host = window.location.host.match(/\b[^\.]+\.[^\.]+$/)[0]
    let isMybonusPage = window.location.toString().indexOf("mybonus.php")!=-1
    let argsReady = true;
    let T0=GM_getValue(host + ".T0");
    let N0=GM_getValue(host + ".N0");
    let B0=GM_getValue(host + ".B0");
    let L=GM_getValue(host + ".L");
    if(!(T0&&N0&&B0&&L)){
        argsReady = false
        if(!isMybonusPage){
            alert("未找到魔力值参数,请打开魔力值系统说明获取(/mybonus.php)");
        }
    }
    if (isMybonusPage){
        T0 = parseInt($("li:has(b:contains('T0'))")[1].innerText.split(" = ")[1]);
        N0 = parseInt($("li:has(b:contains('N0'))")[1].innerText.split(" = ")[1]);
        B0 = parseInt($("li:has(b:contains('B0'))")[1].innerText.split(" = ")[1]);
        L = parseInt($("li:has(b:contains('L'))")[1].innerText.split(" = ")[1]);

        GM_setValue(host + ".T0",T0);
        GM_setValue(host + ".N0",N0);
        GM_setValue(host + ".B0",B0);
        GM_setValue(host + ".L",L);

        if(!argsReady){
            if(T0&&N0&&B0&&L){
                alert("魔力值参数已更新")
            }else{
                alert("魔力值参数获取失败")
            }
        }
    }

    //var T0 = 4;
    //var N0 = 7;
    //var B0 = 50;
    //var L = 300;

    function calcA(T, S, N) {
        var c1 = 1 - Math.pow(10, -(T / T0));
        // 当断种时,显示续种后的实际值,因为当前状态值无意义
        N = N ? N : 1;
        // 当前状态值,加入做种后实际值会小于当前值
        // TODO: 改为双行显示为当前值和实际值
        var c2 = 1 + Math.pow(2, .5) * Math.pow(10, -(N - 1) / (N0 - 1));
        return c1 * S * c2;
    }

    function makeA($this, i_T, i_S, i_N) {
        var time = $this.children('td:eq(' + i_T + ')').find("span").attr("title");
        var T = (new Date().getTime() - new Date(time).getTime()) / 1e3 / 86400 / 7;
        var size = $this.children('td:eq(' + i_S + ')').text().trim();
        var size_tp = 1;
        var S = size.replace(/[KMGT]B/, function (tp) {
            if (tp == "KB") {
                size_tp = 1 / 1024 / 1024;
            } else if (tp == "MB") {
                size_tp = 1 / 1024;
            } else if (tp == "GB") {
                size_tp = 1;
            } else if (tp == "TB") {
                size_tp = 1024;
            }
            return "";
        });
        S = parseFloat(S) * size_tp;
        var number = $this.children('td:eq(' + i_N + ')').text().trim();
        var N = parseInt(number);
        var A = calcA(T, S, N).toFixed(2);
        var ave = (A / S).toFixed(2);
        if ((A > S * 2) && (N != 0)) {
            //标红A大于体积2倍且不断种的种子
            return '<span style="color:#ff0000;font-weight:900;">' + ave + "</span>"
        } else {
            return '<span style="">' + ave + "</span>"
        }
    }

    var i_T, i_S, i_N
    $('.torrents:last-of-type>tbody>tr').each(function (row) {
        var $this = $(this);
        if (row == 0) {
            $this.children('td').each(function (col) {
                if ($(this).find('img.time').length) {
                    i_T = col
                } else if ($(this).find('img.size').length) {
                    i_S = col
                } else if ($(this).find('img.seeders').length) {
                    i_N = col
                }
            })
            if (!i_T || !i_S || !i_N) {
                alert('未能找到数据列')
                return
            }
            $this.children("td:last").before("<td class=\"colhead\">A值</td>");
        } else {
            var textA = makeA($this, i_T, i_S, i_N)
            $this.children("td:last").before("<td class=\"rowfollow\">" + textA + "</td>");
        }
    });
}

run()