An update to dislikes on YouTube

The thing that annoys the most out of me all the time with those fucking globohomo corpo scum, is how brazen they are with their bullshit reasoning. "To protect small creators :smug:", as if anyone buys it. Those poor, sweet little souls. They could always disable dislikes if it hurts them so bad. The only ones that do are Pajeet scammers. The absolute Chutzpah, to piss on everyone and tell them it's raining. Franly, I'd be much more respectful if they just came out and said that advertisers and mainstream channels are the reason.

Anyways, can't believe nobody posted it here so far, but there's an extention for restoring the dislike bar. Note that it may not work after Dec 13 when they're rumored to remove the api as well.

Edit: @BarberFerdinand I just mentioned it. 5 second google search.
 
Last edited:
The thing that annoys the most out of me all the time with those fucking globohomo corpo scum, is how brazen they are with their bullshit reasoning. "To protect small creators :smug:", as if anyone buys it. Those poor, sweet little souls. They could always disable dislikes if it hurts them so bad. The only ones that do are Pajeet scammers. The absolute Chutzpah, to piss on everyone and tell them it's raining. Franly, I'd be much more respectful if they just came out and said that advertisers and mainstream channels are the reason.

Anyways, can't believe nobody posted it here so far, but there's an extention for restoring the dislike bar. Note that it may not work after Dec 13 when they're rumored to remove the api as well.

Edit: @BarberFerdinand I just mentioned it. 5 second google search.
Yeah, but like you said, it might not be feasible after they finish the implementation. Also, waiting to install anything so as to avoid possible fakes.
 
  • Like
Reactions: FierceBrosnan
Yeah, but like you said, it might not be feasible after they finish the implementation. Also, waiting to install anything so as to avoid possible fakes.
You can always read the code for yourself if it's open source. Also, there's this userscript to restore dislikes you can just add yourself without an extension.
It's also claimed to work after Dec 13.

Archive of script:
JavaScript:
// ==UserScript==
// @name         YouTube Restore Dislike Counters
// @version      1.0.0
// @description  A userscript to restore the dislike counts on YouTube. Not 100% accurate all the time, but stil pretty accurate.
// @author       syndiate
// @match        *://www.youtube.com/*
// @run_at       document_start
// ==/UserScript==

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

async function waitForElm(s) {
    while (!document.querySelector(s)) {
        await new Promise(r => requestAnimationFrame(r))
    }
    return;
}

async function init() {

    try {

    var data = document.querySelector("ytd-app").data;

        for (p = 0; p < data.response.contents.twoColumnWatchNextResults.results.results.contents.length; p++) {

            if (typeof data.response.contents.twoColumnWatchNextResults.results.results.contents[p].videoPrimaryInfoRenderer != 'undefined') {

                var vidroot = data.response.contents.twoColumnWatchNextResults.results.results.contents[p];

            }

        }

        if (vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.isToggled) {

    var l = parseInt(vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.toggledText.accessibility.accessibilityData.label.replace(/( likes|,)/g, ""));

        } else {


             var l = parseInt(vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.defaultText.accessibility.accessibilityData.label.replace(/( likes|,)/g, ""));

        }
    var r = data.playerResponse.videoDetails.averageRating;

    function calculateDislikes(l, r) {
var d = Math.round(l*((5-r)/(r-1)));
        return d;
    }

    if (r != 0) {

    var dislikes = await calculateDislikes(l, r);

    } else {

        var dislikes = 0;

    }

    var dislikesfin = numberWithCommas(dislikes)
    var likesfin = numberWithCommas(l);
    // added bonus

        if (r != 0) {

    document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = likesfin;

        } else {

            document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = "0";

        }

    document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].innerHTML = dislikesfin;

    document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").onmouseup = function() {
       document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = "";
    }

    document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].onmouseup = function() {
       document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].innerHTML = "";
     }


    var sentimentPercent = (l / (l + dislikes))*100;

    document.querySelector("ytd-sentiment-bar-renderer").removeAttribute("hidden");

    document.getElementById("like-bar").setAttribute("style", "width: " + sentimentPercent + "%;");

    } catch(e) {};

}

waitForElm("yt-formatted-string#text.ytd-toggle-button-renderer").then(() => init());

window.addEventListener('yt-page-data-updated', init, false);
 
You can always read the code for yourself if it's open source. Also, there's this userscript to restore dislikes you can just add yourself without an extension.
It's also claimed to work after Dec 13.

