Google 搜索结果过滤器 (Google Search Results Filter)

使用正则表达式过滤谷歌搜索结果

// ==UserScript==
// @name         Google 搜索结果过滤器 (Google Search Results Filter)
// @name:en      Google Search Results Filter (Google 搜索结果过滤器)
// @namespace    ChanceLi/search_results_filter
// @version      0.3
// @description  使用正则表达式过滤谷歌搜索结果
// @description:en Filter google search results using regular expression
// @author       ChanceLi
// @match        *://*.google.com/search*
// @match        *://*.google.com.hk/search*
// @match        *://*.google.com.tw/search*
// @include      /https?:\/\/(?:www.)?google(\.[a-z]{2,3})(?:\.[a-z]{2})?\/search.*/
// @icon         data:image/png;base64,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
// @run-at       document-start
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_addStyle
// @grant        unsafeWindow
// @license      AGPL License
// ==/UserScript==

(function() {
    'use strict';

    const blockListStoreKey = "blocklist"

    const getBlockList = function() {
        return GM_getValue(blockListStoreKey, []);
    }

    const setBlockList = function(blockList) {
        GM_setValue(blockListStoreKey, blockList);
    }

    const log = function() {
        if (false) {
            console.log(...arguments)
        }
    }


    const googleSearchFilter = {
        retrieveUrlFromOriginalLink(link) {
            const url = new URL(link);
            let result;
            if (url.searchParams.has('url') && url.host.match(/^(?:www.)?google(?:\.[a-z]{2,3})(?:\.[a-z]{2})?$/)) {
                result = url.searchParams.get('url');
            } else {
                result = link;
            }
            return result;
        },
        retrieveResultItem() {
            return Array.from(document.body.querySelectorAll('div.g'));
        },
        findUrlFromResultItem(resultItem) {
            const link = resultItem.querySelector('a[jsname]');
            return link && link.href;
        }
    }

    let linkClicked;

    document.addEventListener('contextmenu', function(e) {
        const link = e.target.closest('a');
        if (link) {
            linkClicked = googleSearchFilter.retrieveUrlFromOriginalLink(link.href);
        }
    }, false);


    GM_registerMenuCommand("添加规则 Add Rule", function(event) {
        const rule = prompt("用正则表达式描述规则 Describe the Rule Using Regex", linkClicked && `^${linkClicked.replace(/[\*\.\?\+\$\^\[\]\(\)\{\}\|\\]/g, "\\$&")}$`);
        linkClicked = null;
        const blocklist = getBlockList();
        if (!rule || blocklist.indexOf(rule) > 0) {
            return;
        }
        setBlockList([...blocklist, rule]);
    });


    GM_registerMenuCommand("删除规则 Remove Rule", function showPopup(e) {
        const popContainer = document.createElement('div');

        const mask = document.createElement('div');
        mask.classList.add("gmPopupMask");
        mask.onclick = function(e) {
            document.body.removeChild(popContainer);
        };
        popContainer.appendChild(mask);

        const popup = document.createElement('div');
        popup.classList.add("gmPopupContainer");

        const header = document.createElement('div');
        header.innerHTML = "点击删除 Click Item to Delete<br>点击弹窗外退出 Click Outside to Exit";
        header.classList.add("gmPopupHeader");
        popup.appendChild(header);

        const list = document.createElement('ol');
        popup.appendChild(list);

        const blocklist = getBlockList();

        if (blocklist.length == 0) {
            const empty = document.createElement('li');
            empty.innerHTML = '空 Empty';
            empty.classList.add("gmPopupItem")
            list.appendChild(empty);
        } else {
            blocklist.forEach(function(e, i) {
                const li = document.createElement("li");
                li.innerHTML = e;
                li.classList.add("gmPopupItem");
                li.onclick = function() {
                    // 点击选项后的回调函数
                    if (confirm("规则将被删除 Rule Will Be Deleted :" + e)) {
                        setBlockList(blocklist.toSpliced(i, 1));
                    }
                    // 隐藏弹窗
                    document.body.removeChild(popContainer)
                    showPopup();
                };
                list.appendChild(li);
            })
        }

        popContainer.appendChild(popup);
        // 显示弹窗
        document.body.appendChild(popContainer)
    })


    const blocklist = getBlockList().map(function(regex) {
        return new RegExp(regex);
    });

    log(blocklist);

    const handled = new Set();
    let blockItemCount = 0;

    const MO = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
    if(MO){
        const observer = new MO(function(records){
            log("start iterate records...")
            googleSearchFilter.retrieveResultItem().filter(function(e) {
                if (handled.has(e)) {
                    log('hit handled...')
                    return false;
                } else {
                    handled.add(e);
                    log('new item handled, now size: ' + handled.size);
                    return true;
                }
            }).forEach(function(resultItem) {
                    let url;
                    if (!(url = googleSearchFilter.findUrlFromResultItem(resultItem))) {
                        return;
                    }
                    log("find url: " + url)
                    const rule = blocklist.find(function(rule){
                        return url.match(rule) !== null
                    })
                    if (rule) {
                        blockItemCount++;
                        resultItem.style.display = 'none';
                        log(blockItemCount + " blocked:" + url + " by " + rule);
                    }
                });
        });
        const option = {
            'childList': true,
            'subtree': true
        };
        observer.observe(document, option);
    }

    //--- CSS styles make it work...
    GM_addStyle(`
.gmPopupContainer {
  position: fixed;
  display: flex;
  flex-direction: column;
  align-items: center;
  top: 30%;
  left: 50%;
  padding: 2em;
  background: white;
  border: 3px double black;
  border-radius: 1ex;
  z-index: 777;
  transform: translate(-50%);
}
.gmPopupItem {
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  cursor: pointer;
  color: black;
  border-radius: 5px;
  padding: 10px;
  margin-bottom: 10px;
}

.gmPopupHeader {
  margin-bottom: 2em;
  text-align: center;
}

.gmPopupMask {
  z-index:777;
  background-color:#000;
  position: fixed;top: 0;right: 0;bottom: 0;left: 0;
  opacity:0.5;
}`);

})();