Ignore 10

-

当前为 2025-07-01 提交的版本,查看 最新版本

// ==UserScript==
// @name         Ignore 10
// @namespace    http://tampermonkey.net/
// @version      0.0.3
// @description  -
// @author       chabab
// @match        https://shikimori.one/animes/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function insertBlock(source, scoresNum) {
        const malScore = document.querySelector('.scores');
        malScore.style.alignItems = 'center';

        const malScoreInfo = document.createElement('p');
        malScoreInfo.innerHTML = `На основе оценок MAL`;
        malScoreInfo.setAttribute('style', 'margin-bottom: 15px;');

        malScore.appendChild(malScoreInfo);

        const bRate = document.querySelector('.scores .b-rate');
        bRate.setAttribute('id', 'MAL-rate');

        const sourceScore = bRate.cloneNode(true);
        sourceScore.setAttribute('id', `${source}-rate`);

        const scoreInfo = document.createElement('p');
        scoreInfo.innerHTML = `На основе ${scoresNum} оценок ${source}`;
        scoreInfo.setAttribute('style', 'margin-bottom: 12px');

        malScore.appendChild(sourceScore);
        malScore.appendChild(scoreInfo);

        const blockParent = malScore.parentElement;
        const scoresHeader = document.createElement('div');
        const textHeader = document.querySelector('.block .m5');
        const button = document.createElement('div');
        const buttonText = document.createElement('span');

        //textHeader.style.padding = '0px';
        //textHeader.style.margin = '0px';
        textHeader.style.width = '-moz-available';

        buttonText.innerText = 'w/ 10';
        button.appendChild(buttonText);
        button.style.position = 'unset';
        button.style.height = 'fit-content'
        button.style.alignContent = 'center';
        scoresHeader.setAttribute('id', 'ignore-10');
        scoresHeader.style.display = 'flex';
        scoresHeader.style.alignItems = 'center';
        scoresHeader.style.marginBottom = '12px';
        button.classList.add('b-link_button');
        scoresHeader.append(button);

        blockParent.insertBefore(scoresHeader, malScore);
        scoresHeader.insertBefore(textHeader, button);

        return [button, buttonText];
    };

    function appendShikiRating() {
        if (document.querySelector('#Shiki-rate')) {
            console.log('Shiki rating block already exists. Skipping.');
            return;
        }

        let isIgnore = false;

        const shikiDataBlock = document.querySelector('#rates_scores_stats');
        if (!shikiDataBlock) {
            return ;
        }
        const shikiDataJSON = shikiDataBlock.getAttribute('data-stats')
        const shikiData = JSON.parse(shikiDataJSON);

        let shikiElemSum = 0;
        let shikiElemCount = 0;
        /*
        for (const elem of shikiData) {
            if (elem[0] == '10') {
                continue
            } else {
                shikiElemSum += (elem[0] * elem[1])
                shikiElemCount += elem[1]
            }
        }
        */

        for (const elem of shikiData) {
            shikiElemSum += (elem[0] * elem[1])
            shikiElemCount += elem[1]
        }

        const shikiAvgScore = shikiElemSum / shikiElemCount;
        const shikiBlock = insertBlock("Shiki", shikiElemCount);
        const textScore = document.querySelector('#Shiki-rate .text-score .score-value');
        const starScore = document.querySelector('#Shiki-rate .stars-container .stars');
        starScore.setAttribute('style', 'color: rgb(68, 85, 102)')

        const oldStarClass = Array.from(starScore.classList).find(c => c.startsWith('score-'));
        if (oldStarClass) {
            starScore.classList.remove(oldStarClass);
        }

        const oldTextClass = Array.from(textScore.classList).find(c => c.startsWith('score-'));
        if (oldTextClass) {
            textScore.classList.remove(oldTextClass);
        }

        const textScoreDec = Math.round(shikiAvgScore);
        textScore.innerHTML = shikiAvgScore.toFixed(2);
        starScore.classList.add(`score-${textScoreDec}`);

        shikiBlock[0].addEventListener('click', () => {
            if (isIgnore == false) {
                shikiBlock[1].innerText = 'w/ 10';
                isIgnore = true;

                //shikiElemSum -= (shikiData[0][0] * shikiData[0][1])
            } else {
                shikiBlock[1].innerText = 'w/o 10';
                isIgnore = false;
            }
        })
    };

    function ready(fn) {
        document.addEventListener('page:load', fn);
        document.addEventListener('turbolinks:load', fn);

        if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading") {
            fn();
        } else {
            document.addEventListener('DOMContentLoaded', fn);
        }
    }

    ready(appendShikiRating);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址