功能:按喜欢排序 | 界面微调
// ==UserScript==
// @name v2ex 脚本
// @namespace github.com/Labolasya
// @match https://*.v2ex.com/t/*
// @grant none
// @version 1.1.1
// @author Labolasya
// @license MIT
// @description 功能:按喜欢排序 | 界面微调
// @run-at document-end
// ==/UserScript==
// main
(function () {
"use strict";
sortElements(
".box .cell[id]",
"span.small.fade:has(img)",
".box:has(.cell[id]) > .cell:not([id])"
);
ui();
})();
function ui() {
const element = document.querySelector(".outdated");
element.textContent = element.textContent.replace(/(\d+)\s*天/g, function(match, p1) {
// 将匹配到的天数转换为数字并计算成年数
let days = parseInt(p1, 10);
let years = (days / 365).toFixed(2); // 保留两位小数
return `${years} 年`;
});
}
// sortElements(selector_list, selector_number)
async function sortElements(
selector_list,
selector_number,
selector_insertTarget
) {
let arr = Array.from(document.querySelectorAll(selector_list)); // 将 NodeList 转换为数组
// 排序逻辑 start
arr.sort((a, b) => {
const getNumber = (element) => {
const span = element.querySelector(selector_number);
if (span === null) return 0;
return parseInt(span.textContent, 10) || 0; // 将文本内容转换为整数
};
const numberA = getNumber(a);
const numberB = getNumber(b);
return numberA - numberB; // 升序排序
});
// 排序逻辑 end
// 按排序后顺序重新插入元素
const insertEles = document.querySelectorAll(selector_insertTarget);
const insertEle = insertEles.length == 1 ? insertEles[0] : insertEles[1];
arr.forEach((a) => insertEle.insertAdjacentElement("afterend", a));
}