Kurahen - idHighlight

Podświetla ID

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Kurahen - idHighlight
// @namespace    http://tampermonkey.net/
// @version      10.0
// @description  Podświetla ID
// @author       twoj stary
// @match       *://*.karachan.org/*
// @exclude     http://www.karachan.org/*/src/*
// @exclude     https://www.karachan.org/*/src/*
// @exclude     http://karachan.org/*/src/*
// @exclude     https://karachan.org/*/src/*

// @match       *://kara.8ch.net/*
// @exclude     http://kara.8ch.net/*/src/*
// @exclude     https://kara.8ch.net/*/src/*
// @exclude     http://kara.8ch.net/*/src/*
// @exclude     https://kara.8ch.net/*/src/*

// @grant        twoj stary
// ==/UserScript==

!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;q>a;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u["double"]=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);l>e;)g[e]=e++;for(e=0;l>e;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(g){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{if(j)return i(j.randomBytes(l));var b=new Uint8Array(l);return(k.crypto||k.msCrypto).getRandomValues(b),i(b)}catch(c){var d=k.navigator,e=d&&d.plugins;return[+new Date,k,e,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(t){}}else"function"==typeof define&&define.amd&&define(function(){return c})}([],Math);

$(()=>{
	var useNames = true;
	var idWNawiasie = false;

	var opColor = "#ff8080";
	var names = ["Jan","Stanisław","Andrzej","Józef","Tadeusz","Jerzy","Zbigniew","Krzysztof","Henryk","Ryszard","Kazimierz","Marek","Marian","Piotr","Janusz","Władysław","Adam","Wiesław","Zdzisław","Edward","Mieczysław","Roman","Mirosław","Grzegorz","Czesław","Dariusz","Wojciech","Jacek","Eugeniusz","Tomasz","Stefan","Zygmunt","Leszek","Bogdan","Antoni","Paweł","Franciszek","Sławomir","Waldemar","Jarosław","Robert","Mariusz","Włodzimierz","Michał","Zenon","Bogusław","Witold","Aleksander","Bronisław","Wacław","Bolesław","Ireneusz","Maciej","Artur","Edmund","Marcin","Lech","Karol","Rafał","Arkadiusz","Leon","Sylwester","Lucjan","Julian","Wiktor","Romuald","Bernard","Ludwik","Feliks","Alfred","Alojzy","Przemysław","Cezary","Daniel","Mikołaj","Ignacy","Lesław","Radosław","Konrad","Bogumił","Szczepan","Gerard","Hieronim","Krystian","Leonard","Wincenty","Benedykt","Hubert","Sebastian","Norbert","Adolf","Łukasz","Emil","Teodor","Rudolf","Joachim","Jakub","Walenty","Alfons","Damian","Rajmund","Szymon","Zygfryd","Leopold","Remigiusz","Florian","Konstanty","Augustyn","Albin","Bohdan","Dominik","Gabriel","Teofil","Brunon","Juliusz","Walerian","Bartłomiej","Fryderyk","Eryk","Anatol","Maksymilian","Gustaw","Aleksy","Longin","Bartosz","Wilhelm","Ferdynand","Erwin","Klemens","Lechosław","Ernest","Seweryn","Herbert","Albert","Błażej","Izydor","Dionizy","Edwin","Ginter","Adrian","Mateusz","Walter","Helmut","Bazyli","Marceli","Sergiusz","Bonifacy","Werner","Eligiusz","Wawrzyniec","Kamil","Łucjan","Olgierd","Arnold","Jacenty","Dawid","Ewald","Manfred","Emilian","Klaudiusz","Zbysław","Igor","Benon","Jędrzej","Wit","Hilary","Apolinary","Fabian","Zenobiusz","Horst","Gerhard","Roland","Euzebiusz","Hipolit","Filip","Nikodem","Miron","January","Kajetan","Bazyl","Emanuel","Idzi","Donat","August","Dymitr","Ksawery","Ludomir","Narcyz","Lubomir","Witalis","Roch","Miłosz","Telesfor","Heronim","Ziemowit","Borys","Oskar","Zbyszko","Krystyn","Zbyszek","Cyryl","Gracjan","Patryk","Reinhold","Eliasz","Ewaryst","Felicjan","Rufin","Bruno","Herman","Beniamin","Kryspin","Rajnold","Apoloniusz","Engelbert","Cyprian","Walery","Medard","Gwidon","Celestyn","Jaromir","Tytus","Wiaczesław","Kornel","Wieńczysław","Maurycy","Oswald","Jeremi","Kurt","Ingrid","Klaus","Damazy","Eustachy","Otton","Korneliusz","Cezariusz","Tymoteusz","Justyn","Otto","Janisław","Anastazy","Ambroży","Polikarp","Heliodor","Jurek","Saturnin","Dieter","Winicjusz","Wolfgang","Gotfryd","Modest","Margot","Sylweriusz","Marcel","Radzisław","Bogusz","Witosław","Leonid","Serafin","Reinhard","Diter","Dyonizy","Wenancjusz","Olaf","Wasyl","Anatoliusz","Januariusz","Kacper","Oleg","Rościsław","Sławoj","Erazm","Dobiesław","Jurand","Karin","Aureliusz","Wilibald","Heinz","Rajnard","Dobrosław","Erhard","Radomir","Egon","Harald","Eustachiusz","Kordian","Napoleon","Roger","Onufry","Wendelin","Włodzisław","Eugieniusz","Wirgiliusz","Jeremiasz","Anzelm","Ruth","Lucjusz","Anatoli","Inez","Iwo","Irmgard","Sławek","Sylwin","Wieczysław","Wielisław","Zefiryn","Sylwiusz","Wawrzyn","Leoncjusz","Christian","Renard","Bertold","Faustyn","Orest","Patrycjusz","Wenanty","Gerwazy","Lubow","Reginald","Ronald","Urban","Dezyderiusz","Hans","Jozef","Lilli","Peter","Arseniusz","Georg","Harry","Józefat","Paulin","Bożydar","Chrystian","Donald","Ildefons","Ingeborg","Kalikst","Genadiusz","Lotar","Rajnhold","Berthold","Erich","Hugon","Mścisław","Paul","Dolores","Michael","Olech","Ładysław","Maks","Szczęsny","Kasper","Maksym","Milan","Renisław","Zbisław","Edgar","Melchior","Nelly","Oktawian","Sobiesław","Willi","Dietmar","Rut","Martin","Rene","Borysław","Richard","Darosław","Leonidas","Świętosław","Zachariasz","Armand","Astrid","Baltazar","Mieszko","Zacheusz","Lili","Miłosław","Rainhold","Waltraud","Bernardyn","Jordan","Jurgen","Waltraut","Beatrycze","Jarek","Jarogniew","Hannelore","Honorat","Inocenty","Lutosław","Makary","Nestor","Ditmar","Gabryel","Irosław","Rajner","Dobromir","Gunter","Josef","Lothar","Wadim","Wirginiusz","Ludwig","Rainer","Anneliese","Gilbert","Tomisław","Aleks","Ali","Kwiryn","Samuel","Światosław","Witaliusz","Aldon","Emeryk","Ernestyn","Franz","Oktawiusz","Rafael","Rajnhard","Renald","Symforian","Ariusz","Eberhard","Metody","Rosemarie","Wenecjusz","Witali","Algiment","Annemarie","Ariel","Armin","Carmen","Darek","Elisabeth","Elli","Lew","Nelli","Otmar","Pankracy","Ulrich","Olesław","Pius","Sabin","Władimir","Alwin","Andreas","Deonizy","Ernst","Jaremi","John","Olek","Siergiej","Sławian","Teobald","Ulryk","Żelisław","Doris","Edith","Eweryst","Ines","Lambert","Nel","Sigrid","Sławomierz","Tymon","Willibald","Andre","Dezydery","Edeltraud","Edeltraut","Ekspedyt","Gerd","Godzisław","Gothard","Hugo","Johann","Mamert","Marcjan","Odon","Serwacy","Stanislaw","Teodozjusz","Thomas","Amadeusz","Günter","Harold","Jacqueline","Jeremiusz","Radomił","Siegfried","Arno","Cezar","Danek","Felicytas","Fidelis","Gedymin","Georges","Kleofas"];
	var previevMode = false;

	var boardsWithId = ['*', 'z', 'b', 'элита'];
	if(boardsWithId.indexOf(board) == -1)return;

	$("body").click((e)=>{
		$(".post").css("opacity", "1");
		previevMode = false;
	});
		
	function escapeJqSel(str)  {
	    if (str)
	        return str.replace( /(:|\.|\/|\[|\]|,|=|@)/g, "\\$1" );   

	    return str;
	}

	function update(threadId){
		if($("#"+threadId+" .opContainer .posteruid").length){
			try{
				var opId = $("#"+threadId+" .opContainer .posteruid")[0].innerHTML.split("ID: ")[1].split(")")[0];
			} catch(err){
				var opId = $("#"+threadId+" .opContainer .posteruid")[0].id.split("uid_")[1];
			}
		} else {
			var opId = "adminSmiec";
		}

		var stats = [];
		$("#"+threadId+" .posteruid").each((i, el)=>{
			try{
				var id = el.innerHTML.split("ID: ")[1].split(")")[0];
			}catch(err){
				var id = el.title;
			}
			if(stats[id] == undefined){
				stats[id] = {"occurs": 0};
			}
			stats[id].occurs+=1;
		});

		$("#"+threadId+" .posteruid").each((i, el)=>{
			try{
				var id = el.innerHTML.split("ID: ")[1].split(")")[0];
			}catch(err){
				var id = el.title;
			}

			Math.seedrandom(id+"_"+threadId);
			var color = "hsl("+Math.floor(Math.random()*37)*10+", 90%, 61%)";

			var name = names[Math.floor(Math.random()*names.length)];

			var boxCss = {
				"padding": "2px 6px",
				"margin-right": "4px",
				"font-size": "11px",
				"cursor": "pointer",
				"background-color": id == opId ? opColor : color, 
				"border-radius": "6px",
				"color": "white",
				"text-shadow": "0px 0px 5px rgba(0, 0, 0, 1)",
				"font-weight": "bold" 
			};
			if(idWNawiasie)
				name += ' (' + id + ')';
			$(el).css(boxCss).html(id == opId ? "OP nitki" : useNames ? name : id);
			boxCss.cursor = "auto";
			if(inThread){
				if(!$(el).parent().find(".samefagCLabel").length)
					$("<span class='samefagCLabel'></span>").css(boxCss).text(stats[id].occurs).insertAfter($(el));
				else{
					$(el).parent().find(".samefagCLabel").text(stats[id].occurs);
				}
			}
			el.dataset.colored = "";
			el.id = "uid_"+id;
			el.title = id;
			$(el).click((e)=>{
				e.stopPropagation();
				var id = e.target.id;
				if(previevMode)return;
				$(".post:not(:has(#" + escapeJqSel(id) + "))").css("opacity", "0.3");
				previevMode = true;
			});
		});

		if(!inThread)return;
		var threadPostInfo = $(".thread#"+threadId+" .postInfo").first();
		if(!threadPostInfo.find(".threadStats").length){
			threadPostInfo.append("<span class='threadStats'></span>");
		}
		var uids = Object.keys(stats).length;
		var repls = $(".thread .postContainer").length;

		threadPostInfo.find(".threadStats").html(" [ "+repls+" replies / "+uids+" uniq IDs / "+ (repls/uids).toFixed(2) + " <a href=\"javascript:alert(\'samefag ratio, replies divided by uniq ids\')\">SFR</a> ]");
	}

	setInterval(()=>{
		$(".thread:has(.posteruid:not([data-colored]))").each((i, el)=>{
			update(el.id);
		});
	}, 1000);
});