您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Spam those douchebags
当前为
// ==UserScript== // @name Fxp Useful Scripts // @namespace http://tampermonkey.net/ // @version 1.3.3 // @description Spam those douchebags // @author MrTarnegol // @match https://www.fxp.co.il/* // @grant none // ==/UserScript== (function() { const styles = ` .tarnegol-buttons-container { box-shadow: 0 0 13px 5px rgba(0, 0, 0, 0.5); position: fixed; bottom: 0; left: 0; display: flex; flex-direction: column; } .tarnegol-buttons-btn { background-color: #4e4e4e; font-family: system-ui; color: white; padding: 15px 40px; font-size: 18px; width: 100%; } .tarnegol-buttons-btn-parent { background-color: #4e4e4e; width: 100%; } ` const styleSheet = document.createElement("style") styleSheet.type = "text/css" styleSheet.innerText = styles document.head.appendChild(styleSheet) })(); 'use strict'; const MIN_SIZE = window.MIN_SIZE = 3; const MAX_SIZE = window.MAX_SIZE = 5; function componentToHex(c) { const hex = c.toString(16); return `0${hex}`.slice(-2); } function rgbToHex(value) { const rHex = componentToHex(value.r); const gHex = componentToHex(value.g); const bHex = componentToHex(value.b); return `${rHex}${gHex}${bHex}`; } function hexToRgb(hex) { const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); const r = parseInt(result[1], 16); const g = parseInt(result[2], 16); const b = parseInt(result[3], 16); return { r, g, b }; } function mulRGB(v, s) { const r = Math.floor(v.r * s); const g = Math.floor(v.g * s); const b = Math.floor(v.b * s); return { r, g, b }; } function addRGB(a, b) { return { r: a.r + b.r, g: a.g + b.g, b: a.b + b.b }; } function mixRGB(a, b, v) { const aMul = mulRGB(a, v); const bMul = mulRGB(b, 1 - v); return addRGB(aMul, bMul); } function gradient(a, b, times = 5) { const colours = []; const delta = 1 / (times - 1); for (let i = 0; i < times; i++) { colours.push(mixRGB(a, b, delta * i)); } return colours; } const getText = window.getText = () => { const selector = '.cke_editor iframe' const element = $(selector)[0]; if (element !== undefined) { const doc = element.contentWindow.document; return doc.getElementsByClassName("forum")[0].innerText; } return ''; } const setText = window.setText = (text) => { const selector = '.cke_editor iframe' const element = $(selector)[0]; if (element !== undefined) { var doc = element.contentWindow.document; doc.getElementsByClassName("forum")[0].innerText = text; return true; } return false; } const randomSize = window.randomSize = () => { const SIZES = MAX_SIZE - MIN_SIZE + 1; return Math.floor(Math.random() * SIZES) + MIN_SIZE; } const isBlank = (letter) => { return letter == ' ' || letter == ' '; } const letterWithSize = window.letterWithSize = (letter, size = randomSize()) => { return !isBlank(letter) ? `[SIZE=${size}]${letter}[/SIZE]` : ' '; } const scribbleText = window.scribbleText = (text) => { let isText = true; return text.split('').reduce((a, b) => { if (b == ']') { isText = true; return a + b; }; if (b == '[') { isText = false; return a + b; }; return isText ? a + letterWithSize(b) : a + b; }, ''); } const doScribble = window.scribble = () => { console.log('MrTarnegol scribbling begin!'); const text = getText(); const scribbled = scribbleText(text); setText(scribbled); CKEDITOR.tools.callFunction(5, this); } const addColourTag = window.addColourTag = (text, colour) => { return !isBlank(text) ? `[COLOR=#${colour}]${text}[/COLOR]` : ' '; } const addColourTagRGB = window.addColourTagRGB = (text, colour) => { return addColourTag(text, rgbToHex(colour)); } const gradientColours = { start: hexToRgb(localStorage.getItem('tarnegol.gradient.start')), end: hexToRgb(localStorage.getItem('tarnegol.gradient.end')), } const gradientText = window.gradientText = (text) => { const colours = gradient(gradientColours.start, gradientColours.end, getText().length); let isText = true; return text.split('').reduce((a, b, i) => { if (b == ']') { isText = true; return a + b; }; if (b == '[') { isText = false; return a + b; }; const colour = colours[i % colours.length]; return isText ? a + addColourTagRGB(b, colour) : a + b; }, ''); } const doGradient = window.gradient = () => { console.log('MrTarnegol gradient begin!'); const text = getText(); const gradiented = gradientText(text); setText(gradiented); CKEDITOR.tools.callFunction(5, this); } const createButtonsDiv = () => { const div = document.createElement('div'); div.className = 'tarnegol-buttons-container'; return div; } const button = (innerText, onclick) => { const button = document.createElement('button'); button.className = 'tarnegol-buttons-btn'; button.innerText = innerText; button.onclick = onclick; return button; } const colourInput = (value) => { const input = document.createElement('input'); input.type = 'color'; input.value = value; return input; } const scribbleButton = () => { const div = document.createElement('div'); div.className = 'tarnegol-buttons-btn-parent'; div.appendChild(button('ערבל טקסט', doScribble)); return div; } const gradientButton = () => { const div = document.createElement('div'); div.className = 'tarnegol-buttons-btn-parent'; div.appendChild(button('קשת בענן', doGradient)); const start = colourInput(localStorage.getItem('tarnegol.gradient.start')); const end = colourInput(localStorage.getItem('tarnegol.gradient.end')); div.appendChild(start); div.appendChild(end); start.addEventListener('input', e => { gradientColours.start = hexToRgb(start.value); localStorage.setItem('tarnegol.gradient.start', start.value); }) end.addEventListener('input', e => { gradientColours.end = hexToRgb(end.value); localStorage.setItem('tarnegol.gradient.end', end.value); }) return div; } const start = () => { if (window.top == window.self) { const div = createButtonsDiv(); document.body.appendChild(div); const scribble = scribbleButton(); div.appendChild(scribble); const gradient = gradientButton(); div.appendChild(gradient); } } start();