derpi_only_show_upvotes

25/06/2023 Replaces images' score with only upvotes, instead of the usual combined upvotes+downvotes. The upvotes are taken from the HTML data-attributes already loaded on the page. Also hides downvotes via CSS rules. You might still see the downvotes for a split second.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name       derpi_only_show_upvotes
// @namespace   Violentmonkey Scripts
// @match       https://derpibooru.org/*
// @grant       none
// @version     1.5
// @license     MIT
// @author      Saphkey
// @run-at      document-end
// @description 25/06/2023 Replaces images' score with only upvotes, instead of the usual combined upvotes+downvotes. The upvotes are taken from the HTML data-attributes already loaded on the page. Also hides downvotes via CSS rules. You might still see the downvotes for a split second.
// ==/UserScript==


(function() {

	function hideScores(){
		let scoreEls = document.getElementsByClassName('score');
		for (let i = 0; i < scoreEls.length; i++) {
			scoreEls[i].innerHTML = '?';
		}
	}

	function hideDownvotes() {
		let downvoteEls = document.getElementsByClassName('downvotes');
		for (let i = 0; i < downvoteEls.length; i++) {
			downvoteEls[i].innerHTML = '?';
		}
	}


	function displaySingleUpvote(upvotes, imageId) {
		let scoreEls = document.getElementsByClassName('score');

		for (let i = 0; i < scoreEls.length; i++) {
			let scoreEl = scoreEls.item(i);

			if (scoreEl.getAttribute(`data-image-id`) == imageId){
				scoreEl.innerHTML = upvotes;
			}
		}
	}

	function replaceScoresWithUpvotes(imageIds){
		let dataContainers = document.getElementsByClassName('image-container');
		for (let i = 0; i < dataContainers.length; i++) {
			let dataContainer = dataContainers[i];
			let imageId = dataContainer.getAttribute('data-image-id');
			let upvote = dataContainer.getAttribute('data-upvotes');
			displaySingleUpvote(upvote, imageId);
		}
	}



	function addStyleRulesThatHideScoresAndDownvotes(){
		// Check if stylesheets exist yet, if not try again in a bit
		if( !document.styleSheets[0] ) return setTimeout( addStyleRulesThatHideScoresAndDownvotes,1 );

		var ss = document.styleSheets[0];

		// Add style rules
		if(ss.addRule) {
			ss.addRule('.score', 'display: none', 0);
			ss.addRule('.downvotes', 'display: none !important', 0);
		}
		else
		{
			ss.insertRule('.score{display: none}', 0);
			ss.insertRule('.downvotes{display: none !important}', 0);
		}
	}
	function addStyleRulesThatShowScores(){
		// Check if stylesheets exist yet, if not try again in a bit
		if( !document.styleSheets[0] ) return setTimeout( addStyleRulesThatShowScores,1 );

		var ss = document.styleSheets[0];

		// Add style rules
		if(ss.addRule)
			ss.addRule( '.score','display: inline !important',0);
		else
			ss.insertRule('.score{display: inline !important}',0);
	}

	addStyleRulesThatHideScoresAndDownvotes();

  hideScores();
  hideDownvotes();

  replaceScoresWithUpvotes();

  addStyleRulesThatShowScores();
})();