PT站魔力值分析,及自动计算插件

本文共有7139个字,关键词:PT魔力值

hdskylogo_20150110.pngimage.png

首先, 感谢某网友让我加入4大pt站之一的hdsky, 大概在第4天的时候顺利完成了新手考核任务.

首先介绍一下我的设备. 网是是电信下行100m上行20m宽带 .nas是 h61主板 + g550赛扬cpu + 西数3t硬盘4块组raid5阵列. 系统是黑裙6.0. 搭建过程中遇到许许多多麻烦. 有空另开一篇文章说明.

废话不多说, 众所周知 魔力值的计算 主要和种子存在周期,种子大小,上传人数有关.

存在周期这点比较好办,按时间排序找3个月以上的种子,其实时间太长也没必要,超过3个月以上加成也就不多了.

其次种子大小,越大越好,但是也要考虑实际硬盘大小和下载时间和下载量

最后上传人数是越少越好,但是上传人数过少的资源下载也会很慢.

引用官方的公式
image-1.png

其中做种数量*0.6是基础魔力值,只要做种能得到和种子信息无关.但是最多计8个.

A值是做种的每个种子A值的总和,也就是说下载成倍增加,A值也会成倍增长.

B值是关于A值的反正切函数,当中的B0是每小时获得魔力上限,B0后面的参数范围是0~1之间,最大不会超过1,A的值越大,B的值只会无限趋近已B0.

我们的目标就是提升A值,他决定了B(实际每小时魔力值)的大小.

那如何挑选A值划算的种子呢?其实生存时间和当前做种数是很好挑选的. 其实我们最在乎的还是种子体积(大小). 这个关乎到我们占硬盘的空间,毕竟硬盘不便宜都是一张张毛爷爷堆起来的.省点空间才能多装一些小姐姐嘛.

A值怎么计算呢?上面的公式相信很多人看了都头疼吧.我帮你们都整理好了,传入T(存在周数),S(种子大小GB),N(做种人数)即可获得,代码如下

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));
    var c2 = 1 + Math.pow(2, .5) * Math.pow(10, -(N - 1) / (N0 - 1));
    return c1 * S * c2;
}

知道了A值的计算方式剩下的利用jq读取每一行的参数,把天数换算成周,把容量统一成GB.插入到新的单元格.代码如下

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);
    if (A > S * .9) {
        return '<span style="color:#ff0000;font-weight:900;">' + A + "</span>"
    } else {
        return '<span style="">' + A + "</span>"
    }
}

var i_T, i_S, i_N
$('.torrents>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>A值</td>");
    } else {
        var textA = makeA($this, i_T, i_S, i_N)
        $this.children("td:last").before("<td>" + textA + "</td>");
    }
});

最后附上B值的计算公式代码.传入做种的A值的总和即可

function calcB(A) {
    return 50 * 2 / 3.14 * Math.atan(A / 300);
}

效果如图,A值会出现在新加的一列,
image-2.png

其中我发现A值普遍小于种子的GB单位的容量大小.时间久远一些的大多A值和容量接近,也不排除A值是容量两三倍的种子,那种普遍上传人数少,能不能完整下载还是个问题.所以我把A值大于容量90%的种子的A值用红色标记出来,这种就是值得下载的.如下图.
image-3.png

最后附上完整代码.(基于hdsky天空站制作,其他pt站同理)

(function ($) {
    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));
        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);
        if (A > S * .9) {
            return '<span style="color:#ff0000;font-weight:900;">' + A + "</span>"
        } else {
            return '<span style="">' + A + "</span>"
        }
    }

    var i_T, i_S, i_N
    $('.torrents>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>A值</td>");
        } else {
            var textA = makeA($this, i_T, i_S, i_N)
            $this.children("td:last").before("<td>" + textA + "</td>");
        }
    });
})(jQuery)

压缩后代码

(function($){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));var c2=1+Math.pow(2,0.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())/1000/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);if(A>S*0.9){return'<span style="color:#ff0000;font-weight:900;">'+A+"</span>"}else{return'<span style="">'+A+"</span>"}}var i_T,i_S,i_N;$(".torrents>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>A值</td>")}else{var textA=makeA($this,i_T,i_S,i_N);$this.children("td:last").before("<td>"+textA+"</td>")}})})(jQuery);

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

pch18

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:如无特别说明,本文为作者原创,转载请在首行注明来源:https://pch18.cn/archives/26.html
添加新评论
已有 5 条评论
  1. 西瓜:

    谢谢大佬的分析!感谢,特地支持一下

  2. Lane:

    好棒,我可以发布到Geasyfork上吗?

  3. ping:

    @pch18 站长大佬可否留个TG或QQ联系方式,有关您写的PT站魔力值自动计算插件探讨请教一下??

    1. pch18: 回复 @ping

      微信 cnpch18