Mebuki zorome

めぶきちゃんのスレッド内のマイクロ秒に対してゾロ目の時に装飾します

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         Mebuki zorome
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  めぶきちゃんのスレッド内のマイクロ秒に対してゾロ目の時に装飾します
// @author       You
// @match        https://mebuki.moe/app/t/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=mebuki.moe
// @license      MIT
// @grant        GM_addStyle
// ==/UserScript==

(function() {
	'use strict';

	// Your code here...
	let css = '';
	css += '.xxxzorome2 { text-decoration: underline; }';
	css += '.xxxzorome3 { text-decoration: underline; text-decoration-style: double;}';
	css += '.xxxzorome4 { text-decoration: underline; text-decoration-style: wavy;}';
	GM_addStyle(css);

	setTimeout(() => {
		new Promise((resolve, reject) => {
			const target = document.querySelector('.thread-messages');
			const checkZorome = (target) => {
				target.querySelectorAll('span[class*="text-xs"][class*="text-foreground/60"]').forEach((e) => {
					const s = e.textContent.replace('.','');
					const result = s.match(/((\d)\2+)$/);
					if (result) {
						const zorolen = result[0].length;
						e.classList.add(`xxxzorome${zorolen}`);
						//console.log(e);
					}
				});
			}
			if (target) {
				checkZorome(target);
				const observer = new MutationObserver((mutations) => {
					mutations.forEach((mutation) => {
						//console.log(mutation);
						mutation.addedNodes.forEach((addedNode) => {
							if (!(addedNode instanceof HTMLElement)) return;
							//console.log(addedNode);
							checkZorome(addedNode);
						});
					});
				});
				observer.observe(target, { childList: true, subtree: true});
			}
		});
	}, 3*1000);
})();