H.264 optimize, VP9 kapalı, throttling optimize, DOM ve Ambient iyileştirildi, lazy-load yorumlar, ekstra CSS optimizasyonu
目前為
// ==UserScript==
// @name YouTube Performance CPU Optimized v2.4 (hardware acceleration closed)
// @namespace http://tampermonkey.net/
// @version 2.4.0
// @description H.264 optimize, VP9 kapalı, throttling optimize, DOM ve Ambient iyileştirildi, lazy-load yorumlar, ekstra CSS optimizasyonu
// @author Sefa AVAN
// @license MIT
// @match http://*.youtube.com/*
// @match http://youtube.com/*
// @match https://*.youtube.com/*
// @match https://youtube.com/*
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
// ---------- 1) Codec override (AV1 & VP9 kapalı, sadece H.264 açık) ----------
const origCanPlayType = HTMLMediaElement.prototype.canPlayType;
HTMLMediaElement.prototype.canPlayType = function (type) {
if (type && (/codecs="?av01/i.test(type) || /codecs="?vp9/i.test(type))) return '';
return origCanPlayType.call(this, type);
};
if (navigator.mediaCapabilities && navigator.mediaCapabilities.decodingInfo) {
const origDecodingInfo = navigator.mediaCapabilities.decodingInfo.bind(navigator.mediaCapabilities);
navigator.mediaCapabilities.decodingInfo = async (cfg) => {
const ct = cfg?.video?.contentType || '';
if (/codecs="?av01/i.test(ct) || /codecs="?vp9/i.test(ct)) {
return { supported: false, powerEfficient: false, smooth: false };
}
return origDecodingInfo(cfg);
};
}
// ---------- 2) Event throttling (biraz daha sıkı) ----------
function throttleEvents(root = document) {
const throttleMs = 50; // ~20Hz → CPU daha az yük
const last = {};
const types = ['mousemove', 'pointermove', 'scroll', 'resize'];
types.forEach(type => {
root.addEventListener(type, (e) => {
const now = performance.now();
if (last[type] && now - last[type] < throttleMs) {
e.stopImmediatePropagation();
e.stopPropagation();
return;
}
last[type] = now;
}, true);
});
}
// ---------- 3) DOM hafifletme ----------
function slimDOM() {
document.querySelectorAll('ytd-rich-item-renderer,ytd-compact-video-renderer')
.forEach(el => {
if (!el.dataset.cpuOptimized) {
el.dataset.cpuOptimized = '1';
el.style.display = "none";
const observer = new IntersectionObserver((entries, obs) => {
if (entries[0].isIntersecting) {
el.style.display = "";
obs.disconnect();
}
}, { rootMargin: '1000px' });
observer.observe(el);
}
});
}
// ---------- 4) Ambient Mode kapatma ----------
function killAmbient() {
const style = document.createElement('style');
style.textContent = `
.ytp-ambient-light,
.ytp-ambient-mode-enabled,
ytd-watch-flexy[ambient-mode-enabled] .ytp-ambient-light,
ytd-watch-flexy[ambient-mode-enabled] .html5-video-player::before {
display: none !important;
opacity: 0 !important;
visibility: hidden !important;
}
`;
document.documentElement.appendChild(style);
let mo;
const startAmbientObs = () => {
if (mo) return;
const flexy = document.querySelector('ytd-watch-flexy');
if (flexy) {
mo = new MutationObserver(() => {
flexy.removeAttribute('ambient-mode-enabled');
});
mo.observe(flexy, { attributes: true, attributeFilter: ['ambient-mode-enabled'] });
}
};
document.addEventListener('DOMContentLoaded', startAmbientObs);
window.addEventListener('yt-navigate-finish', startAmbientObs);
}
// ---------- 5) Lazy-load yorumlar ----------
function lazyLoadComments() {
const comments = document.querySelector("ytd-comments#comments");
if (!comments) return;
comments.style.contentVisibility = "hidden";
const obs = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
comments.style.contentVisibility = "visible";
obs.disconnect();
}
});
obs.observe(comments);
}
// ---------- 6) Ekstra CSS optimizasyonları (gölge, blur, animasyon) ----------
function killHeavyCSS() {
const style = document.createElement('style');
style.textContent = `
ytd-watch-flexy, ytd-app, #content, #page-manager {
backdrop-filter: none !important;
filter: none !important;
animation: none !important;
transition: none !important;
}
`;
document.documentElement.appendChild(style);
}
// ---------- 7) Apply ----------
const reapply = () => {
throttleEvents();
slimDOM();
killAmbient();
lazyLoadComments();
killHeavyCSS();
};
document.addEventListener('DOMContentLoaded', reapply);
window.addEventListener('yt-navigate-finish', reapply);
})();