IMDb rating sanitizer

-

As of 28/12/2018. See the latest version.

// ==UserScript==
// @name         IMDb rating sanitizer
// @author       anon
// @description  -
// @include      /^https://www\.imdb\.com/title/tt\d*/(\?|$)/
// @grant        none
// @version      0.0.1.20181228205225
// @namespace    https://greasyfork.org/users/85937
// ==/UserScript==

(function(){
    const ratingsIFrame = document.createElement('iframe');
    ratingsIFrame.style.display = 'none';
    ratingsIFrame.onload = function() {
        const ratingValues = ratingsIFrame.contentDocument.querySelectorAll('.bigcell');
        const ratingCounts = ratingsIFrame.contentDocument.querySelectorAll('.smallcell');
        const ratingValue1 = parseFloat(ratingValues[7].textContent);
        const ratingValue2 = parseFloat(ratingValues[8].textContent);
        const ratingCount1 = parseInt(ratingCounts[7].textContent.replace(/,/g, ''));
        const ratingCount2 = parseInt(ratingCounts[8].textContent.replace(/,/g, ''));
        const finalRatingValue = ((
            (ratingValue1 * ratingCount1) +
            (ratingValue2 * ratingCount2)
        ) / (ratingCount1 + ratingCount2)).toFixed(1);
        const finalRatingCount = ratingCount1 + ratingCount2;
        document.querySelector('.imdbRating a').textContent = finalRatingCount.toLocaleString();
        document.querySelector('.ratingValue *').title = `${finalRatingValue} based on ${finalRatingCount} user ratings`;
        document.querySelector('[itemprop=ratingValue]').textContent = finalRatingValue;
        ratingsIFrame.parentNode.removeChild(ratingsIFrame);
    };
    ratingsIFrame.src = location.href.split('?')[0] + 'ratings';
    document.body.appendChild(ratingsIFrame);
})();