Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @id herp-derp-mokum
- // @name herp derp for mokum
- // @version 0.0.0.1
- // @description Post&comment beautifier for Mokum. Based on Herp Derp for Youtube Chrome extension https://www.tannr.com/herp-derp-youtube-comments/
- // @author Tanner Stokes, me, you
- // @include https://*.mokum.place/*
- // @match https://*.mokum.place/*
- // ==/UserScript==
- // Put your favorite users here
- var users = ['unmokum', 'unruled'];
- // Don't look here :(
- // data to look for derpable elements
- // syntax: blocks['unique-parent'] = [ 'child-to-derp', 'child-to-identify-user' (, 'child-of-child-to-...') ]
- var blocks = [];
- blocks['div.post-body'] = ['div.post.text.post_text_div', 'div.title', 'a'];
- blocks['div.comment'] = ['span.comment-text', 'span.author', 'a'];
- // builds a string with random herps and derps
- var derpString = function() {
- var randomLength = Math.floor(Math.random()*20)+1;
- var returnString = '';
- for (x=0; x<=randomLength; x++) {
- returnString += (Math.floor(Math.random()*2) ? 'herp ' : 'derp ');
- }
- return returnString;
- };
- // derps a comment
- var derpComment = function(comment) {
- // don't derp the 'more comments' element
- if (comment.hasChildNodes() && comment.querySelector('a.more-comments') !== null)
- return false;
- // preserve the original contents
- comment.derpOriginal = comment.innerHTML;
- // revert to the original when clicked
- //comment.onclick = function() {
- // comment.innerHTML = comment.derpOriginal;
- //};
- // change the contents
- comment.innerHTML = derpString();
- return true;
- };
- // derp a block, that contains an element to derp and identification elements
- var derpBlock = function(sel) {
- // how do i fucking do it??? what was the selector name again
- blk_selector = [sel.nodeName, sel.getAttribute('class')].join('.').toLowerCase();
- var blk = blocks[blk_selector];
- if (blk === null)
- return;
- // check if a child to be derped exists
- if(sel.querySelector(blk[0]) === null)
- return;
- // go to a child containing username
- var prnt = sel;
- for(i = 1; i < blk.length; i++) {
- prnt = prnt.querySelector(blk[i]);
- if (prnt === null)
- return;
- }
- // we extract username from href
- var usr = prnt.getAttribute("href").substring(1);
- if (!users.includes(usr)) {
- // add derped class even if we don't derp it
- sel.classList.add('derped');
- return;
- }
- // derp the child
- if (derpComment(sel.querySelector(blk[0])))
- // add derped class
- sel.classList.add('derped');
- };
- // build the full selector string from block parents
- var derpSelectorString = Object.keys(blocks).map(function(key, index) {
- return key + ':not(.derped)';
- }).join(", ");
- (function() {
- //'use strict';
- document.querySelectorAll(derpSelectorString).forEach(derpBlock);
- // every 200 milliseconds, derp any un-derped elements
- setInterval(function() {
- document.querySelectorAll(derpSelectorString).forEach(derpBlock);
- }, 200);
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement