// ==UserScript== // @name Netflix Plus // @namespace http://tampermonkey.net/ // @version 1.0 // @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 // @downloadURL 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.onbeforescriptexecute = function (e) { let scripts = document.getElementsByTagName("script"); if (scripts.length === 0) return; let dom = scripts[scripts.length - 1]; window.globalOptions = { useallSub: true, useddplus: true, useAVC: false, useFHD: false, usedef: false, useHA: false, useAVCH: false, usevp9: false, useav1: false, useprk: true, usehevc: false, usef4k: false, usef12k: false, closeimsc: true, setMaxBitrate: true }; if (dom.src.includes("cadmium-playercore")) { dom.src = "https://static-os.kumo.moe/js/netflix/cadmium-playercore.js"; let maxbitrate = document.createElement('script'); maxbitrate.src = 'https://static-os.kumo.moe/js/netflix/max-bitrate.js'; document.head.appendChild(maxbitrate); } }; })();