// ==UserScript== // @name SMZDM 分类页自动排序 // @namespace http://tampermonkey.net/ // @version 0.7 // @description SMZDM 分类页自动热度排序10页商品 // @author cheerchen37 // @match https://www.smzdm.com/fenlei/* // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/514167/SMZDM%20%E5%88%86%E7%B1%BB%E9%A1%B5%E8%87%AA%E5%8A%A8%E6%8E%92%E5%BA%8F.user.js // @updateURL https://update.greasyfork.icu/scripts/514167/SMZDM%20%E5%88%86%E7%B1%BB%E9%A1%B5%E8%87%AA%E5%8A%A8%E6%8E%92%E5%BA%8F.meta.js // ==/UserScript== (function() { 'use strict'; // 获取当前页面的 URL 并构造基础 URL const currentPage = window.location.href; const baseUrl = currentPage.split('#')[0]; // 移除 URL 中的 hash 部分 const itemsPerPage = 20; // 假设每页有20个项目 let items = []; function parseItems(doc) { const itemList = doc.querySelectorAll('ul#feed-main-list > li'); itemList.forEach(li => { const favCount = parseInt(li.querySelector('.z-group-data[title^="收藏数"] span').textContent, 10); const commentCount = parseInt(li.querySelector('.z-group-data[title^="评论数"] span').textContent, 10); const activity = favCount + commentCount; items.push({ element: li, favCount, commentCount, activity }); }); } function fetchPage(pageNumber) { const url = `${baseUrl}/p${pageNumber}/`; return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseType = 'document'; xhr.onload = () => { if (xhr.status === 200) { parseItems(xhr.response); resolve(); } else { reject(`Failed to load page ${pageNumber}`); } }; xhr.onerror = () => reject(`Network error while fetching page ${pageNumber}`); xhr.send(); }); } async function fetchAllPages() { const promises = []; for (let i = 2; i <= 9; i++) { // 从第2页到第10页 promises.push(fetchPage(i)); } await Promise.all(promises); items.sort((a, b) => b.activity - a.activity); items = items.slice(0, itemsPerPage); // 只保留最活跃的一页项目 // Debug output console.log("Sorted and filtered items:"); items.forEach(item => { console.log(`Activity: ${item.activity}, Comments: ${item.commentCount}, Favorites: ${item.favCount}`); }); displaySortedItems(); } function displaySortedItems() { const listContainer = document.querySelector('ul#feed-main-list'); listContainer.innerHTML = ''; items.forEach(item => { listContainer.appendChild(item.element); }); } // 首先解析当前页 parseItems(document); // 然后获取后续页 fetchAllPages(); })();