Greasy Fork is available in English.

清水河畔工具

1.清水河畔帖子详情页面下滑至底部自动翻页

// ==UserScript==
// @name         清水河畔工具
// @namespace    https://greasyfork.org/zh-CN/users/672362-zhenger233
// @version      0.2.2
// @description  1.清水河畔帖子详情页面下滑至底部自动翻页
// @description  2.黑名单
// @author       Zhenger233
// @match        *://bbs.uestc.edu.cn/forum.php?mod=viewthread*
// @grant        none
// @license WTFPL
// ==/UserScript==

(function () {
    'use strict';
    var setting = {
        autoGetNewPost: true,
        enableBlocklist: true,
        blocklist: []
    }
    var xmlhttp = new XMLHttpRequest();
    var argsPage = window.location.search.substr(1).match(new RegExp("(^|&)page=([^&]*)(&|$)", "i"));
    var nowPage = argsPage === null ? 1 : +argsPage[2];
    var thisURL = window.location.href;
    var maxPage;
    if (document.getElementsByClassName('nxt').length === 0) maxPage = 1;
    else maxPage = +document.getElementsByClassName('nxt')[0].previousElementSibling.innerText.replace(' / ', '').replace(' 页', '');
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            //document.getElementById('postlistreply').previousElementSibling.appendChild(new DOMParser().parseFromString(xmlhttp.responseText, 'text/html').getElementById('postlist'));
            var p = new DOMParser().parseFromString(xmlhttp.responseText, 'text/html').getElementsByClassName('plhin');
            let newDiv = document.createElement("div");
            for (var i = 0; i < p.length;){
                 newDiv.append(p[i]);
            }
            document.getElementById('postlistreply').previousElementSibling.append(newDiv);

            preProcess();
            blockSomebody();
        }
    };
    var send1 = function () {
        if (nowPage < maxPage) {
            console.log('send', nowPage);
            xmlhttp.open('GET', thisURL.replace(/&page=[0-9]*/, '').replace(/#.*/, '') + '&page=' + String(++nowPage), false);
            xmlhttp.send();
        }
    };
    document.onscroll = function () {
        document.getElementById('postlistreply').getBoundingClientRect().y < 666 ? send1() : {};
    };

    var blockSomebody = function (somebody) {
        if (setting.enableBlocklist) {
            if (typeof somebody == 'string')
                for (let i of document.getElementsByClassName(somebody)) i.hidden = true;
            else if (typeof somebody == 'undefined') {
                for (let id of setting.blocklist)
                    for (let i of document.getElementsByClassName(id)) i.hidden = true;
            }
        }

    }

    var preProcess = function () {
        let pls = document.getElementsByClassName('pl bm');
        let pll = pls.length;
        for (let i = 0; i < pll - 1; i++) {
            if (pls[i].getElementsByClassName('blockClass').length) continue;
            let ps = Array.from(pls[i].childNodes);
            ps.shift(); ps.shift(); ps.shift(); ps.shift(); ps.pop(); ps.pop();
            for (let j = 0; j < ps.length; j++) {
                let thisID = ps[j].getElementsByClassName('xw1')[0].href.substr(47);
                ps[j].className = thisID;
                let blockSpan = document.createElement('span');
                blockSpan.innerText = '|';
                blockSpan.className = 'pipe';
                let blocktext = document.createElement('a');
                blocktext.className = 'blockClass';
                blocktext.innerText = '不看该作者';
                blocktext.onclick = function () {
                    if (confirm('将该用户加入黑名单?')) {
                        setting.blocklist.push(thisID);
                        blockSomebody(thisID);
                    }
                }
                ps[j].getElementsByClassName('pipe')[0].parentNode.append(blockSpan, blocktext);
            }
        }
    }

    preProcess();
    // Your code here...
})();