Netflix Plus

Enable dolby plus audio and more video on Netflix

目前为 2023-11-01 提交的版本。查看 最新版本

// ==UserScript==
// @name         Netflix Plus
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Enable dolby plus audio and more video on Netflix
// @author       TGSAN
// @match        https://www.netflix.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=netflix.com
// @run-at       document-start
// @grant        none
// ==/UserScript==

(() => {
    "use strict";

    const Event = class {
        constructor(script, target) {
            this.script = script;
            this.target = target;

            this._cancel = false;
            this._replace = null;
            this._stop = false;
        }

        preventDefault() {
            this._cancel = true;
        }
        stopPropagation() {
            this._stop = true;
        }
        replacePayload(payload) {
            this._replace = payload;
        }
    };

    let callbacks = [];
    window.addBeforeScriptExecuteListener = (f) => {
        if (typeof f !== "function") {
            throw new Error("Event handler must be a function.");
        }
        callbacks.push(f);
    };
    window.removeBeforeScriptExecuteListener = (f) => {
        let i = callbacks.length;
        while (i--) {
            if (callbacks[i] === f) {
                callbacks.splice(i, 1);
            }
        }
    };

    const dispatch = (script, target) => {
        if (script.tagName !== "SCRIPT") {
            return;
        }

        const e = new Event(script, target);

        if (typeof window.onbeforescriptexecute === "function") {
            try {
                window.onbeforescriptexecute(e);
            } catch (err) {
                console.error(err);
            }
        }

        for (const func of callbacks) {
            if (e._stop) {
                break;
            }
            try {
                func(e);
            } catch (err) {
                console.error(err);
            }
        }

        if (e._cancel) {
            script.textContent = "";
            script.remove();
        } else if (typeof e._replace === "string") {
            script.textContent = e._replace;
        }
    };
    const observer = new MutationObserver((mutations) => {
        for (const m of mutations) {
            for (const n of m.addedNodes) {
                dispatch(n, m.target);
            }
        }
    });
    observer.observe(document, {
        childList: true,
        subtree: true,
    });

    window.globalOptions = {
        useallSub: true,
        useddplus: true,
        useAVC: false,
        useFHD: true,
        usedef: false,
        useHA: true,
        useAVCH: false,
        usevp9: false,
        useav1: false,
        useprk: true,
        usehevc: false,
        usef4k: true,
        usef12k: false,
        closeimsc: true,
        setMaxBitrate: true
    };

    window.onbeforescriptexecute = function (e) {
        let scripts = document.getElementsByTagName("script");
        if (scripts.length === 0) return;
        for (let i = 0; scripts.length > i; i++) {
            let dom = scripts[i];
            if (dom.src.includes("cadmium-playercore")) {
                let playercore = document.createElement('script');
                playercore.src = "https://static-os.kumo.moe/js/netflix/cadmium-playercore.js";
                playercore.crossOrigin = dom.crossOrigin;
                playercore.async = dom.async;
                playercore.id = dom.id;
                document.head.appendChild(playercore);
                let maxbitrate = document.createElement('script');
                maxbitrate.src = 'https://static-os.kumo.moe/js/netflix/max-bitrate.js';
                maxbitrate.crossOrigin = dom.crossOrigin;
                maxbitrate.async = dom.async;
                maxbitrate.id = dom.id;
                document.head.appendChild(maxbitrate);
                dom.remove();
                window.onbeforescriptexecute = null;
                break;
            }
        }

    };
})();

QingJ © 2025

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