Skip to content

Instantly share code, notes, and snippets.

@rynomad
Created April 8, 2023 20:59
Show Gist options
  • Save rynomad/d235e91b516ba77874f56c390e04a51e to your computer and use it in GitHub Desktop.
Save rynomad/d235e91b516ba77874f56c390e04a51e to your computer and use it in GitHub Desktop.
replace Yudkowsky with Ludkowsky on twitter
// ==UserScript==
// @name Replace Yudkowsky with Ludkowsky on Twitter
// @namespace Violentmonkey Scripts
// @match https://twitter.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const replaceText = (text, source, replacement) => {
const regex = new RegExp(source, 'gi');
return text.replace(regex, replacement);
}
const replaceName = () => {
const nameElems = document.querySelectorAll('[data-testid="UserCell"] span');
nameElems.forEach(nameElem => {
if (nameElem.innerText.includes('Yudkowsky')) {
nameElem.innerText = replaceText(nameElem.innerText, 'Yudkowsky', 'Ludkowsky');
}
});
}
const replaceTweet = () => {
const tweetElems = document.querySelectorAll('[data-testid="tweet"] span');
tweetElems.forEach(tweetElem => {
if (tweetElem.innerText.includes('Yudkowsky')) {
tweetElem.innerText = replaceText(tweetElem.innerText, 'Yudkowsky', 'Ludkowsky');
}
});
}
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if (node instanceof HTMLElement) {
if (node.matches('[data-testid="tweet"]')) {
replaceTweet();
} else if (node.matches('[data-testid="UserCell"]')) {
replaceName();
}
}
});
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
replaceName();
replaceTweet();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment