Google Search - Reddit Filter Button

Adds a fancy button adding site:reddit.com to the end of your search!

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Google Search - Reddit Filter Button
// @namespace    https://github.com/Dkdj77/Reddit-search-on-google/
// @version      1.01
// @description  Adds a fancy button adding site:reddit.com to the end of your search!
// @author       DK
// @include *://www.google.*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function createRedditButton() {
        if(document.getElementById('reddit-filter-btn')) return;

        // Find a container below search box (search form area)
        const searchForm = document.querySelector('form[role="search"]');
        if (!searchForm) return;

        const btn = document.createElement('button');
        btn.id = 'reddit-filter-btn';
        btn.textContent = 'Search Reddit';
        btn.style.cssText = `
            margin-left: 10px;
            padding: 6px 12px;
            font-size: 14px;
            background-color: #FF5700;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: 600;
            font-family: Arial, sans-serif;
            user-select: none;
        `;

        btn.addEventListener('click', e => {
            e.preventDefault();

            const urlParams = new URLSearchParams(window.location.search);
            let q = urlParams.get('q') || '';

            if (!q.includes('site:reddit.com')) {
                q = q.trim() + ' site:reddit.com';
                urlParams.set('q', q);
                window.location.href = '/search?' + urlParams.toString();
            }
        });

        // Append button next to search input (or to search form)
        const searchInput = searchForm.querySelector('input[name="q"]');
        if (searchInput && searchInput.parentElement) {
            searchInput.parentElement.appendChild(btn);
        } else {
            searchForm.appendChild(btn);
        }
    }

    
    function waitForSearchForm(retries = 20) {
        const searchForm = document.querySelector('form[role="search"]');
        if (searchForm) {
            createRedditButton();
        } else if (retries > 0) {
            setTimeout(() => waitForSearchForm(retries - 1), 500);
        }
    }

    waitForSearchForm();

    // Also observe page for NEW changes bruh
    const observer = new MutationObserver(() => {
        createRedditButton();
    });

    observer.observe(document.body, {childList: true, subtree: true});
})();