您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This script optimizes YouTube's performance by modifying configs, shorts redirect and much more!
当前为
- // ==UserScript==
- // @name YouTube Web Tweaks
- // @version 2.6.0
- // @description This script optimizes YouTube's performance by modifying configs, shorts redirect and much more!
- // @author Magma_Craft
- // @license MIT
- // @match *://www.youtube.com/*
- // @namespace https://greasyfork.org/en/users/933798
- // @icon https://www.youtube.com/favicon.ico
- // @unwrap
- // @run-at document-start
- // @grant none
- // ==/UserScript==
- // Modifiying yt.config flags to optimize loading times and disables animations
- (function() {
- window['yt'] = window['yt'] || {};
- yt['config_'] = yt.config_ || {};
- yt.config_['EXPERIMENT_FLAGS'] = yt.config_.EXPERIMENT_FLAGS || {};
- var iv = setInterval(function() {
- yt.config_.IS_TABLET = true;
- yt.config_.DISABLE_YT_IMG_DELAY_LOADING = true;
- yt.config_.EXPERIMENT_FLAGS.polymer_verifiy_app_state = false;
- yt.config_.EXPERIMENT_FLAGS.warm_load_nav_start_web = false;
- yt.config_.EXPERIMENT_FLAGS.kevlar_player_response_swf_config_wrapper_killswitch = false;
- yt.config_.EXPERIMENT_FLAGS.desktop_delay_player_resizing = false;
- yt.config_.EXPERIMENT_FLAGS.desktop_player_touch_gestures = false;
- yt.config_.EXPERIMENT_FLAGS.web_animated_like = false;
- yt.config_.EXPERIMENT_FLAGS.web_animated_like_lazy_load = false;
- yt.config_.EXPERIMENT_FLAGS.render_unicode_emojis_as_small_images = true;
- yt.config_.EXPERIMENT_FLAGS.kevlar_refresh_on_theme_change = false;
- yt.config_.EXPERIMENT_FLAGS.kevlar_watch_cinematics = false;
- yt.config_.EXPERIMENT_FLAGS.kevlar_watch_comments_panel_button = true;
- yt.config_.EXPERIMENT_FLAGS.kevlar_watch_hide_comments_while_panel_open = true;
- yt.config_.EXPERIMENT_FLAGS.kevlar_watch_comments_ep_disable_theater = false;
- }, 1);
- var to = setTimeout(function() {
- clearInterval(iv);
- }, 1000)
- })();
- // Redirect shorts to watch page (Anti-Shorts script is required for faster experience)
- var oldHref = document.location.href;
- if (window.location.href.indexOf('youtube.com/shorts') > -1) {
- window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
- }
- window.onload = function() {
- var bodyList = document.querySelector("body")
- var observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- if (oldHref != document.location.href) {
- oldHref = document.location.href;
- console.log('location changed!');
- if (window.location.href.indexOf('youtube.com/shorts') > -1) {
- window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
- }
- }
- });
- });
- var config = {
- childList: true,
- subtree: true
- };
- observer.observe(bodyList, config);
- };
- // CSS adjustments and other tweaks to apply (including removal of ads)
- (function() {
- ApplyCSS();
- function ApplyCSS() {
- var styles = document.createElement("style");
- styles.innerHTML=`
- /* Remove 'Learning, Fashion and Podcasts' tab from the sidebar menu */
- ytd-guide-entry-renderer > a[href*="/channel/UCrpQ4p1Ql_hG8rKXIKM1MOQ"] {
- display: none !important;
- }
- ytd-guide-entry-renderer > a[href*="/channel/UCtFRv9O2AHqOZjjynzrv-xg"] {
- display: none !important;
- }
- #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Podcasts"] {
- display: none !important;
- }
- /* Remove 'YouTube Kids' and 'YouTube TV' tabs from the 'More from YouTube' sidebar menu */
- #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="YouTube Kids"] {
- display: none !important;
- }
- #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="YouTube TV"] {
- display: none !important;
- }
- /* Remove 'YouTube Music' tab if users have YouTube Premium */
- #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="YouTube Music"] {
- display: none !important;
- }
- #endpoint.yt-simple-endpoint.ytd-mini-guide-entry-renderer.style-scope[title="YouTube Music"] {
- display: none !important;
- }
- /* Remove ads and annoyances */
- #player-ads,
- .adDisplay,
- .ad-container,
- .ytd-display-ad-renderer,
- .video-ads,
- #masthead-ad {
- display: none !important;
- }
- .ytd-mealbar-promo-renderer {
- display: none !important
- }`
- document.head.appendChild(styles);
- }
- })();
- let video
- const observer = new MutationObserver(mutations => {
- for(const mutation of mutations) {
- for(const addedNode of mutation.addedNodes) {
- if(addedNode.className && (addedNode.classList.contains("ytp-ad-skip-button-slot") || addedNode.classList.contains("ytp-ad-overlay-close-button"))) {
- console.log("ytp-ad")
- addedNode.click()
- } else if(addedNode.className && addedNode.classList.contains("ad-showing")) {
- console.log("ad-showing")
- if(!isNaN(video.duration)) {
- video.play()
- video.currentTime = video.duration
- }
- } else if(addedNode.tagName === "VIDEO" && addedNode.classList.contains("html5-main-video")) {
- console.log("video")
- video = addedNode
- video.addEventListener("durationupdate", () => {
- console.log("durationupdate")
- video.play()
- video.currentTime = video.duration
- })
- video.addEventListener("timeupdate", () => {
- const adSkipButton = document.querySelector(".ytp-ad-skip-button-slot button,.ytp-ad-overlay-close-button")
- if(adSkipButton) {
- adSkipButton.click()
- }
- if(document.querySelector(".ad-showing")) {
- if(!isNaN(video.duration)) {
- video.play()
- video.currentTime = video.duration
- }
- }
- })
- }
- }
- }
- })
- observer.observe(document.documentElement, { subtree: true, childList: true, attributes: true })
- var interval = setInterval(function() {
- window.wrappedJSObject._lact = Date.now();
- }, 300000);