Attempts to convert any numbers on all webpages to base 2. Based on the video https://youtu.be/rDDaEVcwIJM
ของเมื่อวันที่
// ==UserScript==
// @name Convert to binary
// @version 2024-02-07
// @description Attempts to convert any numbers on all webpages to base 2. Based on the video https://youtu.be/rDDaEVcwIJM
// @author Nick M
// @match *://*/*
// @run-at document-idle
// @namespace https://youtu.be/rDDaEVcwIJM
// @license MIT
// ==/UserScript==
(function() {
'use strict';
function toNewBase(n){
let baseChars = ["ı","l"];
let newStr = "";
if (n==0) return baseChars[0];
while (n > 0){
let remainder = n%baseChars.length;
newStr = baseChars[remainder]+newStr
n = (n-remainder)/baseChars.length;
}
return newStr;
}
function replaceNumbers(text){
var pattern1 = /\b\d+(\d+,)*\.?(\d+,)*(k|m|b)?\b/gi;
var pattern2 = /\b\d+(\d+,)*\.?(\d+,)*(k|m|b)?\b/i;
let result = [...text.matchAll(pattern1)];
let newText = text
for (var i=0; i<result.length; i++){
newText = newText.replace(pattern2,"`,`,`");
}
var pattern3 = /`,`,`/;
var groupings = 4
for (var n=0; n<result.length; n++){
var curNum = result[n][0].replaceAll(",","");
console.log(curNum)
var newStr1;
if (curNum == "00"){
newStr1 = toNewBase(0)+toNewBase(0)
} else {
if (curNum[curNum.length-1].toUpperCase() == "K") curNum = Number(curNum.substr(0,curNum.length-1))*1000;
else if (curNum[curNum.length-1].toUpperCase() == "M") curNum = Number(curNum.substr(0,curNum.length-1))*1000000;
else if (curNum[curNum.length-1].toUpperCase() == "B") curNum = Number(curNum.substr(0,curNum.length-1))*1000000000;
else curNum = Number(curNum);
newStr1 = toNewBase(curNum);
}
var newStr2 = "";
for (var e = newStr1.length-groupings; e > -groupings; e -= groupings){
if (e>=0){
newStr2 = "<u style=\"padding-left:1px\">"+newStr1.substr(e,groupings)+"</u>"+newStr2
} else {
newStr2 = "<u style=\"padding-left:1px\">"+newStr1.substr(0,newStr1.length%groupings)+"</u>"+newStr2
}
}
newText = newText.replace(pattern3,newStr2);
}
return newText;
}
function replaceInners(currentNode){
if (!currentNode) currentNode = document.getElementsByTagName("body")[0];
if (currentNode.nodeName == "SCRIPT") return;
if (currentNode.nodeName == "STYLE") return;
if (currentNode.nodeName == "NOSCRIPT") return;
//console.log(currentNode.nodeName)
if (currentNode.childNodes.length > 0){
var nodelist = []
for (var i = 0; i<currentNode.childNodes.length; i++){
nodelist.push(currentNode.childNodes[i])
}
for (var n = 0; n<nodelist.length; n++){
//console.log("childnode:"+nodelist[n].nodeName)
if (nodelist[n].nodeName == "#text"){
var newText = replaceNumbers(nodelist[n].textContent)
if (newText != nodelist[n].textContent){
var replacementNode = document.createElement('span');
replacementNode.innerHTML = newText
currentNode.insertBefore(replacementNode, nodelist[n]);
currentNode.removeChild(nodelist[n]);
}
} else {
replaceInners(nodelist[n])
}
}
}
}
replaceInners()
setTimeout(replaceInners,2000);
setTimeout(replaceInners,4000);
setTimeout(replaceInners,8000);
setTimeout(replaceInners,16000);
})();