NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Drumpfitizer Plus // @namespace trlkly // @include * // @version 0.0.11 // @grant none // @run-at document-start // @updateURL https://openuserjs.org/install/BigTSDMB/Drumpfitizer_Plus.user.js // @downloadURL https://openuserjs.org/install/BigTSDMB/Drumpfitizer_Plus.user.js // ==/UserScript== function siteCheck() { //list of words in URL to hide until script is finished var sites = [ 'fivethirtyeight', 'foxnews', 'talkingpointsmemo', 'theblaze' ]; return ( window.location.href.search(new RegExp(sites.join('|'),'i')) != -1 ); } function checkWords() { //list of words in URL or title that hide page until script finished var words = ['republican', 'primary', 'election', 'rubio', 'cruz', 'clinton','sanders','bernie', 'hillary', 'democrat', 'president'] var regex = new RegExp(words.join('|'),'i') return document.title.search(regex) != -1 || window.location.href.search(regex) != -1; } function textReplace(text) { //function that actually replaces words. Modified from Drumpfinator if (typeof text != 'undefined') { //console.log (text) //redundant text = text.replace(/Trump\b/g, 'Drumpf'); //redundant text = text.replace(/\bTRUMP\b/g, 'DRUMPF'); text = text.replace(/\bTRUMP(S|ED|ed|ING|ing)?\b/g, 'DRUMPF$1'); text = text.replace(/\bTrump(S|ed|ing)?\b/g, 'Drumpf$1'); //redundant text = text.replace(/\bMake America Great Again\b/g, 'Make Donald Drumpf Again'); text = text.replace(/\bMake America Great Again(!?)\b/g, 'Make Donald Drumpf Again$1'); /*new*/ text = text.replace(/\b#MakeAmericaGreatAgain\b/g, '#MakeDonaldDrumpfAgain'); /*new*/ text = text.replace(/Trump2016/gi, 'Drumpf2016'); text = text.replace(/donald(j?)trump\b/g, 'donald$1drumpf'); //redundant text = text.replace(/donaldtrump\b/g, 'donalddrumpf'); //redundant text = text.replace(/\brealdonaldtrump\b/g, 'realdonalddrumpf'); text = text.replace(/DonaldTrump/g, 'DonaldDrumpf'); /*new*/ text = text.replace(/\b(donald[ -]*)(j?[ -]*)trump/g, '$1$2drumpf'); text = text.replace(/trump([ -]*)(tower)\b/gi, 'drumpf$1$2'); /*new*/ text = text.replace(/T-R-U-M-P/gi, 'd-r-u-m-p-f'); return text; } return null; } function testSpellCheckOnFirefox (node) { if (typeof window.InstallTrigger != 'undefined') { return (!node.spellcheck) } return true; } function textNodeReplace(node) { //faster node walker (for finding text to replace). if (!node) node = document.body; var walk = document.createTreeWalker(node,NodeFilter.SHOW_TEXT,null,false); while (walk.nextNode()) { var nodeType = walk.currentNode.parentNode.nodeName; if (nodeType != 'STYLE' && nodeType != 'LINK' && nodeType != 'SCRIPT' && nodeType != 'TEXTAREA' && !walk.currentNode.parentNode.isContentEditable && testSpellCheckOnFirefox (walk.currentNode.parentNode)) { //DO NOT AFFECT TEXT BOXES!!! walk.currentNode.textContent = textReplace(walk.currentNode.nodeValue); } } if (style) { //unhides the page if it's been hidden style.parentNode.removeChild(style); // console.log(style.textContent) style = null; } } function hoverTextReplace(node) { //replaces text in tooltips. if (!node) node = document.body; var walk = document.createTreeWalker(node,NodeFilter.SHOW_ELEMENT,null,false); while (walk.nextNode()) { if (walk.currentNode.getAttribute('title')) { walk.currentNode.setAttribute( 'title', textReplace(walk.currentNode.getAttribute('title')) ); } if (walk.currentNode.getAttribute('alt')) { walk.currentNode.setAttribute( 'alt', textReplace(walk.currentNode.getAttribute('alt')) ); } } } function titleTextReplace() { //replaces text in title. Includes lowercase 'trump' var oldTitle = document.title; if (window.location.href.search(/dictionary/i) == -1 //excudes dictionaries && document.title.search(/dictionary/i) == -1 ) { if (document.title) { document.title = document.title.replace(/trump/g, 'drumpf'); document.title = textReplace(document.title); } else if (typeof window.InstallTrigger != 'undefined') { //using Firefox; document.title = 'Connecting...\u200E'; } } /* console.log ((document.readyState == 'loading') +' '+ (window.location.href.search(/trump/i) != -1) +' '+ (document.title != oldTitle) +' '+ siteCheck() +' '+ checkWords() + '');/**/ if (!style && document.readyState == 'loading' && ( /*history.length == 1 ||*/ window.location.href.search(/trump/i) != -1 || document.title != oldTitle || siteCheck() || checkWords() ) ) { //hides pages suspected to have "Trump" on them style = document.createElement('style'); style.setAttribute('id', 'drumpf23434'); style.textContent = '* { visibility: hidden !important; background-color: #FFF; }'; document.head.appendChild(style); // console.log('before'); var timer = new Date(); setTimeout(function fallback() { //fallback for iframe issues if (new Date() - timer < 5000 ) { setTimeout(fallback, 5000 - (new Date()-timer)); return; } if (document.getElementById('drumpf23434')) { document.head.removeChild(document.getElementById('drumpf23434')); } }, 5000); /**/ // console.log('after'); } } function unblankTitle() { //if the title got blanked out because it wasn't ready if (document.title && document.title.search(/\u200E$/) != -1) { if (document.head.getElementsByTagName('title')[1]) { document.title = document.head.getElementsByTagName('title')[1].textContent; titleTextReplace(); } else if (document.readyState != 'loading') { //no original title even after page loaded document.title = ''; } } } //Main script execution starts here var style; //needed to hide pages if necessary. titleTextReplace(); setTimeout(unblankTitle, 7); //if the title wasn't ready setTimeout(unblankTitle, 50); setTimeout(unblankTitle, 100); setTimeout(unblankTitle, 150); window.addEventListener('DOMContentLoaded', main) //run the main script once DOM is loaded if (document.readyState != 'loading') { main() } //run if DOM is already loaded. window.addEventListener('load', main); //run again after page is completely loaded, just in case function main() { unblankTitle(); textNodeReplace(document.body); setTimeout(textNodeReplace, 1000); hoverTextReplace(document.body); setTimeout(hoverTextReplace, 1500); } //old naive way--kept for historical reasons //document.body.innerHTML = document.body.innerHTML.replace(/Trump|TRUMP/g, 'Drumpf');