Skip to content

Instantly share code, notes, and snippets.

@Craigson
Created December 7, 2015 04:31
Show Gist options
  • Select an option

  • Save Craigson/3519cb6f9f65ddaa4a8c to your computer and use it in GitHub Desktop.

Select an option

Save Craigson/3519cb6f9f65ddaa4a8c to your computer and use it in GitHub Desktop.
testing GOTblocker
/*
TO DO:
- IF A DIV CONTAINS ANY WORDS RELATED TO GOT, SWAP THE IMAGE
- IF A SENTENCE CONTAINS ANY WORDS RELATING TO GOT, REDACT IT
*/
// Grab the entire document body
// This gets an array even though it's likely just one thing
var everything = document.getElementsByTagName("body");
var keywords = [
"Game of Thrones",
"GOT",
"George R. R. Martin",
"Iron Throne",
"westeros",
"tyrion",
"lannister",
"cersei",
"daenerys",
"targaryen",
"jon snow",
"john snow",
"sansa stark",
"arya",
"stark",
"jorah mormont",
"jaime lannister",
"samwell tarly",
"theon greyjoy",
"petyr baelish",
"varys",
"brienne of tarth",
"tywin lannister",
"sandor",
"tywin",
"sandor clegane",
"bronn",
"joffrey baratheon",
"baratheon",
"catelyn stark",
"bran stark",
"stannis baratheon",
"missandre",
"robb stark",
"margaery tyrell",
"davos seaworth",
"shae",
"melisandre",
"gilly",
"tommen baratheon",
"roose bolton",
"tormund giantsbane",
"gendry",
"ygritte",
"daario naharis",
"ramsay bolton",
"jaqen H'ghar",
"jeor mormont",
"talisa stark",
"ned stark",
"khal drogo",
"ellaria sand",
"robert baratheon",
"vierys targaryen",
"targaryen",
"grand maester pycelle",
"barristan selmy",
"eddison tollett",
"podrick payne",
"grenn",
"hodor",
"loras tyrell",
"meryn trant",
"grey worm",
"alliser thorne",
"janos slynt",
"osha",
"maester luwin",
"rooseolly",
"lancel lannister",
"myrcella baratheon",
"pypar",
"irri",
"rickon stark",
"rast",
"rodrik cassel",
"olenna tyrell",
"hot pie",
"maester aemon",
"qyburn",
"selyse baratheon",
"doreah",
"othell yarwyck",
"shireen baratheon",
"jojen reed",
"oberyn martell",
"mance rayder",
"high sparrow",
"hallyne",
"arryn",
"bolton",
"frey",
"greyjoy",
"lannister",
"martell",
"stark",
"targaryan",
"tully",
"tyrell",
"essos",
"westeros",
"night's watch",
"beyond the wall",
"white walkers",
"crows"
];
/*
var loadKeywords = function(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readystate === 4) {
console.log("we got the file", JSON.parse(xhrrespnse));
}
};
xhr.open("GET", chrome.extension.getURL("/keywords.json"), true);
xhr.send();
}
loadKeywords();
*/
var divArray = [];
for (var i = 0; i < everything.length; i++) {
// Look at the full content
var txt = everything[i].innerHTML;
//var s = "test the <img the> the";
// This is a way of splitting up by tags.
var tokens = txt.split(/(<.*?>)/);
// console.log("logging tokens");
// console.log(tokens);
for (var j = 0; j < tokens.length; j++) {
// Ignore anything that is a tag
if (tokens[j].charAt(0) !== '<') {
// Now replace the word "the" with "the" spanned with the class "redact"
// tokens[j] = tokens[j].replace(/\bthe\b/gi,'<span class="redact">the</span>');
// var sentence = tokens[j];
// console.log(tokens[j]);
var str = tokens[j];
for (var k = 0; k < keywords.length; k++)
{
var keyword = keywords[k].toLowerCase();
var re = new RegExp(keyword);
if (re.test(str)) console.log("replace" + str);
// var n = str.search(re);
// if (n != -1)
// {
// tokens[j] = '<span class="redact">' + str + '</span>';
// console.log(str);
// }
}
// console.log(typeof(tokens[j]));
// var txt = tokens[j].split(' ');
/*
for (var k = 0; k < keywords.length; k++)
{
for (var l = 0; l < txt.length; l++)
{
var word = txt[l].toLowerCase();
if (word == keywords[k])
{
tokens[j] = '<span class="redact">' + sentence + '</span';
console.log(tokens[j]);
}
}
}
*/
}
}
// Put everything back in
everything[i].innerHTML = tokens.join('');
}
console.log("GOTblock loaded");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment