Created
August 10, 2022 11:01
-
-
Save alfuken/8c0a9e6115a30e06acb27994dedbe8a0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==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 = [ | |
| ' ', | |
| 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