Discord Web Ultra Performance Optimizer

Discord web için tüm ağır DOM, animasyon ve eventleri optimize ederek CPU ve RAM kullanımını minimize eder

// ==UserScript==
// @name         Discord Web Ultra Performance Optimizer
// @namespace    http://tampermonkey.net/
// @version      2.4.0
// @description  Discord web için tüm ağır DOM, animasyon ve eventleri optimize ederek CPU ve RAM kullanımını minimize eder
// @license      MIT
// @author       Sefa AVAN
// @match        https://discord.com/*
// @run-at       document-start
// ==/UserScript==

(function(){
    'use strict';

    // ---------- 1) Animasyon, transition ve GPU efektlerini kapatma ----------
    const style=document.createElement('style');
    style.textContent=`
        * { transition:none !important; animation:none !important; }
        * { filter:none !important; backdrop-filter:none !important; }
        img.emoji { image-rendering: pixelated; }
    `;
    document.head.appendChild(style);

    // ---------- 2) Event throttling ----------
    const throttleMs=50,last={};
    ['mousemove','pointermove','scroll','resize'].forEach(type=>{
        window.addEventListener(type,e=>{
            const now=performance.now();
            if(last[type] && now-last[type]<throttleMs){ e.stopImmediatePropagation(); e.stopPropagation(); return; }
            last[type]=now;
        },true);
    });

    // ---------- 3) Lazy-load ağır DOM öğeleri ----------
    function lazyLoadElements(selector){
        document.querySelectorAll(selector).forEach(el=>{
            if(!el.dataset.lazy){
                el.dataset.lazy='1';
                el.style.display='none';
                const obs=new IntersectionObserver(entries=>{
                    if(entries[0].isIntersecting){ el.style.display=''; obs.disconnect(); }
                },{rootMargin:'2000px'});
                obs.observe(el);
            }
        });
    }
    function applyLazyLoad(){ lazyLoadElements('.emoji-picker,.gift-preview,.activity-feed'); }

    // ---------- 4) Video ve GIF hover play ----------
    function setupHoverPlay(media){
        if(!media.dataset.hoverSetup){
            media.dataset.hoverSetup='1';
            media.pause?.();
            media.muted=true;
            media.controls=true;
            media.addEventListener('mouseenter', ()=> media.play?.().catch(()=>{}));
            media.addEventListener('mouseleave', ()=> media.pause?.());
        }
    }

    function applyHoverPlay(){
        document.querySelectorAll('video,img[src$=".gif"]').forEach(setupHoverPlay);
    }

    // ---------- 5) MutationObserver ile yeni medya eklemelerini yakala ----------
    const mediaObserver=new MutationObserver(mutations=>{
        mutations.forEach(mutation=>{
            mutation.addedNodes.forEach(node=>{
                if(node.tagName==='VIDEO'||node.tagName==='IMG'){ setupHoverPlay(node); }
                else if(node.querySelectorAll) node.querySelectorAll('video,img').forEach(setupHoverPlay);
            });
        });
    });
    mediaObserver.observe(document.body,{childList:true,subtree:true});

    // ---------- 6) Smart codec (CPU/GPU optimizasyonu) ----------
    (function smartCodec(){
        const MC=navigator.mediaCapabilities;
        if(!MC||typeof MC.decodingInfo!=='function') return;
        const origDecodingInfo=MC.decodingInfo.bind(MC);
        const origCanPlayType=HTMLMediaElement.prototype.canPlayType;

        Promise.allSettled([
            origDecodingInfo({type:'media-source',video:{contentType:'video/mp4; codecs="av01.0.05M.08"',width:1920,height:1080,framerate:30,bitrate:8_000_000}}),
            origDecodingInfo({type:'media-source',video:{contentType:'video/webm; codecs="vp09.00.51.08"',width:1920,height:1080,framerate:30,bitrate:8_000_000}})
        ]).then(([av1Res,vp9Res])=>{
            const av1Inefficient=av1Res.status==='fulfilled' && av1Res.value?.supported && av1Res.value?.powerEfficient===false;
            const vp9Inefficient=vp9Res.status==='fulfilled' && vp9Res.value?.supported && vp9Res.value?.powerEfficient===false;

            if(av1Inefficient||vp9Inefficient){
                navigator.mediaCapabilities.decodingInfo=async cfg=>{
                    const ct=cfg?.video?.contentType||'';
                    if(av1Inefficient&&/codecs="?av01/i.test(ct)) return {supported:false,powerEfficient:false,smooth:false};
                    if(vp9Inefficient&&/codecs="?vp0?9/i.test(ct)) return {supported:false,powerEfficient:false,smooth:false};
                    return origDecodingInfo(cfg);
                };
                HTMLMediaElement.prototype.canPlayType=function(type){
                    if(type&&av1Inefficient&&/codecs="?av01/i.test(type)) return '';
                    if(type&&vp9Inefficient&&/codecs="?vp0?9/i.test(type)) return '';
                    return origCanPlayType.call(this,type);
                };
            }
        }).catch(()=>{});
    })();

    // ---------- 7) Scroll, resize ve SPA navigasyonlarında tekrar uygula ----------
    function reapplyAll(){
        applyLazyLoad();
        applyHoverPlay();
    }

    document.addEventListener('DOMContentLoaded',reapplyAll);
    window.addEventListener('yt-navigate-finish',reapplyAll);
    window.addEventListener('popstate',reapplyAll);
    window.addEventListener('scroll',applyHoverPlay,true);
    window.addEventListener('resize',applyHoverPlay,true);

})();
长期地址
遇到问题?请前往 GitHub 提 Issues。