Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/e58f7941fbd8d09c56e2019b5ca02d91.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript== // @name 9gag - Return dislike count // @namespace https://github.com/Procyon-b // @version 0.5 // @description Display the like and dislike counts next to the arrow buttons. Forces display of poster's name instead of section. Display account's age next to posts and comments // @author Achernar // @match https://9gag.com/* // @run-at document-start // @grant none // @downloadURL https://update.greasyfork.icu/scripts/466543/9gag%20-%20Return%20dislike%20count.user.js // @updateURL https://update.greasyfork.icu/scripts/466543/9gag%20-%20Return%20dislike%20count.meta.js // ==/UserScript== (function() { "use strict"; // JSON.parse var JP=JSON.parse; JSON.parse=function(){ var r=JP(...arguments); if (r && r.data && r.data.post && r.data.post.interests) { r.data.post.interests=[]; addProf(r.data.post.creator); } if (r && r.data && r.data.posts) { for (let v,k=0; v=r.data.posts[k]; k++) { v.interests=[]; posts[v.id]={id: v.id, up: v.upVoteCount, down: v.downVoteCount}; addProf(v.creator); } } try{ if (r.data.items) { for (let v,k=0; v=r.data.items[k]; k++) { if (v.post) v.post.interests=[]; } } } catch(e){} if (r && r.payload && r.payload.comments) { for (let v,k=0; v=r.payload.comments[k]; k++) { addProf(v.user); } } return r; } var posts={}, done=false, prof={}, ST, iST=` ._fixed._exists li::before, ._fixed._exists .post-vote__btn.upvote::before { content: var(--upvotes); } ._fixed._exists li::after, ._fixed._exists .post-vote__btn.downvote::after { content: var(--downvotes); } ._fixed._exists .post-vote__btn.upvote, ._fixed._exists .post-vote__btn.downvote { display: flex; } .post-award-users { display: none !important; } .ui-post-creator__creation::after, .post-view-header__head::after, .ui-comment-header__container .ui-comment-header__time::after { content: var(--profage); margin-left: 1em; color: var(--palette-text-normal); pointer-events: none; } .ui-comment-header__container a.ui-comment-header__time::after { position: absolute; } `; function addProf(v) { if (v && !prof[v.username || v.displayName]) { prof[v.username || v.displayName]={v, id: v.accountId, creation: v.creationTs || v.timestamp || (v.userId && v.userId.substr(2,10)), fullName: v.fullName, username: v.username || v.displayName, approx: v.creationTs?0:1 } } } function init() { if (done) return; else done=true; var obs = new MutationObserver(function(muts){ var pt=null; for (let mut of muts) { if (mut.addedNodes.length) { if (mut.target != pt) { pt=mut.target; getBtnV(mut.target); } } } }); obs.observe(document.body, {subtree: true, childList: true} ); addSt(); getBtnV(); } if (document.readyState != 'loading') init(); else { document.addEventListener('DOMContentLoaded', init); window.addEventListener('load', init); } function getBtnV(r=document) { var a=r.querySelectorAll(':first-child.btn-vote:not(._fixed), .post-vote:not(.fixed)'); for (let n of a) { n.classList.add('_fixed'); let p=n.closest('article'); if (p) { let id= (p.id || '').split('-').pop(); if (!id) { // mobile let e=p.querySelector(':scope > header > a[href^="/gag/"]'); if (e) id=e.href.split('/').pop(); } if (posts[id]) { n.classList.add('_exists'); n.style='--upvotes: "'+posts[id].up+'"; --downvotes: "'+posts[id].down+'";'; } } } a=r.querySelectorAll('.ui-post-creator__author:not(._fixed), .post-view-header__author:not(._fixed), .ui-comment-header__username:not(._fixed)'); for (let n of a) { n.classList.add('_fixed'); let id=n.href.split('/').pop(); if (prof[id] && parseInt(prof[id].creation) ) { let d=parseInt( ( Date.now()/1000 - prof[id].creation ) /60/60/24 ) n.parentNode.style='--profage: "('+(prof[id].approx?'~ ':'')+d+' days old)"'; } } } function addSt() { if (!iST) { return; } try { ST=document.createElement('style'); document.documentElement.appendChild(ST); ST.textContent=iST; iST=''; }catch(e){ setTimeout(addSt,0); } } })();