Archive of script:
JavaScript:
// ==UserScript==
// @name         YouTube Restore Dislike Counters
// @version      1.0.0
// @description  A userscript to restore the dislike counts on YouTube. Not 100% accurate all the time, but stil pretty accurate.
// @author       syndiate
// @match        *://www.youtube.com/*
// @run_at       document_start
// ==/UserScript==

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

async function waitForElm(s) {
    while (!document.querySelector(s)) {
        await new Promise(r => requestAnimationFrame(r))
    }
    return;
}

async function init() {

    try {

    var data = document.querySelector("ytd-app").data;

        for (p = 0; p < data.response.contents.twoColumnWatchNextResults.results.results.contents.length; p++) {

            if (typeof data.response.contents.twoColumnWatchNextResults.results.results.contents[p].videoPrimaryInfoRenderer != 'undefined') {

                var vidroot = data.response.contents.twoColumnWatchNextResults.results.results.contents[p];

            }

        }

        if (vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.isToggled) {

    var l = parseInt(vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.toggledText.accessibility.accessibilityData.label.replace(/( likes|,)/g, ""));

        } else {


             var l = parseInt(vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.defaultText.accessibility.accessibilityData.label.replace(/( likes|,)/g, ""));

        }
    var r = data.playerResponse.videoDetails.averageRating;

    function calculateDislikes(l, r) {
var d = Math.round(l*((5-r)/(r-1)));
        return d;
    }

    if (r != 0) {

    var dislikes = await calculateDislikes(l, r);

    } else {

        var dislikes = 0;

    }

    var dislikesfin = numberWithCommas(dislikes)
    var likesfin = numberWithCommas(l);
    // added bonus

        if (r != 0) {

    document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = likesfin;

        } else {

            document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = "0";

        }

    document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].innerHTML = dislikesfin;

    document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").onmouseup = function() {
       document.querySelector("yt-formatted-string#text.ytd-toggle-button-renderer").innerHTML = "";
    }

    document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].onmouseup = function() {
       document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].innerHTML = "";
     }


    var sentimentPercent = (l / (l + dislikes))*100;

    document.querySelector("ytd-sentiment-bar-renderer").removeAttribute("hidden");

    document.getElementById("like-bar").setAttribute("style", "width: " + sentimentPercent + "%;");

    } catch(e) {};

}

waitForElm("yt-formatted-string#text.ytd-toggle-button-renderer").then(() => init());

window.addEventListener('yt-page-data-updated', init, false);
if I read it correctly it depends on the player still having average rating. So hopefully YouTube forgets to remove that. (Also the code is a little messy but doesn't really matter)
 
  • Like
Reactions: FierceBrosnan
The extension does what I proposed. https://github.com/Anarios/return-youtube-dislike

This plugin will re-enable the visibility of the dislike count, fetching the total number of dislikes via our API, which in turn relies upon YouTube's Data API.

With the removal of dislike stats from the YouTube API, our backend will switch to using a combination of scraped dislike stats, estimates extrapolated from extension user data and estimates based on view\like ratios.

This is the next best thing since relying on creators to voluntarily share their dislikes doesnt seem likely. I actually think estimating dislikes from a subset of users may be surprisingly reliable (though it is selection bias of a more vocal subset of watchers).
 
Youtube's dislikes now show up when signed out but not when signed in for me. It's inverted itself. The announcement video isn't showing up when I search it which tells me they eiother privated or delisted it and are gonna upload a fresh version with only likes.

EDIT: No it just is buried from the algorithm, still here. likes splurted upways again.
View attachment 2743012
I'm having this EXACT same thing happen. Took 19 days for them to get me.
 
  • Agree
Reactions: The Lawgiver
lol calm down
in roblox?
No IRL since the anger is already there I mean youtubers are pretty much done with them and sooner or a later a mob of them are going to show up at their headquarters and boy oh boy it’s going to be like capital riot again both a comedy and a tragedy. I mean come on some did raid YouTube before and it was nasim ogdamn. And before you ask I don’t encourage violence at first but only use it when all peaceful routes are done or blocked. A massive Protest would be great that is how the capital riot started as before it devolved into after that.
 
Only if you're a crazy Persian woman.
a bunch crazy Persians or just angry youtubers either way it pissed a bunch a people off and sooner or later it’s going to happen again

yeah lets not

last thing we need is another glowie op
best route for it and it was a a what if question question like one of the videos from that corporate channel life’s biggest questions
 
Back