Javdb 优质影片高亮

基于评分和播放量数据对 Javdb 的优质影片增加高亮背景色,加快浏览速度

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Javdb 优质影片高亮
// @namespace    http://tampermonkey.net/
// @version      1.4.0
// @description  基于评分和播放量数据对 Javdb 的优质影片增加高亮背景色,加快浏览速度
// @author       JHT
// @match        https://javdb.com/*
// @grant        none
// @license      GPLv3
// ==/UserScript==

(function() {
    'use strict';

    // Function to calculate the background color based on score and number of reviews
    function calculateBackgroundColor(score, ratedBy) {
        // Apply a non-linear transformation to the score to reduce high score density
        let scoreTransformed = Math.sqrt(score / 5); // Using square root for non-linear transformation

        // Normalize ratedBy (0 to 100) to a value (0 to 1)
        // Assuming 100 is a high number of reviews, you can adjust this threshold
        let ratedByNormalized = Math.min(ratedBy / 100, 1);

        // Increase the weight of the number of reviews
        let weightedScore = scoreTransformed * ratedByNormalized;

        // Normalize weighted score to (0 to 255)
        let intensity = Math.min(weightedScore * 255, 255);

        // Return the rgba color string
        return `rgba(240, 0, 144, ${intensity / 255})`;
    }

    // Find the movie list div
    const movieListDiv = document.querySelector("body > section > div > div.movie-list.h.cols-4.vcols-8");

    if (movieListDiv) {
        // Get all the item divs
        const items = movieListDiv.querySelectorAll('.item');

        items.forEach(item => {
            // Find the score element
            const scoreElement = item.querySelector('.score .value');
            if (scoreElement) {
                // Extract the score and rated by values
                const scoreText = scoreElement.textContent.trim();
                const scoreMatch = scoreText.match(/([\d.]+)分, 由(\d+)人評價/);

                if (scoreMatch) {
                    const score = parseFloat(scoreMatch[1]);
                    const ratedBy = parseInt(scoreMatch[2], 10);

                    // Calculate the background color
                    const backgroundColor = calculateBackgroundColor(score, ratedBy);

                    // Find the a tag and set the background color
                    const aTag = item.querySelector('a');
                    if (aTag) {
                        aTag.style.backgroundColor = backgroundColor;
                    }
                }
            }
        });
    }
})();