vlr.gg user blocker

Block user posts on vlr.gg through the settings page

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         vlr.gg user blocker
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Block user posts on vlr.gg through the settings page
// @author       You
// @match        https://www.vlr.gg/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==
//
(function() {
    'use strict';

    /*
    Adds the ability to block user messages on vlr.gg. Block and unblock users from the settings page of your vlr.gg profile.
    */


    function htmlToElement(html) {
    var template = document.createElement('template');
    html = html.trim();
    template.innerHTML = html;
    return template.content.firstChild;
}
    if(document.URL == "https://www.vlr.gg/settings"){
        // Creates unblock and block entry forms and buttons.
        let blocklist_div = document.createElement("div")
        blocklist_div.className = "wf-card mod-form mod-dark";
        let blocklist_blockedusers_label = htmlToElement("<div class=\"form-label\">Blocked Users</div>");
        let blocklist_blockedusers_p = document.createElement("p")
        let blocklist_block_label = htmlToElement("<div class=\"form-label\">Block a User</div>")
        let blocklist_unblock_label = htmlToElement("<div class=\"form-label\">Unblock a User</div>")
        let blocklist_block_entry = document.createElement("input")
        let blocklist_block_button = document.createElement("button")
        let blocklist_unblock_entry = document.createElement("input")
        let blocklist_unblock_button = document.createElement("button")

        let blocked_users_string = localStorage.getItem("saved_blocked_users")
        let blocked_users_array = blocked_users_string.split(",")
        // the blocked users list is stored as a string delimited by commas

        blocklist_blockedusers_p.innerText = (blocked_users_array)



        blocklist_block_button.innerText = "Block"
        blocklist_block_button.type = "button"
        blocklist_block_button.className = "btn"
        blocklist_block_button.onclick = function alertfromtestentry(){alert("Blocked " + blocklist_block_entry.value)
                                                                       blocked_users_array.push(blocklist_block_entry.value)
                                                                       localStorage.setItem("saved_blocked_users",blocked_users_array)
                                                                       blocklist_block_entry.value = ""
                                                                       blocklist_blockedusers_p.innerText = (blocked_users_array)
                                                                      }
        //Block users button creates alert, adjusts array and stored array, resets entry box and list

        blocklist_block_entry.type = "text"



        blocklist_unblock_button.innerText = "Unblock"
        blocklist_unblock_button.type = "button"
        blocklist_unblock_button.className = "btn"
        blocklist_unblock_button.onclick = function alertfromtestentry2(){alert("Unblocked " + blocklist_unblock_entry.value)
                                                                         let remove_index = (blocked_users_array.findIndex(element => element === blocklist_unblock_entry.value))
                                                                         if (remove_index >0){
                                                                             // findIndex() returns -1 if the element is not in the array.
                                                                             blocked_users_array.splice(remove_index,1)
                                                                         }
                                                                         localStorage.setItem("saved_blocked_users",blocked_users_array)
                                                                         blocklist_unblock_entry.value = ""
                                                                         blocklist_blockedusers_p.innerText = (blocked_users_array)
                                                                        }

        blocklist_unblock_entry.type = "text"

        let forms = document.getElementsByTagName("form");
        let form = forms[1];
        // all the grey blocks in the settings page are children of this form
        form.appendChild(blocklist_div);
        blocklist_div.appendChild(blocklist_blockedusers_label);
        blocklist_div.appendChild(blocklist_blockedusers_p);
        blocklist_div.appendChild(blocklist_block_label);
        blocklist_div.appendChild(blocklist_block_entry);
        blocklist_div.appendChild(blocklist_block_button);
        blocklist_div.appendChild(blocklist_unblock_label);
        blocklist_div.appendChild(blocklist_unblock_entry);
        blocklist_div.appendChild(blocklist_unblock_button);
    }




    let blocked_users_string = localStorage.getItem("saved_blocked_users")
    let blocked_users_array = blocked_users_string.split(",")
    let elemlist = document.getElementsByClassName("post-header-author mod-vlr"); //class for any post or reply on a thread page
    let blocklist = new Set(blocked_users_array);
    let deletelist = [];

    if(document.URL == "https://www.vlr.gg/threads"){
       let descs = document.getElementsByClassName("description") // class that contains the author of the post
       for(let i=0;i<descs.length;i++){
           try{
               let a_tag = descs[i].getElementsByTagName("a")
               a_tag = a_tag[0] // gets the <a> element that contains the author
               let post_author = a_tag.innerText
               if (blocklist.has(post_author)){
                   let parent_post = descs[i].parentElement;
                   parent_post = parent_post.parentElement; // selects whole post
                   deletelist.push(parent_post);

               }
           }
           catch (TypeError){ // in case of authorless posts
           }
       }
    }

    for (let index = 0; index < elemlist.length; index++) {
        console.log(elemlist[index].innerText)
    if(blocklist.has(elemlist[index].innerText)){

        let parent = elemlist[index].parentElement;
        parent = parent.parentElement; //to remove the entire post and not just the header
        deletelist.push(parent);
    }

}
    for (let index = 0; index<deletelist.length; index++){
        deletelist[index].remove()
    }

})();