Ignore 10

-

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

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

'use strict';

function insertBlock(source, scoresNum) {
    console.log('insert')
    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() {
    console.log('append')
    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;
    let shikiElemSumDiff = 0;
    let shikiElemCountDiff = 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) {
        //debugger
        if (elem[0] == '10') {
            shikiElemSum += (elem[0] * elem[1])
            shikiElemCount += elem[1]
            shikiElemSumDiff = elem[0] * elem[1];
            shikiElemCountDiff = elem[1]
        }
        shikiElemSum += (elem[0] * elem[1])
        shikiElemCount += elem[1]
    }

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

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

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

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

    if (isIgnore == false) {
        shikiBlock[1].innerText = 'w/o 10'
    }

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

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

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

            shikiElemSum = shikiElemSum - shikiElemSumDiff
            shikiElemCount = shikiElemCount - shikiElemSumDiff
            shikiAvgScore = shikiElemSum / shikiElemCount
            console.log(shikiElemSum, shikiElemCount, shikiAvgScore, shikiElemSumDiff, shikiElemCountDiff)
            textScoreDec = Math.round(shikiAvgScore);
            textScore.innerHTML = shikiAvgScore.toFixed(2);

            textScore.classList.add(`score-${textScoreDec}`);
            starScore.classList.add(`score-${textScoreDec}`);

            console.log("if: ", isIgnore, shikiAvgScore)

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

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

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

            shikiElemSum = shikiElemSum + shikiElemSumDiff
            shikiElemCount = shikiElemCount + shikiElemSumDiff
            shikiAvgScore = shikiElemSum / shikiElemCount
            textScoreDec = Math.round(shikiAvgScore);
            textScore.innerHTML = shikiAvgScore.toFixed(2);

            textScore.classList.add(`score-${textScoreDec}`);
            starScore.classList.add(`score-${textScoreDec}`);

            console.log("else: ", isIgnore, shikiAvgScore)
        }
    })

    console.log(isIgnore)
};

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或关注我们的公众号极客氢云获取最新地址