search on Reddit with Google

adds a button to show results only on Reddit (2024)

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         search on Reddit with Google
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  adds a button to show results only on Reddit (2024)
// @author       Taha Wael
// @match        https://www.google.com/*
// @icon         https://i.imgur.com/cMJgGWw.jpeg
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';





    var div = document.createElement("div");
    div.className = "lmao";
    document.querySelector('.dRYYxd').appendChild(div);
    const custom_style={
        flex: '1 0 auto',
        display: 'flex',
        cursor: 'pointer',
        alignItems: 'center',
        border: '0',
        background: 'transparent',
        outline: 'none',
        padding: '0 8px',
        width: '24px',
        lineHeight: '44px',
        // order: '-1'
    }
    let redditB = document.querySelector(".lmao")
    redditB.setAttribute('aria-label', 'Search With Reddit')

    Object.assign(redditB.style,custom_style);

    // Define the SVG code as a string
    const svgCode = `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" height: '24px' width: '24px' verticalAlign: 'middle' viewBox="0 0 256 256" xml:space="preserve">

<defs>
</defs>
<g style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: none; fill-rule: nonzero; opacity: 1;" transform="translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)" >
	<path d="M 89.998 45.604 c -0.201 -5.442 -4.77 -9.691 -10.229 -9.506 c -2.419 0.084 -4.719 1.075 -6.466 2.737 c -7.692 -5.24 -16.729 -8.113 -26.017 -8.314 L 51.67 9.442 l 14.461 3.041 c 0.402 3.712 3.728 6.4 7.44 5.996 c 3.712 -0.402 6.4 -3.728 5.996 -7.44 s -3.728 -6.4 -7.44 -5.996 c -2.134 0.218 -4.048 1.461 -5.105 3.309 L 50.461 5.043 c -1.125 -0.252 -2.251 0.453 -2.503 1.596 c 0 0.017 0 0.017 0 0.033 L 42.97 30.119 c -9.406 0.152 -18.559 3.041 -26.352 8.314 c -3.964 -3.728 -10.212 -3.544 -13.94 0.437 c -3.728 3.964 -3.544 10.212 0.437 13.94 c 0.773 0.722 1.662 1.344 2.653 1.781 c -0.068 0.991 -0.068 1.982 0 2.973 c 0 15.133 17.636 27.444 39.386 27.444 s 39.386 -12.295 39.386 -27.444 c 0.068 -0.991 0.068 -1.982 0 -2.973 C 87.932 52.894 90.066 49.4 89.998 45.604 z" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,69,0); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) " stroke-linecap="round" />
	<path d="M 22.429 52.373 c 0 -3.728 3.041 -6.769 6.769 -6.769 s 6.769 3.041 6.769 6.769 s -3.041 6.769 -6.769 6.769 C 25.453 59.108 22.429 56.102 22.429 52.373 z" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,255,255); fill-opacity="0";" transform=" matrix(1 0 0 1 0 0) " stroke-linecap="round" />
	<path d="M 61.681 71.218 v -0.269 c -4.803 3.611 -10.682 5.458 -16.696 5.207 c -6.014 0.252 -11.891 -1.596 -16.696 -5.207 c -0.638 -0.773 -0.521 -1.931 0.252 -2.569 c 0.671 -0.554 1.629 -0.554 2.318 0 c 4.065 2.973 9.02 4.485 14.058 4.249 c 5.039 0.269 10.011 -1.176 14.125 -4.114 c 0.739 -0.722 1.948 -0.706 2.671 0.033 C 62.436 69.287 62.419 70.496 61.681 71.218 z" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) " stroke-linecap="round" />
	<path d="M 60.757 59.629 c -0.117 0 -0.218 0 -0.336 0 l 0.051 -0.252 c -3.728 0 -6.769 -3.041 -6.769 -6.769 s 3.041 -6.769 6.769 -6.769 c 3.728 0 6.769 3.041 6.769 6.769 C 67.391 56.337 64.486 59.477 60.757 59.629 z" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) " stroke-linecap="round" />
</g>
</svg>
`;

    // Add the SVG code to the div
    div.innerHTML = svgCode;



    redditB.addEventListener("click", function() {
        // Get the input field element
        const searchInput = document.querySelector('[aria-label="Search"]');

        // Get the current value of the input field and trim any extra whitespace
        let searchTerm = searchInput.value.trim();

        // Check if the search term is at least 1 character long
        if (searchTerm.length >= 1) {
            // If "site:www.reddit.com" exists in the input, remove it
            searchTerm = searchTerm.replace(/site:www\.reddit\.com/g, "").trim();

            // Combine the search term with the site filter
            let fullQuery = searchTerm + " site:www.reddit.com";

            // Create the search URL
            let searchUrl = "https://www.google.com/search?q=" + encodeURIComponent(fullQuery);

            // Redirect the browser to the search URL
            window.location.replace(searchUrl);


        } else {
            // If the input field is empty, redirect to a general Reddit search on Google
            window.location.replace("https://www.google.com/search?q=reddit");
        }

    });
    const searchInput = document.querySelector('[aria-label="Search"]');
    searchInput.addEventListener("click", function() {
        if (searchInput.value.includes("site:www.reddit.com")) {
            searchInput.value = searchInput.value.replace(/site:www\.reddit\.com/g, "").trim();
        }
    });




})();