GeenStijl & Powned & Dumpert Comment Enhancer

Add features to enhance comments on GeenStijl & Powned & Dumpert & more.

当前为 2024-02-01 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name            GeenStijl & Powned & Dumpert Comment Enhancer
// @namespace       https://github.com/jerone/UserScripts
// @description     Add features to enhance comments on GeenStijl & Powned & Dumpert & more.
// @author          jerone
// @copyright       2014+, jerone (https://github.com/jerone)
// @license         CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
// @license         GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
// @homepage        https://github.com/jerone/UserScripts/tree/master/GeenStijl_Powned_Dumpert_Comment_Enhancer
// @homepageURL     https://github.com/jerone/UserScripts/tree/master/GeenStijl_Powned_Dumpert_Comment_Enhancer
// @supportURL      https://github.com/jerone/UserScripts/issues
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VCYMHWQ7ZMBKW
// @include         http*://*geenstijl.nl/mt/archieven/*
// @include         http*://*geenstijl.tv/*
// @include         http*://*powned.tv/nieuws/*
// @include         http*://*dumpert.nl/mediabase/*
// @include         http*://*daskapital.nl/*
// @include         http*://*glamora.ma/*
// @version         2.0
// @grant           none
// ==/UserScript==

(function() {

	function proxy(fn) {
		return function() {
			var that = this;
			return function(e) {
				var args = that.slice(0);  // clone;
				args.unshift(e);  // prepend event;
				fn.apply(this, args);
			};
		}.call([].slice.call(arguments, 1));
	}

	function wait(condition, next) {
		var loop = window.setInterval(function() {
			if (condition() === true) {
				window.clearInterval(loop);
				next();
			}
		}, 100);
	}

	String.format = function(string) {
		var args = Array.prototype.slice.call(arguments, 1, arguments.length);
		return string.replace(/{(\d+)}/g, function(match, number) {
			return typeof args[number] !== "undefined" ? args[number] : match;
		});
	};

	var replyImgScr = "data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABcSURBVChTjZBbDsAgCATl2PDFzW236RjqI+kmSsBxQS0i+q2GzKzVfBy8oOCj3L03bRIROjNHbQGBgRQx+TgC6ALQEawtGeNpzWNwETjD2xlVrGtp/et7ZpddfgEnfhsfVr//KQAAAABJRU5ErkJgggA=";
	var permaImgScr = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAAK/INwWK6QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMDvo9WkAAABfSURBVChTXY9BEsAgCAP7bMqpL4euDaJ2D0xMzKDXvWFmpSYjzsyIYP4YMQ2y7+rRrlhKh2ci091XDH1DJnPtlgsIetpYsTImmoxHVLuVMsHxaDf7D+tpQr/CAjnu/gJVo8cY6M1GEAAAAABJRU5ErkJggg==";

	var commentsList = document.getElementById("comments");
	if (commentsList) {
		wait(function() {
			return commentsList.querySelectorAll("article .nsb,.comment .nsb").length > 0;
		}, function() {
			Array.forEach(commentsList.querySelectorAll("article,.comment"), function(comment) {
				var footer = comment.querySelector("footer,.footer");

				if (comment.id) {
					var perma = document.createElement("a");
					perma.classList.add("nsb");
					perma.setAttribute("href", String.format("#{0}", comment.id));
					perma.setAttribute("title", String.format("Permalink #{0}", comment.id));
					perma.style.backgroundImage = String.format("url('{0}')", permaImgScr);
					perma.style.backgroundPosition = "center center";
					perma.style.marginRight = "4px";
					if (/https?:\/\/www\.powned\.tv\/nieuws\/.*/.test(location.href)) {  // add missing css;
						perma.style.cursor = "pointer";
						perma.style.cssFloat = "right";
						perma.style.height = perma.style.width = "10px";
					}
					footer.appendChild(perma);
				}

				var textArea = document.getElementById("text");
				if (textArea) {
					var reply = document.createElement("span");
					reply.classList.add("nsb");
					reply.setAttribute("title", "Beantwoorden");
					reply.style.backgroundImage = String.format("url('{0}')", replyImgScr);
					reply.style.backgroundPosition = "center center";
					reply.style.marginRight = "4px";
					if (/https?:\/\/www\.powned\.tv\/nieuws\/.*/.test(location.href)) {  // add missing css;
						reply.style.cursor = "pointer";
						reply.style.cssFloat = "right";
						reply.style.height = reply.style.width = "10px";
					}
					reply.addEventListener("click", proxy(function() {
						textArea.value += String.format("@{0}\n", Array.map(this.childNodes, function(node) {
							return (node.nodeType === 3) ? node.textContent.trim() : "";
						}).join(" ").trim().replace(/\s{2,}/, " ").replace(/\s?\|\s?$/g, ""));
						textArea.focus();
						textArea.scrollIntoView();
					}).bind(footer));
					footer.appendChild(reply);
				}
			});
		});
	}

})();