javdb 自动按评价人数排序

sort the search result in javdb.com

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         javdb 自动按评价人数排序
// @version      0.1
// @description:zh-CN javdb 的搜索结果自动按评价人数排序,一眼定位热门
// @namespace    http://tampermonkey.net/
// @description  sort the search result in javdb.com
// @author      cheerchen37
// @license     MIT
// @match         *://javdb.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=javdb.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 函数:按评价人数从大到小排序项目
    function sortItemsByRatings() {
        // 断开观察者以避免触发DOM变化事件
        observer.disconnect();

        var items = $('.item').get();

        items.sort(function(a, b) {
            var ratingTextA = $(a).find('.score .value').text();
            var ratingTextB = $(b).find('.score .value').text();

            var matchesA = ratingTextA.match(/由 (\d+) 人評價/);
            var matchesB = ratingTextB.match(/由 (\d+) 人評價/);

            var numRatingsA = matchesA && matchesA.length > 1 ? parseInt(matchesA[1]) : 0;
            var numRatingsB = matchesB && matchesB.length > 1 ? parseInt(matchesB[1]) : 0;

            return numRatingsB - numRatingsA;
        });

        // 将排序后的元素重新附加到父容器中
        var container = $('.item').parent();
        items.forEach(function(item) {
            container.append(item);
        });

        // 重新连接观察者
        observer.observe(document.body, config);
    }

    // 使用MutationObserver来监视DOM变化
    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                sortItemsByRatings();
            }
        });
    });

    // 配置和启动观察者
    var config = { childList: true, subtree: true };
    observer.observe(document.body, config);

    // 也可以立即运行一次,以处理已经存在的元素
    sortItemsByRatings();
})();