בעיה | פתרון לאלרגיה
-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
עריכה -
בוצע.
הכנתי סקריפט ל־Tampermonkey שמרפא את האלרגיה לשורש ט.ר.פ.
מה הוא עושה?
- מחליף אוטומטית כל מילה שקשורה לשורש ט.ר.פ. (כולל הטיות וכתיבים יצירתיים) בביטוי אקראי ומשעשע.
- לכל החלפה מוצמד Tooltip שמסביר שהמילה "צונזרה עקב אלרגיה חריפה לשורש ט.ר.פ."
- מוסיף בפינת המסך מד אלרגיה שסופר כמה מופעים "נגועים" נמצאו בעמוד ומציג את רמת הזיהום.
- עובד גם על תוכן חדש שנטען בפורום, בלי צורך לרענן את הדף.
- כולל אפשרות להפעיל ולכבות את הסקריפט בלחיצה אחת.
מצרף את הקוד למי שרוצה לנסות.

// ==UserScript== // @name מחלץ אלרגיה לשורש ט.ר.פ - מתמחים טופ // @namespace https://mitmachim.top/ // @version 1.0 // @description מחליף מילים משורש ט.ר.פ בתחליפים מצחיקים + מד אלרגיה צף // @author Frozi // @match https://mitmachim.top/* // @match https://www.mitmachim.top/* // @grant none // ==/UserScript== (function () { 'use strict'; const STORAGE_KEY = 't-r-f-allergy-enabled'; let enabled = localStorage.getItem(STORAGE_KEY) !== 'false'; let totalReplaced = 0; const replacements = [ 'חריג בנוף 🌵', 'מוגזם ברמות 📈', 'בלתי נתפס 🤯', 'רמת התלהבות לא מאושרת', 'דורש אישור מהנדס', 'חורג מהתקן 🚨', 'התקף התלהבות', 'מקרה קשה של וואו', 'לא עבר ועדת ביקורת', 'מחוץ לסקאלה', 'טעון בדיקה חוזרת', 'חשוד כהתלהבות יתר', 'משרד הבריאות לא מאשר', '404: השפיות לא נמצאה', 'נשלח לבידוד לשוני', 'התפרצות רגשית מבוקרת', 'נמצא חיובי לט.ר.פ', 'אירוע חריג במרחב הפורומי', 'נדרש חיטוי טקסטואלי', 'תופעה שאינה מוסברת מדעית', 'המערכת סימנה כאובר', 'תסמין מתקדם של התלהבות', 'לא לשימוש לפני קפה', 'הוחלף מטעמי רגישות הציבור', 'מילה שנגנזה בארכיון' ]; const forbiddenRegex = /[\u0590-\u05FF]*ט+[\u0590-\u05FF]*ר+[\u0590-\u05FF]*[פף]+[\u0590-\u05FF]*/g; const skipTags = new Set([ 'SCRIPT', 'STYLE', 'TEXTAREA', 'INPUT', 'CODE', 'PRE', 'NOSCRIPT', 'SELECT', 'OPTION' ]); function randomReplacement() { return replacements[Math.floor(Math.random() * replacements.length)]; } function shouldSkipNode(node) { const parent = node.parentElement; if (!parent) return true; if (skipTags.has(parent.tagName)) return true; if (parent.closest('.trf-cleaned-word')) return true; if (parent.isContentEditable) return true; return false; } function processTextNode(node) { if (!enabled || shouldSkipNode(node)) return; const text = node.nodeValue; if (!forbiddenRegex.test(text)) return; forbiddenRegex.lastIndex = 0; const fragment = document.createDocumentFragment(); let lastIndex = 0; let count = 0; text.replace(forbiddenRegex, (match, offset) => { fragment.appendChild(document.createTextNode(text.slice(lastIndex, offset))); const span = document.createElement('span'); span.className = 'trf-cleaned-word'; span.textContent = randomReplacement(); span.title = `המילה המקורית "${match}" צונזרה עקב אלרגיה חריפה לשורש ט.ר.פ.`; span.dataset.original = match; fragment.appendChild(span); lastIndex = offset + match.length; count++; }); fragment.appendChild(document.createTextNode(text.slice(lastIndex))); if (count > 0) { node.parentNode.replaceChild(fragment, node); totalReplaced += count; updateWidget(); } } function scanPage(root = document.body) { if (!enabled || !root) return; const walker = document.createTreeWalker( root, NodeFilter.SHOW_TEXT, { acceptNode(node) { if (shouldSkipNode(node)) return NodeFilter.FILTER_REJECT; if (!node.nodeValue.trim()) return NodeFilter.FILTER_REJECT; return NodeFilter.FILTER_ACCEPT; } } ); const nodes = []; while (walker.nextNode()) { nodes.push(walker.currentNode); } nodes.forEach(processTextNode); } function getAllergyStatus() { if (totalReplaced <= 2) { return { level: '🟢', text: 'האוויר כמעט נקי', percent: 18 }; } if (totalReplaced <= 5) { return { level: '🟡', text: 'רמת ט.ר.פ בינונית', percent: 43 }; } if (totalReplaced <= 10) { return { level: '🟠', text: 'מומלץ להרכיב מסכה', percent: 71 }; } return { level: '🔴', text: 'התפרצות ט.ר.פ חמורה. העמוד עבר חיטוי.', percent: 96 }; } function createWidget() { const style = document.createElement('style'); style.textContent = ` #trf-allergy-widget { position: fixed; left: 16px; bottom: 16px; z-index: 999999; width: 245px; direction: rtl; font-family: Arial, sans-serif; background: #111827; color: #fff; border-radius: 14px; box-shadow: 0 8px 24px rgba(0,0,0,.25); padding: 12px 14px; font-size: 13px; line-height: 1.5; border: 1px solid rgba(255,255,255,.12); } #trf-allergy-widget .trf-title { font-weight: bold; font-size: 14px; margin-bottom: 6px; } #trf-allergy-widget .trf-bar { height: 8px; background: rgba(255,255,255,.18); border-radius: 999px; overflow: hidden; margin: 7px 0; } #trf-allergy-widget .trf-fill { height: 100%; width: 0%; background: linear-gradient(90deg, #22c55e, #facc15, #f97316, #ef4444); transition: width .3s ease; } #trf-allergy-widget button { margin-top: 8px; width: 100%; border: 0; border-radius: 9px; padding: 6px 8px; cursor: pointer; font-weight: bold; background: #f3f4f6; color: #111827; } .trf-cleaned-word { display: inline-block; padding: 1px 5px; margin: 0 1px; border-radius: 7px; background: #fff3cd; color: #7a4b00; border: 1px dashed #d39e00; font-weight: 600; cursor: help; } `; document.head.appendChild(style); const widget = document.createElement('div'); widget.id = 'trf-allergy-widget'; widget.innerHTML = ` <div class="trf-title">🧪 מד אלרגיה לט.ר.פ</div> <div id="trf-status">סורק את העמוד...</div> <div class="trf-bar"><div class="trf-fill" id="trf-fill"></div></div> <div id="trf-counter">זוהו: 0 מופעים</div> <button id="trf-toggle"></button> `; document.body.appendChild(widget); document.getElementById('trf-toggle').addEventListener('click', () => { enabled = !enabled; localStorage.setItem(STORAGE_KEY, enabled ? 'true' : 'false'); updateWidget(); if (enabled) { scanPage(); } }); updateWidget(); } function updateWidget() { const statusEl = document.getElementById('trf-status'); const counterEl = document.getElementById('trf-counter'); const fillEl = document.getElementById('trf-fill'); const toggleEl = document.getElementById('trf-toggle'); if (!statusEl || !counterEl || !fillEl || !toggleEl) return; const status = getAllergyStatus(); statusEl.textContent = enabled ? `${status.level} ${status.text}` : '⚪ המחלץ כבוי כרגע'; counterEl.textContent = `זוהו וחוטאו: ${totalReplaced} מופעים`; fillEl.style.width = enabled ? `${status.percent}%` : '0%'; toggleEl.textContent = enabled ? 'כבה את המחלץ' : 'הפעל את המחלץ'; } function observeDynamicContent() { const observer = new MutationObserver((mutations) => { if (!enabled) return; for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (node.nodeType === Node.TEXT_NODE) { processTextNode(node); } else if (node.nodeType === Node.ELEMENT_NODE) { scanPage(node); } } } }); observer.observe(document.body, { childList: true, subtree: true }); } function init() { createWidget(); scanPage(); observeDynamicContent(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();עובד נהדר...


-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
פוסט זה נמחק!
-
ש שניאור שמח נעל נושא זה
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות