Skip to content

Instantly share code, notes, and snippets.

@alfuken
Created August 10, 2022 11:01
Show Gist options
  • Save alfuken/8c0a9e6115a30e06acb27994dedbe8a0 to your computer and use it in GitHub Desktop.
Save alfuken/8c0a9e6115a30e06acb27994dedbe8a0 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Google Search Results Filter Lite, semi-auto, domain-based
// @author zeeLime
// @description Hides search results from specified domains. Requires manual configuration directly in the script code, but simple as F.
// @include *://*.google.*/search*
// @version 2022.08.10.12.17.11
// @license WTFPL
// ==/UserScript==
(function() {
var hide_results_from_these_domains = [
'adoclib.com',
'anycodings.com',
'apidock.com',
'libhunt.com',
'stackshare.io',
'zditect.com',
'appsloveworld.com',
];
var hidden_background_colour = "#E0E0E0";
var escape_regex = function(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); };
var regex = new RegExp("\\b("+hide_results_from_these_domains.map(escape_regex).join("|")+")\\b", "i");
var filtered_results = [];
var filtered_domains = [];
var results = document.getElementById('rso').getElementsByClassName('g');
for (var result of results) {
var a = result.getElementsByTagName('a')[0];
var url = new URL(a.href);
var domain = url.hostname.replace("www.","");
if (a.href.startsWith("/url")){
a.href = url.searchParams.get("url");
}
if (regex.test(a.href) && !filtered_results.includes(result)) {
result.style.setProperty('background-color', hidden_background_colour, '');
filtered_results.push(result);
if (!filtered_domains.includes(domain)){
filtered_domains.push(domain);
};
}
}
if (filtered_results.length > 0) {
var report = document.createElement('span');
// Q: Why colour, and not color?
// A: https://twitter.com/Queen_UK/status/661521043538997248
var result_title_colour = getComputedStyle(filtered_results[0].getElementsByTagName('h3')[0]).getPropertyValue("color");
report.style.setProperty('color', result_title_colour, '');
var toggleDisplay = function() {
var toListSentence = function(arr) {
return arr.length < 3 ? arr.join(' and ') : "".concat(arr.slice(0, -1).join(', '), ", and ").concat(arr[arr.length - 1]);
};
var display = filtered_results[0].style.display;
display = (display == '' ? 'none' : '');
for (var filtered_result of filtered_results){
filtered_result.style.display = display;
}
var many = filtered_results.length > 1;
report.innerHTML = [
'&nbsp;',
filtered_results.length,
(many ? 'results' : 'result'),
'from',
toListSentence(filtered_domains),
(many ? 'were' : 'was'),
'filtered out. Click here to',
(display == '' ? 'hide.' : 'show.')
].join(' ');
};
report.addEventListener('click', toggleDisplay, true);
document.getElementById('result-stats').append(report);
toggleDisplay();
};
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment