bye-dude

百度拜拜。功能 1、搜索时排除百家号、CSDN; 2、阻止搜索框占位关键词推广;

// ==UserScript==
// @name         bye-dude
// @namespace    https://greasyfork.org/users/866159
// @version      0.0.3
// @description  百度拜拜。功能 1、搜索时排除百家号、CSDN; 2、阻止搜索框占位关键词推广;
// @author       Song
// @match        *://www.baidu.com
// @match        *://www.baidu.com/s?*
// @icon         https://www.baidu.com/favicon.ico
// @license MIT
// @grant        none
// ==/UserScript==
(function () {
    'use strict';


    // -(site:baijiahao.baidu.com)
    const excludeSites = ['baijiahao.baidu.com','csdn.net'];
    const ignoreWords = ['假期', '放假', '万年历'];

    function beforeSubmit() {
        const input = document.querySelector('#kw');
        input.addEventListener('focus', () => {
            let w = input.value;
            if (w.length > 7) {
                excludeSites.forEach(s => {
                    w = w.replaceAll(` -site:${s}`, '');
                });
                console.info('focus 处理后', w)
                input.value = w;
            } else {
                console.info('focus value', w.length, w)
            }
        });
        document.querySelector('#form')
            .addEventListener('submit', event => {
                const w = input.value;
                for (let word of ignoreWords) {
                    if (w.indexOf(word) > -1) {
                        return;
                    }
                }
                const sites = excludeSites.map(s => `-site:${s}`).filter(s => w.indexOf(s) < 0);
                if (sites.length > 0) {
                    input.value = w.trim() + ' ' + sites.join(' ');
                }
            }, {capture: true});
    }

    function clearPlace() {
        const input = document.querySelector('#kw');
        input.placeholder = '';
        Object.defineProperty(input, 'placeholder', {
            set(value) {
                console.info('prevent set placeholder to', value)
            },
            get() {
                return '';
            }
        })
    }

    clearPlace();
    beforeSubmit();
})();