/// ==UserScript==
// @name Pikabu Panamka Check
// @namespace http://tampermonkey.net/
// @VERSION 1.0
// @Description Display post & comment stats
// @Author Pikabusher
// @match *://pikabu.ru/*
// @GrAnt none
// ==/UserScript==
(function() {
'use strict';
function addPlusesAndMinuses() {
document.querySelectorAll('.story__rating-block').forEach(block => {
if (block.getAttribute('data-custom-added') === 'true') return;
const pluses = block.getAttribute('data-pluses');
const minuses = block.getAttribute('data-minuses');
const ratingCount = block.querySelector('.story__rating-count');
if (!ratingCount) return;
const plusEl = document.createElement('div');
plusEl.textContent = pluses;
plusEl.classList.add('custom-rating-plus');
plusEl.style.textAlign = 'center';
plusEl.style.fontSize = '0.9em';
plusEl.style.color = 'green';
const minusEl = document.createElement('div');
minusEl.textContent = minuses;
minusEl.classList.add('custom-rating-minus');
minusEl.style.textAlign = 'center';
minusEl.style.fontSize = '0.9em';
minusEl.style.color = 'red';
ratingCount.parentNode.insertBefore(plusEl, ratingCount);
if (ratingCount.nextSibling) {
ratingCount.parentNode.insertBefore(minusEl, ratingCount.nextSibling);
} else {
ratingCount.parentNode.appendChild(minusEl);
}
block.setAttribute('data-custom-added', 'true');
});
document.querySelectorAll('.comment__rating').forEach(comment => {
if (comment.getAttribute('data-custom-added') === 'true') return;
const pluses = comment.getAttribute('data-pluses');
const minuses = comment.getAttribute('data-minuses');
const ratingCount = comment.querySelector('.comment__rating-count');
if (!ratingCount) return;
const plusEl = document.createElement('div');
plusEl.textContent = pluses;
plusEl.classList.add('custom-comment-rating-plus');
plusEl.style.textAlign = 'center';
plusEl.style.fontSize = '0.75em';
plusEl.style.color = 'green';
const minusEl = document.createElement('div');
minusEl.textContent = minuses;
minusEl.classList.add('custom-comment-rating-minus');
minusEl.style.textAlign = 'center';
minusEl.style.fontSize = '0.75em';
minusEl.style.color = 'red';
ratingCount.parentNode.insertBefore(plusEl, ratingCount);
if (ratingCount.nextSibling) {
ratingCount.parentNode.insertBefore(minusEl, ratingCount.nextSibling);
} else {
ratingCount.parentNode.appendChild(minusEl);
}
comment.setAttribute('data-custom-added', 'true');
});
}
function addFooterPlusMinus() {
document.querySelectorAll('.story__footer-separator').forEach(sep => {
if (sep.parentElement.querySelector('.custom-footer-plusminus')) return;
const ratingBlock = sep.parentElement.querySelector('.story__footer-rating .story__rating-block');
if (!ratingBlock) return;
const pluses = ratingBlock.getAttribute('data-pluses');
const minuses = ratingBlock.getAttribute('data-minuses');
const newBlock = document.createElement('div');
newBlock.className = 'custom-footer-plusminus';
newBlock.style.display = 'flex';
newBlock.style.flexDirection = 'column';
newBlock.style.alignItems = 'center';
newBlock.style.paddingRight = '8px';
const plusEl = document.createElement('div');
plusEl.textContent = '+' + pluses;
plusEl.style.color = 'green';
plusEl.style.fontSize = '0.9em';
const minusEl = document.createElement('div');
minusEl.textContent = '-' + minuses;
minusEl.style.color = 'red';
minusEl.style.fontSize = '0.9em';
newBlock.appendChild(plusEl);
newBlock.appendChild(minusEl);
sep.insertAdjacentElement('afterend', newBlock);
});
}
function runAll() {
addPlusesAndMinuses();
addFooterPlusMinus();
}
runAll();
setInterval(runAll, 1000);
})();