首先, 感谢某网友让我加入4大pt站之一的hdsky, 大概在第4天的时候顺利完成了新手考核任务.
首先介绍一下我的设备. 网是是电信下行100m上行20m宽带 .nas是 h61主板 + g550赛扬cpu + 西数3t硬盘4块组raid5阵列. 系统是黑裙6.0. 搭建过程中遇到许许多多麻烦. 有空另开一篇文章说明.
废话不多说, 众所周知 魔力值的计算 主要和种子存在周期,种子大小,上传人数有关.
存在周期这点比较好办,按时间排序找3个月以上的种子,其实时间太长也没必要,超过3个月以上加成也就不多了.
其次种子大小,越大越好,但是也要考虑实际硬盘大小和下载时间和下载量
最后上传人数是越少越好,但是上传人数过少的资源下载也会很慢.
引用官方的公式
其中做种数量*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值会出现在新加的一列,
其中我发现A值普遍小于种子的GB单位的容量大小.时间久远一些的大多A值和容量接近,也不排除A值是容量两三倍的种子,那种普遍上传人数少,能不能完整下载还是个问题.所以我把A值大于容量90%的种子的A值用红色标记出来,这种就是值得下载的.如下图.
最后附上完整代码.(基于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);
谢谢大佬的分析!感谢,特地支持一下
好棒,我可以发布到Geasyfork上吗?
可
@pch18 站长大佬可否留个TG或QQ联系方式,有关您写的PT站魔力值自动计算插件探讨请教一下??
微信 cnpch18