4chan+

Adds some kool features to 4chan!

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         4chan+
// @namespace    http://tampermonkey.net/
// @version      2.4
// @description  Adds some kool features to 4chan!
// @author       MrSkeletal
// @match        http://boards.4chan.org/*
// @match        https://boards.4chan.org/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...
    var Names = ['Wizard','Professional ShitPoster','Hiding In The Closet','A White Guy','Redpilled','A Black Guy','Faggot','Grill','Full Time Neet','Lurker','Jewd','Chad','Stacy','Basement Dweller','1337_H@x0r','Underage','EdgeLord','NORMIE','Nazi','Pesant','FAG','Suicidal','Weeb','I <3 Hentai','Woke','FBI','Mod In Disguise','Not A Cop'];
    var ValidNameColors = ['#ff66ff','#ff3300','#b3ffb3','#669999','#3399ff'];
    var HTMLNames = document.getElementsByClassName('name');
    var HTMLGET = document.getElementsByClassName('postNum desktop');
    var theme = document.getElementById('styleSelector');
    var TModernOn = false;
    var nav = document.getElementsByClassName('navLinks desktop')[0];
    var board = window.location.pathname.match(/\/[^\/]+\//)[0];

    //ToolBar
    //
    function Update(){
        //underline subjects
        //Add NickNames
        function ChangeNames(list){
            for (var i=0;i<HTMLNames.length;i++){
                if (HTMLNames[i].id != 'colored'){
                    HTMLNames[i].style.color = ValidNameColors[Math.floor((Math.random() * ValidNameColors.length) + 0)];
                    HTMLNames[i].id = 'colored';
                }
                if (HTMLNames[i].innerHTML == 'Anonymous'){
                    HTMLNames[i].title = "Username was originally Anonymous";
                    HTMLNames[i].innerHTML = list[Math.floor((Math.random() * list.length) + 0)];
                }
            }
        }
        //
		var nsfwNames = ['Currently Masterbaiting','NSA','Tits man','Ass man','Lurker','Kinky','Embassidor of porn','Porn merchant'];
        switch(board){
            default:
                ChangeNames(Names);
                break;
            case "/b/":
            case "/pol/":
                ChangeNames(Names);
                break;
		    case "/bant/":
				ChangeNames(Names);
                break;
		    case "/aco/":
            case "/r/":
            case "/gif/":
            case "/hr/":
            case "/t/":
            case "/y/":
            case "/d/":
            case "/e/":
            case "/s/":
            case "/hc/":
            case "/h/":
				ChangeNames(nsfwNames);
                break;
        }
        //GetHighlighter
        for (var i2=0;i2<HTMLGET.length;i2++){
            var GET = HTMLGET[i2].childNodes[1].text;
            var Len = GET.length - 1;
            var Dupes = 0;
            for (var l = Len; GET[l] == GET[l - 1]; l--){
                Dupes++;
            }
            if (GET[Len] == GET[Len - 1] & HTMLGET[i2].childNodes[1].id != 'Checked'){
                HTMLGET[i2].childNodes[1].style.backgroundColor = ValidNameColors[Math.floor((Math.random() * ValidNameColors.length) + 0)];
                HTMLGET[i2].childNodes[1].style.color = "black";
                HTMLGET[i2].childNodes[1].id = 'Checked';
                switch(Dupes){
                    default:
                        var saying = "GET ";
                        HTMLGET[i2].childNodes[1].title = saying;
                        HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
                        break;
                    case 1:
                        saying = "Dubs ";
                        HTMLGET[i2].childNodes[1].title = saying;
                        HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
                        break;
                    case 2:
                        saying = "Trips ";
                        HTMLGET[i2].childNodes[1].title = saying;
                        HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
                        break;
                    case 3:
                        saying = "Quads ";
                        HTMLGET[i2].childNodes[1].title = saying;
                        HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
                        break;
                }
            }
        }
        //TestTheme
        if (theme.options[theme.selectedIndex].value == 'Test'){
            //BG
            document.body.style.backgroundColor = '#cccccc';
            document.getElementById('header-bar').style.backgroundColor = '#9BAEC8';
            //Post Form
            document.getElementById('postForm').style.backgroundColor = '#444b5d';
            document.getElementById('postForm').style.border = '3px  solid #282c37';
            document.getElementById('postForm').style.marginLeft = '35%';
            document.getElementById('postForm').style.borderRadius = '4px';
            //
            var PR = document.getElementsByClassName('post reply');
            var OP = document.getElementsByClassName('post op');
            for (i=0;i<PR.length;i++){
                PR[i].style.backgroundColor = '#444b5d';
                PR[i].style.color = '#e6e6e6';
                PR[i].style.border = '3px  solid #282c37';
                PR[i].style.borderRadius = '4px';
                PR[i].style.margin = '14px';
            }
            for (i=0;i<OP.length;i++){
                OP[i].style.backgroundColor = '#444b5d';
                OP[i].style.color = '#e6e6e6';
                OP[i].style.border = '3px  solid #282c37';
                OP[i].style.borderRadius = '4px';
                OP[i].style.margin = '14px';
            }
        }
        //loop
        setTimeout(Update,500);
    }
    function OneTimeUpdate(){
        //add tools
        var toolMenu = document.createElement('div');
        toolMenu.setAttribute("style","background-Color: #5f92ca; top: 50%; position: fixed; zIndex: 99999999; border: 3px  solid #6699ff; padding: 5px; left: 50%; transform: translate(-50%, -50%)");
        toolMenu.style.display = 'none';
        document.body.appendChild(toolMenu);
        //Header
        var TMText = document.createElement('h1');
        TMText.innerHTML = 'Tools Menu';
        toolMenu.appendChild(TMText);
        //Features
        //Highlighter
        var TMText2 = document.createElement('h4');
        TMText2.innerHTML = 'Features Undone';
        toolMenu.appendChild(TMText2);
        var TMAH = document.createElement('div');
        TMAH.id = 'TMHLDiv';
        //exit
        var TMExit = document.createElement('button');
        TMExit.innerHTML = 'Exit';
        toolMenu.appendChild(TMExit);
        TMExit.addEventListener('click',function(){
            toolMenu.style.display = 'none';
        });
        //Add Theme (TEST)
        var TModern = document.createElement('option');
        TModern.value = 'Test';
        TModern.innerHTML = 'Test';
        theme.appendChild(TModern);
        //add some tools
        if(nav !== undefined){
            nav.innerHTML += " [";
            var Settings = document.createElement('a');
            Settings.id = 'SID';
            Settings.innerHTML = 'Tools';
            Settings.style.cursor = 'pointer';
            nav.appendChild(Settings);
            nav.innerHTML += "]";
            document.getElementById('SID').addEventListener("click",function(){
                toolMenu.style.display = 'inline';
            });
        }
        //Add message for board
        var message = document.createElement('div');
        message.className = 'boardSubtitle';
        document.getElementsByClassName("boardBanner")[0].appendChild(message);
        console.log(board);
        var bantMSG = ["anime","Reminder that the animal of /bant/ is the blobfish","/b/ With flags","Death to frogposters",">coke without peanuts"];
        var animeMSG = ["Dubs > Subs","Dubs < Subs","Your waifu is shit"];
        var bMSG = ["NORMIES GET OUT REEEEEE","Not your personal army","Where porn is more common than memes","Dont be a gullible idiot","Home of Anonymous"];
        var nsfwMSG = ['Got some alone time eh ;)','The NSA is gonna love watching this','If you get caught, just blame it on ghosts','Kinky','2d > 3d','2d < 3d','Got a fine taste'];
        var r9kMSG = ['No chads allowed','NORMIES GET OUT REEEEEE','<p style="color:#B5BD67;"> >Feels Bad Man </p>'];
        var travelMSG = ['When you need a destination who are you gonna call ' + board + '!','More likly to get out than most people'];
        switch(board){
            case "/bant/":
                message.innerHTML = bantMSG[Math.floor((Math.random() * bantMSG.length) + 0)];
                break;
            case "/r9k/":
                message.innerHTML = r9kMSG[Math.floor((Math.random() * r9kMSG.length) + 0)];
                break;
            case "/n/":
            case "/o/":
            case "/out/":
                message.innerHTML = travelMSG[Math.floor((Math.random() * travelMSG.length) + 0)];
                break;
            case "/a/":
            case "/c/":
            case "/w/":
            case "/m/":
            case "/cgl/":
            case "/jp/":
            case "/cm/":
                message.innerHTML = animeMSG[Math.floor((Math.random() * animeMSG.length) + 0)];
                break;
            case "/b/":
                message.innerHTML = bMSG[Math.floor((Math.random() * bMSG.length) + 0)];
                document.getElementsByClassName("boardSubtitle")[0].remove();
                break;
            case "/aco/":
            case "/r/":
            case "/gif/":
            case "/hr/":
            case "/t/":
            case "/y/":
            case "/d/":
            case "/e/":
            case "/s/":
            case "/hc/":
            case "/h/":
                message.innerHTML = nsfwMSG[Math.floor((Math.random() * nsfwMSG.length) + 0)];
                break;
            default:
                message.innerHTML = "This Board Doesnt Have Messages Yet!";
        }
    }
    //
    new OneTimeUpdate();
    new Update();
    console.log('Started 4chan+ With No Errors!');
    //EVENTS

    //
})();