A script to add Youtube dislikes back. Use your own API, the extensions don't update the dislikes instantly so I made this.
// ==UserScript==
// @name Youtube Dislike Viewer (USE YOUR OWN API, READ BEFORE DOWNLOADING!)
// @namespace http://tampermonkey.net/
// @version 1
// @description A script to add Youtube dislikes back. Use your own API, the extensions don't update the dislikes instantly so I made this.
// @license MIT
// @author Dildoer the Cocknight
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?domain=youtube.com
// @grant none
// ==/UserScript==
(function() {
//MAKE SURE YOU ENTER YOUR OWN API IN HERE! I'M NOT LETTING ANYONE USE MINE!
let api = "";
let lastUrl = location.href;
new MutationObserver(() => {
const url = location.href;
if (url !== lastUrl) {
lastUrl = url;
onUrlChange();
}
}).observe(document, {subtree: true, childList: true});
function getInfo(){
if(window.location.href.split('/')[3].substring(0, 5) == "watch"){
console.log('yes');
fetch(`https://www.googleapis.com/youtube/v3/videos?id=${location.href.split("?v=")[1]}&key=${api}&part=statistics`)
.then(res => res.json())
.then((out) => {
console.log(out);
let dislikeTimer = setInterval(() => {
if(document.querySelectorAll('ytd-toggle-button-renderer a yt-formatted-string')[1] != undefined){
let dislikes = out.items[0].statistics.dislikeCount;
console.log(`the dislikes are ${dislikes}`)
if (dislikes > 99999999) { dislikes = Math.round(dislikes / 10000000) + "M" } else if (dislikes > 999999) { dislikes = Math.round(dislikes / 100000) / 10 + "M" } else if (dislikes > 9999) { dislikes = Math.round(dislikes / 10000) + "K" } else if (dislikes > 999) { dislikes = Math.round(dislikes / 100) / 10 + "K" }
document.querySelectorAll('ytd-toggle-button-renderer a yt-formatted-string')[1].innerText = dislikes;
if(document.querySelector('.ratioBar') != undefined){
document.querySelector('.likesBar').style.width = `${(parseInt(out.items[0].statistics.likeCount) / (parseInt(out.items[0].statistics.likeCount) + parseInt(out.items[0].statistics.dislikeCount))) * 100}%`;
} else{
document.querySelector('#menu-container ytd-menu-renderer').insertAdjacentHTML('beforeend', `
<div class="ratioBar" style="
width: 34%;
background-color: red;
height: 3px;
margin-top: 35px;
position: absolute;
"><div class="likesBar" style="
background-color: green;
width: ${(parseInt(out.items[0].statistics.likeCount) / (parseInt(out.items[0].statistics.likeCount) + parseInt(out.items[0].statistics.dislikeCount))) * 100}%;
height: 100%;
"></div></div>
`
);
}
clearInterval(dislikeTimer);
} else{ console.log('waiting for dislike button to spawn before proceeding...')}
}, 100);
}).catch(err => console.error(err));
}
}
function onUrlChange() {
console.log('url changed');
getInfo();
}
getInfo();
})();