diff --git a/src/plugins/magnet-hub.js b/src/plugins/magnet-hub.js index c745c69..e8dad70 100644 --- a/src/plugins/magnet-hub.js +++ b/src/plugins/magnet-hub.js @@ -26,6 +26,22 @@ function fallbackCopy(text, $btn) { document.body.removeChild(textarea); } +function parseSize(sizeStr) { + if (!sizeStr || sizeStr === "未知") return 0; + const match = sizeStr.match(/^([\d.]+)\s*(GiB|MiB|KiB|TiB|GB|MB|KB|TB|B)/i); + if (!match) return 0; + const num = parseFloat(match[1]); + const unit = match[2].toUpperCase().replace("I", ""); + const multipliers = {B: 1, KB: 1024, MB: 1048576, GB: 1073741824, TB: 1099511627776}; + return num * (multipliers[unit] || 1); +} + +function parseDate(dateStr) { + if (!dateStr || dateStr === "未知") return 0; + const ts = Date.parse(dateStr); + return isNaN(ts) ? 0 : ts; +} + class MagnetHubPlugin extends BasePlugin { constructor() { super(...arguments); @@ -137,6 +153,12 @@ class MagnetHubPlugin extends BasePlugin { displayResults($container, results, engineName) { $container.empty(); if (0 !== results.length) { + results.sort((a, b) => { + const sizeA = parseSize(a.size), sizeB = parseSize(b.size); + if (sizeB !== sizeA) return sizeB - sizeA; + const dateA = parseDate(a.date), dateB = parseDate(b.date); + return dateB - dateA; + }); results.forEach((result => { const $result = $(`\n
\n
${result.title}
\n
\n 大小: ${result.size || "未知"}\n 日期: ${result.date || "未知"}\n
\n
\n \n \n
\n
\n `); $container.append($result);