Adds a button to search Reddit posts with Google
// ==UserScript== // @name SearchSpecificSite // @version 0.1 // @description Adds a button to search Reddit posts with Google // @author Mario O.M. // @match *://*.google.com/search* // @match *://*.google.ca/search* // @run-at document-end // @license MIT // @namespace https://greasyfork.org/users/836868 // ==/UserScript== // If the UI version is new const newUI = true; const queryRegex = /q=[^&]+/g; const siteRegex = /\+site(?:%3A|\:).+\.[^&+]+/g; const url_YT = '+site%3Ayoutube.com'; const textNode_YT = '|YT'; const url_reddit = '+site%3Areddit.com'; const textNode_reddit = '|Reddit'; const url_ELI5 = '+site%3Areddit.com%2Fr%2Fexplainlikeimfive'; const textNode_ELI5 = '|rELI5'; const url_engL = '+site%3Areddit.com%2Fr%2FEnglishLearning'; const textNode_engL = '|rEngL'; const url_wordref = '+site%3Aforum.wordreference.com'; const textNode_wordref = '|Wordref'; const url_hi = '+site%3Ahinative.com'; const textNode_hi = '|Hi'; const url_### = '+site%3A###.com'; const textNode_### = '|###'; const url_cnn = '+site%3Acnn.com'; const textNode_cnn = '|CNN'; const url_npr = '+site%3Anpr.org'; const textNode_npr = '|NPR'; const url_nyt = '+site%3Anytimes.com'; const textNode_nyt = '|nyt'; const url_WP = '+site%3Awashingtonpost.com'; const textNode_WP = '|WP'; const url_WSJ = '+site%3Awsj.com'; const textNode_WSJ = '|WSJ'; const isImageSearch = /[?&]tbm=isch/.test(location.search); (function () { // Creating the element let el = document.createElement('div'); el.className = 'hdtb-mitem'; const link_YT = document.createElement('a'); const link_reddit = document.createElement('a'); const link_ELI5 = document.createElement('a'); const link_engL = document.createElement('a'); const link_wordref = document.createElement('a'); const link_hi = document.createElement('a'); const link_### = document.createElement('a'); const link_cnn = document.createElement('a'); const link_npr = document.createElement('a'); const link_nyt = document.createElement('a'); const link_WP = document.createElement('a'); const link_WSJ = document.createElement('a'); // Hyperlink to add 'site:reddit.com' to the query link_YT.appendChild(document.createTextNode(textNode_YT)); link_YT.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_YT) : match + url_YT ; }); link_reddit.appendChild(document.createTextNode(textNode_reddit )); link_reddit.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_reddit ) : match + url_reddit ; }); link_ELI5.appendChild(document.createTextNode(textNode_ELI5)); link_ELI5.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_ELI5) : match + url_ELI5; }); link_engL.appendChild(document.createTextNode(textNode_engL)); link_engL.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_engL) : match + url_engL; }); link_wordref.appendChild(document.createTextNode(textNode_wordref )); link_wordref.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_wordref ) : match + url_wordref ; }); link_hi.appendChild(document.createTextNode(textNode_hi)); link_hi.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_hi ) : match + url_hi ; }); link_###.appendChild(document.createTextNode(textNode_###)); link_###.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_###) : match + url_###; }); link_cnn.appendChild(document.createTextNode(textNode_cnn)); link_cnn.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_cnn) : match + url_cnn; }); link_npr.appendChild(document.createTextNode(textNode_npr)); link_npr.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_npr) : match + url_npr; }); link_nyt.appendChild(document.createTextNode(textNode_nyt)); link_nyt.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_nyt) : match + url_nyt; }); link_WP.appendChild(document.createTextNode(textNode_WP)); link_WP.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_WP) : match + url_WP; }); link_WSJ.appendChild(document.createTextNode(textNode_WSJ)); link_WSJ.href = window.location.href.replace(queryRegex, (match) => { // Replaces the existing `site` flags return match.search(siteRegex) >= 0 ? match.replace(siteRegex, url_WSJ) : match + url_WSJ; }); if (isImageSearch) { //link.classList.add('NZmxZe'); //el = link; } else { el.appendChild(link_YT ); el.appendChild(link_reddit); el.appendChild(link_ELI5 ); el.appendChild(link_engL); el.appendChild(link_wordref ); el.appendChild(link_hi); el.appendChild(link_### ); el.appendChild(link_cnn); el.appendChild(link_npr ); el.appendChild(link_nyt); el.appendChild(link_WP ); el.appendChild(link_WSJ); } // Inserting the element into Google search /* if (newUI) { const toolsBtn = document.querySelector(isImageSearch ? '.ssfWCe' : '.xhjkHe'); toolsBtn.parentNode.appendChild(el, toolsBtn); } else { //const toolsBtn = document.querySelector(isImageSearch ? '.ssfWCe' : '.IC1Ck'); //toolsBtn.parentNode.insertBefore(el, toolsBtn); } */ // Inserting the element into Google search //const toolsBtn1 = document.querySelector(isImageSearch ? '.ssfWCe' : '.xhjkHe'); const toolsBtn1 = document.querySelector(isImageSearch ? '.ssfWCe' : '#tools_1'); if (toolsBtn1!=null){ toolsBtn1.parentNode.appendChild(el, toolsBtn1); } /* const toolsBtn2 = document.querySelector(isImageSearch ? '.ssfWCe' : '.IC1Ck'); if (toolsBtn2!=null){ toolsBtn2.parentNode.insertBefore(el, toolsBtn2); } */ })();