Greasy Fork

来自缓存

Greasy Fork is available in English.

柠檬后宫排序

Used for sorting lemon harem!

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         柠檬后宫排序
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Used for sorting lemon harem!
// @license      GPL-3.0 License
// @author       jgw163163
// @match        https://lemonhd.org/invite.php?id=*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=lemonhd.org
// @grant        none
// ==/UserScript==
var biaoge = document.querySelector('td.embedded > table > tbody');//获取文档下的第一个tbdoy
var tr = document.querySelectorAll('td.embedded > table:nth-child(3) > tbody >tr');
var tr11 = document.querySelector('td.embedded > table > tbody >tr');
var tr22 = document.querySelector('td.embedded > table > tbody >tr:last-child');
Array.from(tr11.children).forEach((element, value) => {
    element.id = value;
});


var arr = [];
var isAsc = true; //判断当前排序是否是正序
tr11.onclick = (function (e) {
    var td = tr11.querySelectorAll('td');
    for (let x = 1; x < td.length; x++) {
        td[x].style.color = "";
    }
    e.target.id ? e.target.style.color = "red" : e.target.parentElement.style.color = "red";
    var f = e.target.id || e.target.parentElement.id;


    if (!isAsc) { //如果是反序,则进行一下操作
        for (var i = 1; i < tr.length - 1; i++) {
            arr.push(tr[i]); //把tr数组复制到arr数组
        }

        arr.sort(function (tr1, tr2) { //数组排序arr.sort()
            var value1 = tr1.getElementsByTagName('td')[f].innerHTML;
            var value2 = tr2.getElementsByTagName('td')[f].innerHTML;
            // console.log(sizeStrToBytes(value2))
            if (f > 2 && f < 9) {
                return sizeStrToBytes(value1) - sizeStrToBytes(value2); //比较字节大小
            } else {
                return value1.localeCompare(value2);//localeCompare() 方法提供的是比较字符串的方法,如果value2>value1,则返回1;如果value2<value1,则返回-1;相等则0
            }
        })
        Oinsert(); //进行文档添加操作
        isAsc = true; //点击之后反转一下顺序

    } else { //如果是正序,则进行一下操作
        for (var j = 1; j < tr.length - 1; j++) {
            arr.push(tr[j]);
        }
        // console.log(arr)
        arr.sort(function (tr1, tr2) {
            var value1 = tr1.getElementsByTagName('td')[f].innerHTML;
            var value2 = tr2.getElementsByTagName('td')[f].innerHTML;
            // console.log(sizeStrToBytes(value2))
            if (f > 2 && f < 9) {
                return sizeStrToBytes(value2) - sizeStrToBytes(value1);
            } else {
                return value2.localeCompare(value1);
            }

        });
        Oinsert();
        // console.log(arr)
        isAsc = false;
        arr = [];
    }
});

function Oinsert() { //向文档添加已排好序的节点
    var fragment = document.createDocumentFragment(); //当你想提取文档的一部分,改变,增加,或删除某些内容及插入到文档末尾可以使用createDocumentFragment() 方法
    for (var j = 0; j < arr.length; j++) {
        fragment.appendChild(arr[j]); //把数组中的元素添加到节点的子节点列表的末尾
    }

    biaoge.appendChild(fragment); //把fragment添加到tbody
    biaoge.appendChild(tr22);
}
function sizeStrToBytes(sizeStr) {

    var regex = /[+-]?\d+(\.\d+)?/g;
    var sizeStr2 = sizeStr.replace(/,/g, '');
    var num = sizeStr2.match(regex).map(function (v) {
        return parseFloat(v);
    });
    var size = 0;
    if (sizeStr.match(/(KB|KiB)/i)) {
        size = num * 1024;
    } else if (sizeStr.match(/(MB|MiB)/i)) {
        size = num * 1024 * 1024;
    } else if (sizeStr.match(/(GB|GiB)/i)) {
        size = num * 1024 * 1024 * 1024;
    } else if (sizeStr.match(/(TB|TiB)/i)) {
        size = num * 1024 * 1024 * 1024 * 1024;
    } else {
        size = num;
    }

    return size;
}