// ==UserScript==
// @name HDC魔力值详情
// @namespace http://tampermonkey.net/
// @version 1.0.8
// @description HDC魔力值详情查看!
// @author sparing
// @match *://*.hdchina.org/*
// @match *://hdchina.org/*
// @match *://*/*
// @grant GM_xmlhttpRequest
// @license MIT
// ==/UserScript==
//种子数
let num = 0
//魔力值总值
let sum = 0
let numSum = 0
var datas;
function delay() {
return new Promise((resolve) => {
setTimeout(resolve, 200);
});
}
function queryStocks() {
$('.normal_tab').attr('id','tableId');//替换成一个新class
let stocks = document.querySelectorAll('tr');
numSum = stocks.length;
//console.log(stocks.length);
//stocks.forEach(async(s) => {
//await delay();
stocks.forEach(s => {
let fc = s.firstChild;
let lc = s.lastChild;
//console.log(fc.nodeName+"-----"+fc.className);
if (fc.nodeName === '#text') {
var types=new Array("string","int","float","float","int","float","float","float","float")
let element = document.createElement("td");
element.className="colhead";
let newContent = document.createTextNode("种子名");
element.appendChild(newContent);
element.setAttribute("style","cursor:pointer");
s.insertBefore(element,s.children[0]);
s.children[2].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,2,types[2]);
});
s.children[3].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,3,types[3]);
});
s.children[4].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,4,types[4]);
});
s.children[6].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,6,types[6]);
});
s.children[7].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,7,types[7]);
});
s.children[8].addEventListener('click', function (e) {
sortAble(this,'tableId', 0,8,types[8]);
});
s.children[8].setAttribute("id","moliSum");
for (var m = 0; m < s.children.length; ++m) {
s.children[m].setAttribute("style","cursor:pointer");
//s.children[m].addEventListener('click', function (e) {
// sortAble(this,'tableId', 0,m,types[m]);
//});
}
}
if (fc.nodeName === 'TD') {
setPageTitle(s);
// return;
}
});
}
function setPageTitle(s) {
let fc = s.firstChild;
let lc = s.lastChild;
let url ="https://www.hdchina.org/details.php?id="+fc.innerHTML+"&hit=1";
console.log("----------------------------"+fc.innerHTML+"-----------------------------------");
let element = document.createElement("a");
element.href=url;
element.className="moli"+fc.innerHTML;
element.name="moliName";
//魔力值总值计算
let moli = lc.previousSibling.innerHTML;
sum = parseFloat(sum)+parseFloat(moli)
if(num == 9){
sum+= 10;
}
//此处魔力值显示加在表格上
//let moliSum = document.getElementById("moliSum");
//moliSum.innerHTML = '实际收益/时:'+sum;
//moliSum.style.color = "red";
if(numSum == (num+2)){
let moliSum = document.querySelectorAll('h2');
let element = document.createElement("span");
element.style.color = "green";
let newContent = document.createTextNode("(收益/时:"+sum+")");
element.appendChild(newContent);
moliSum[0].appendChild(element);
}
//种子名添加格子,获取、填充数据
let newTd = fc.cloneNode(); // only copy data in <></>, don't include text
//获取资源详情
GM_xmlhttpRequest({
method: 'GET',
url: url,
async: true,
headers: {
"Content-Type": "application/json"
},
onload: function(response) {
let dom = $.parseHTML(response.responseText);
let srcTitle0 = $(dom).find('div .m_name h3')[0].innerHTML;
let newContent = document.createTextNode(srcTitle0);
newTd.appendChild(element).appendChild(newContent)
s.insertBefore(newTd,s.childNodes[0]);
//判断页面列数据是否添加完全,之后触发排序点击事件
let moliNames = document.getElementsByName('moliName');
if(moliNames.length == numSum -1){
var moliSum0 = document.getElementById("moliSum");
moliSum0.click();
moliSum0.click();
}
},
});
num++;
}
//排序 tableId: 表的id,iCol:第几列 ;dataType:iCol对应的列显示数据的数据类型
function sortAble(th1, tableId, iRow, iCol, dataType) {
var ascChar = "▲";
var descChar = "▼";
var table = document.getElementById("tableId");
//var rows = table.tHead.rows;
let rows = document.querySelectorAll('tr')
//排序标题加背景色
for (var i = 0; i < rows.length; i++) {
for(var j=0;j<rows[i].cells.length;j++){//取得第几行下面的td个数,再次循环遍历该行下面的td元素
var th2 = rows[i].cells[j];
var thText= th2.innerHTML.replace(ascChar, "").replace(descChar, "");
if(i==iRow&&j==iCol){
}
else{
th2.innerHTML=thText;
}
}
}
var tbody = table.tBodies[0];
//var tbody = document.querySelectorAll('.normal_tab').tBodies[0]
var colRows = document.querySelectorAll('tr')
var aTrs = new Array;
//将得到的行放入数组,备用
for (var h = 1; h < colRows.length; h++) {
aTrs.push(colRows[h]);
}
//判断上一次排列的列和现在需要排列的是否同一个。
if (table.sortCol == iCol) {
aTrs.reverse();
} else {
//如果不是同一列,使用数组的sort方法,传进排序函数
aTrs.sort(compareEle(iCol, dataType));
}
var oFragment = document.createDocumentFragment();
for (var k = 0; k < aTrs.length; k++) {
oFragment.appendChild(aTrs[k]);
}
tbody.appendChild(oFragment);
//记录最后一次排序的列索引
table.sortCol = iCol;
//给排序标题加“升序、降序” 小图标显示
var th = rows[iRow].cells[iCol];
if (th.innerHTML.indexOf(ascChar) == -1 && th.innerHTML.indexOf(descChar) == -1) {
th.innerHTML += ascChar;
//alert(th.innerHTML);
}
else if (th.innerHTML.indexOf(ascChar) != -1) {
th.innerHTML=th.innerHTML.replace(ascChar, descChar);
//alert(th.innerHTML.replace(ascChar,descChar));
}
else if (th.innerHTML.indexOf(descChar) != -1) {
th.innerHTML=th.innerHTML.replace(descChar, ascChar);
}
}
//将列的类型转化成相应的可以排列的数据类型
function convert(sValue, dataType) {
switch (dataType) {
case "int":
return parseInt(sValue, 10);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
case "string":
default:
return sValue.toString();
}
}
//排序函数,iCol表示列索引,dataType表示该列的数据类型
function compareEle(iCol, dataType) {
return function (oTR1, oTR2) {
var vValue1 = convert(removeHtmlTag($(oTR1.cells[iCol]).html()), dataType);
var vValue2 = convert(removeHtmlTag($(oTR2.cells[iCol]).html()), dataType);
if (vValue1 < vValue2) {
return -1;
}
else {
return 1;
}
};
}
//去掉html标签
function removeHtmlTag(html) {
return html.replace(/<[^>]+>/g, "");
}
(function () {
'use strict';
var host = window.location.host
var href = window.location.href
setTimeout(function() {
var hdc = document.getElementsByClassName('userinfort')[0]
if(hdc) {
var hdchinaSign = hdc.getElementsByTagName('a')[1]
}
if (host.indexOf('hdchina') != -1 ) {
let moli = document.querySelectorAll('p');
//let url1 = urls[1].children[3];
// alert(urls[1]);
let element = document.createElement("a");
element.href="https://www.hdchina.org/mybonus_detail.php";
element.style.color = "green";
let newContent = document.createTextNode("魔力详情][");
element.appendChild(newContent);
moli[1].insertBefore(element,moli[1].children[3]);
}
if (href.startsWith('https://hdchina.org/mybonus_detail.php') || href.startsWith('https://www.hdchina.org/mybonus_detail.php')) {
queryStocks();
}
}, 500)
})();