Google result tweaker

Mark & re order spam sites

2018-12-23 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Google result tweaker
// @namespace    https://www.topcl.net/
// @version      0.2
// @description  Mark & re order spam sites
// @author       VJ
// @match        https://www.google.com/search?*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const resultSections=document.querySelectorAll('#rso > div > div.srg');
    if(0==resultSections.length){ console.warn("No result found, google has page layout update?"); return; }
    const lastResultSection = resultSections[resultSections.length-1];

    const BlockList=[
        {hostname:"blog.csdn.net",reason:"低质量社区",tobottom:true},
        {hostname:"bbs.csdn.net",reason:"低质量社区",tobottom:true},

        {hostname:"www.logphp.com",reason:"链接站",tobottom:true},

        {hostname:"www.voidcn.com",reason:"采集",tobottom:true},
        {hostname:"tw.saowen.com",reason:"采集",tobottom:true},
        {hostname:"stackoverrun.com",reason:"机翻采集",tobottom:true},
        {hostname:"codeday.me",reason:"机翻采集",tobottom:true},
    ];

    const BlockHandler=(result,config)=>{
        result.style.opacity='.5';
        const cite = result.querySelector('cite');
        cite.innerText=`[${config.reason}] ${cite.innerText}`;
        if(config.tobottom){ lastResultSection.appendChild(result); }
    };

    const handledEntries=[];

    for(let c=0; c<resultSections.length; c++)
    {
        const resultContainer = resultSections[c];
        var items = resultContainer.querySelectorAll('div.g');
        for(let i=0;i<items.length;i++)
        {
            const resultEntry = items[i];
            if(-1!=handledEntries.indexOf(resultEntry)) continue;

            const link = resultEntry.querySelector('div.r a');
            const cite = link.querySelector('cite');
            const hostname = link.hostname;

            for(let j=0;j<BlockList.length;j++){
                const confEntry=BlockList[j];
                if(hostname==confEntry.hostname){
                    BlockHandler(resultEntry,confEntry);
                    handledEntries.push(resultEntry);
                    --i;
                    break;
                }
            }

        }
    }
})();