Video and Image Quality Fixer for All Sites

Force highest quality playback for videos and images on all sites.

目前為 2025-02-07 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Video and Image Quality Fixer for All Sites
// @namespace    https://github.com/yuhaofe
// @version      0.6.0
// @description  Force highest quality playback for videos and images on all sites.
// @author       Tae
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Initialize UI and enhance media
    initUI();
    enhanceMedia();

    function initUI() {
        const disableHQ = localStorage.getItem('vqfft-disablehq');
        const toggleButton = document.createElement('button');
        toggleButton.innerText = disableHQ ? 'Enable HQ' : 'HQ Enabled';
        toggleButton.style.cssText = `
            position: fixed;
            right: 10px;
            bottom: 10px;
            color: #fff;
            background-color: ${disableHQ ? 'red' : 'green'};
            border: none;
            border-radius: 5px;
            padding: 8px 12px;
            z-index: 10000;
            opacity: 0.9;
            cursor: pointer;
            font-size: 10px;
        `;
        toggleButton.onclick = () => {
            if (localStorage.getItem('vqfft-disablehq')) {
                localStorage.removeItem('vqfft-disablehq');
                alert('High Quality features enabled.');
            } else {
                localStorage.setItem('vqfft-disablehq', 'true');
                alert('High Quality features disabled.');
            }
            location.reload();
        };
        document.body.appendChild(toggleButton);
    }

    function enhanceMedia() {
        if (localStorage.getItem('vqfft-disablehq')) return;

        const observer = new MutationObserver(debounce(() => {
            document.querySelectorAll('img:not([src*="ad"]):not([data-enhanced])').forEach(img => {
                const enhancedSrc = enhanceImageSrc(img.src);
                if (enhancedSrc && enhancedSrc !== img.src) {
                    img.src = enhancedSrc;
                    img.setAttribute('data-enhanced', 'true');
                }
            });

            document.querySelectorAll('video:not([data-enhanced])').forEach(video => {
                video.setAttribute('data-enhanced', 'true');
                video.setAttribute('preload', 'true');
                video.setAttribute('playsinline', '');
                video.setAttribute('autobuffer', 'true');
                video.playbackRate = 1.0;

                video.querySelectorAll('source').forEach(source => {
                    const enhancedSrc = enhanceImageSrc(source.src);
                    if (enhancedSrc && enhancedSrc !== source.src) {
                        source.src = enhancedSrc;
                    }
                });
                video.load(); // Reload the video to apply the new sources
            });
        }, 300));

        observer.observe(document.body, { childList: true, subtree: true });
    }

    function enhanceImageSrc(src) {
        if (!src) return '';
        try {
            const url = new URL(src, location.href);
            url.searchParams.set('quality', '100'); // Enforce maximum quality
            return url.toString();
        } catch (e) {
            console.error('Invalid URL:', src, e);
            return src;
        }
    }

    function debounce(func, wait) {
        let timeout;
        return function (...args) {
            clearTimeout(timeout);
            timeout = setTimeout(() => func.apply(this, args), wait);
        };
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址