דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. אזור המערכת
  3. אופן השימוש בפורום
  4. בעיה | פתרון לאלרגיה

בעיה | פתרון לאלרגיה

מתוזמן נעוץ נעול הועבר אופן השימוש בפורום
20 פוסטים 7 כותבים 110 צפיות 7 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פרוזיפ פרוזי

    עריכה -
    בוצע. 😄

    הכנתי סקריפט ל־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();
        }
    })();
    

    עובד נהדר...

    418ad95d-7ea4-413c-b869-1835f5649321-image.jpeg

    0cf3169b-77da-46d9-904d-5dda5dd2965e-image.jpeg

    kasnikK מנותק
    kasnikK מנותק
    kasnik
    מדריכים
    כתב נערך לאחרונה על ידי
    #4
    פוסט זה נמחק!
    תגובה 1 תגובה אחרונה
    🤦 😂
    3
    • פרוזיפ פרוזי

      עריכה -
      בוצע. 😄

      הכנתי סקריפט ל־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();
          }
      })();
      

      עובד נהדר...

      418ad95d-7ea4-413c-b869-1835f5649321-image.jpeg

      0cf3169b-77da-46d9-904d-5dda5dd2965e-image.jpeg

      אברהם גלסרא מנותק
      אברהם גלסרא מנותק
      אברהם גלסר
      מדריכים
      כתב נערך לאחרונה על ידי אברהם גלסר
      #5
      פוסט זה נמחק!
      kasnikK תגובה 1 תגובה אחרונה
      1
      • אברהם גלסרא אברהם גלסר

        פוסט זה נמחק!

        kasnikK מנותק
        kasnikK מנותק
        kasnik
        מדריכים
        כתב נערך לאחרונה על ידי
        #6
        פוסט זה נמחק!
        אברהם גלסרא תגובה 1 תגובה אחרונה
        0
        • kasnikK kasnik

          פוסט זה נמחק!

          אברהם גלסרא מנותק
          אברהם גלסרא מנותק
          אברהם גלסר
          מדריכים
          כתב נערך לאחרונה על ידי אברהם גלסר
          #7
          פוסט זה נמחק!
          המלאךה תגובה 1 תגובה אחרונה
          🙄
          0
          • אברהם גלסרא אברהם גלסר

            פוסט זה נמחק!

            המלאךה מנותק
            המלאךה מנותק
            המלאך
            כתב נערך לאחרונה על ידי
            #8
            פוסט זה נמחק!
            אברהם גלסרא תגובה 1 תגובה אחרונה
            2
            • המלאךה המלאך

              פוסט זה נמחק!

              אברהם גלסרא מנותק
              אברהם גלסרא מנותק
              אברהם גלסר
              מדריכים
              כתב נערך לאחרונה על ידי
              #9
              פוסט זה נמחק!
              י ה 2 תגובות תגובה אחרונה
              🙏
              0
              • אברהם גלסרא אברהם גלסר

                פוסט זה נמחק!

                י מנותק
                י מנותק
                יונימדיה
                כתב נערך לאחרונה על ידי
                #10
                פוסט זה נמחק!
                אברהם גלסרא תגובה 1 תגובה אחרונה
                0
                • י יונימדיה

                  פוסט זה נמחק!

                  אברהם גלסרא מנותק
                  אברהם גלסרא מנותק
                  אברהם גלסר
                  מדריכים
                  כתב נערך לאחרונה על ידי אברהם גלסר
                  #11
                  פוסט זה נמחק!
                  תגובה 1 תגובה אחרונה
                  0
                  • אברהם גלסרא אברהם גלסר

                    פוסט זה נמחק!

                    ה מחובר
                    ה מחובר
                    הנגבי
                    כתב נערך לאחרונה על ידי
                    #12
                    פוסט זה נמחק!
                    אברהם גלסרא צדיק וטוב לו 0צ 2 תגובות תגובה אחרונה
                    0
                    • ה הנגבי

                      פוסט זה נמחק!

                      אברהם גלסרא מנותק
                      אברהם גלסרא מנותק
                      אברהם גלסר
                      מדריכים
                      כתב נערך לאחרונה על ידי
                      #13
                      פוסט זה נמחק!
                      ה תגובה 1 תגובה אחרונה
                      0
                      • פרוזיפ פרוזי

                        עריכה -
                        בוצע. 😄

                        הכנתי סקריפט ל־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();
                            }
                        })();
                        

                        עובד נהדר...

                        418ad95d-7ea4-413c-b869-1835f5649321-image.jpeg

                        0cf3169b-77da-46d9-904d-5dda5dd2965e-image.jpeg

                        ה מחובר
                        ה מחובר
                        הנגבי
                        כתב נערך לאחרונה על ידי
                        #14
                        פוסט זה נמחק!
                        אברהם גלסרא תגובה 1 תגובה אחרונה
                        0
                        • ה הנגבי

                          פוסט זה נמחק!

                          אברהם גלסרא מנותק
                          אברהם גלסרא מנותק
                          אברהם גלסר
                          מדריכים
                          כתב נערך לאחרונה על ידי
                          #15

                          @הנגבי https://mitmachim.top/topic/78747/מדריך-מדריך-מקיף-לשימוש-וכתיבת-סקריפטים-לתוסף-הפופולארי-tampermonkey

                          תגובה 1 תגובה אחרונה
                          0
                          • אברהם גלסרא אברהם גלסר

                            פוסט זה נמחק!

                            ה מחובר
                            ה מחובר
                            הנגבי
                            כתב נערך לאחרונה על ידי הנגבי
                            #16
                            פוסט זה נמחק!
                            תגובה 1 תגובה אחרונה
                            🤦
                            0
                            • פרוזיפ מחובר
                              פרוזיפ מחובר
                              פרוזי
                              מדריכים עימוד
                              כתב נערך לאחרונה על ידי
                              #17
                              פוסט זה נמחק!
                              ה תגובה 1 תגובה אחרונה
                              0
                              • פרוזיפ פרוזי

                                פוסט זה נמחק!

                                ה מחובר
                                ה מחובר
                                הנגבי
                                כתב נערך לאחרונה על ידי הנגבי
                                #18
                                פוסט זה נמחק!
                                תגובה 1 תגובה אחרונה
                                0
                                • ה הנגבי

                                  פוסט זה נמחק!

                                  צדיק וטוב לו 0צ מנותק
                                  צדיק וטוב לו 0צ מנותק
                                  צדיק וטוב לו 0
                                  כתב נערך לאחרונה על ידי
                                  #19
                                  פוסט זה נמחק!
                                  ה תגובה 1 תגובה אחרונה
                                  🤔
                                  0
                                  • צדיק וטוב לו 0צ צדיק וטוב לו 0

                                    פוסט זה נמחק!

                                    ה מחובר
                                    ה מחובר
                                    הנגבי
                                    כתב נערך לאחרונה על ידי
                                    #20
                                    פוסט זה נמחק!
                                    תגובה 1 תגובה אחרונה
                                    🙏
                                    0
                                    • שניאור שמחש שניאור שמח נעל נושא זה

                                    שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                                    בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                                    הרשמה התחברות

                                    • התחברות

                                    • אין לך חשבון עדיין? הרשמה

                                    • התחברו או הירשמו כדי לחפש.
                                    • פוסט ראשון
                                      פוסט אחרון
                                    0
                                    • חוקי הפורום
                                    • פופולרי
                                    • לא נפתר
                                    • משתמשים
                                    • חיפוש גוגל בפורום
                                    • צור קשר