Netflix UHD

让 Netflix 在任何分辨率的显示器上播放 UHD 内容

Verze ze dne 28. 04. 2022. Zobrazit nejnovější verzi.

// ==UserScript==
// @name                 Netflix UHD
// @name:en              Netflix UHD
// @namespace            http://tampermonkey.net/
// @version              1.0
// @description          让 Netflix 在任何分辨率的显示器上播放 UHD 内容
// @description:en       Play Netflix UHD content on any screen resolution
// @author               TGSAN
// @match                https://www.netflix.com/*
// @icon                 https://www.google.com/s2/favicons?sz=64&domain=netflix.com
// @run-at               document-start
// @grant                unsafeWindow
// @grant                GM_registerMenuCommand
// ==/UserScript==

(function () {
    // 'use strict';

    if (self.unsafeWindow) {
        console.log("use unsafeWindow mode");
        delete unsafeWindow.screen;
        unsafeWindow.__defineGetter__('screen', function () {
            let s = [];
            s['width'] = 3840;
            s['height'] = 2160;
            s['availWidth'] = 3840;
            s['availHeight'] = 2160;
            s['availLeft'] = 0;
            s['availTop'] = 0;
            s['colorDepth'] = 32;
            s['isExtended'] = false;
            s['pixelDepth'] = 32;
            return s;
        });
        delete unsafeWindow.devicePixelRatio;
        unsafeWindow.devicePixelRatio = 4;

        if (unsafeWindow.MSMediaKeys) {
            unsafeWindow.MSMediaKeys.isTypeSupportedWithFeaturesOriginal = unsafeWindow.MSMediaKeys.isTypeSupportedWithFeatures;
            unsafeWindow.MSMediaKeys.isTypeSupportedWithFeatures = function (a, b) {
                const reg = /,display-res-[x|y]=\d+,display-res-[x|y]=\d+/
                b = b.replace(reg, "");
                let r = this.isTypeSupportedWithFeaturesOriginal(a, b);
                if (r !== '') {
                    console.log("Hook MSMediaKeys isTypeSupportedWithFeatures:", a, b, r !== '');
                } else {
                    console.debug("Hook MSMediaKeys isTypeSupportedWithFeatures:", a, b, r !== '');
                }
                return r;
            }
        }
    } else {
        console.log("use window mode");
        delete window.screen;
        window.__defineGetter__('screen', function () {
            let s = [];
            s['width'] = 3840;
            s['height'] = 2160;
            s['availWidth'] = 3840;
            s['availHeight'] = 2160;
            s['availLeft'] = 0;
            s['availTop'] = 0;
            s['colorDepth'] = 32;
            s['isExtended'] = false;
            s['pixelDepth'] = 32;
            return s;
        });
        delete window.devicePixelRatio;
        window.devicePixelRatio = 4;
        if (window.MSMediaKeys) {
            window.MSMediaKeys.isTypeSupportedWithFeaturesOriginal = MSMediaKeys.isTypeSupportedWithFeatures;
            window.MSMediaKeys.isTypeSupportedWithFeatures = function (a, b) {
                const reg = /,display-res-[x|y]=\d+,display-res-[x|y]=\d+/
                b = b.replace(reg, "");
                let r = this.isTypeSupportedWithFeaturesOriginal(a, b);
                if (r !== '') {
                    console.log("Hook MSMediaKeys isTypeSupportedWithFeatures:", a, b, r !== '');
                } else {
                    console.debug("Hook MSMediaKeys isTypeSupportedWithFeatures:", a, b, r !== '');
                }
                return r;
            }
        }
    }
    let checkHDCPAsync = async function () {
        if (self.GM_registerMenuCommand && window.MSMediaKeys) {
            let hdcp0 = window.MSMediaKeys.isTypeSupportedWithFeaturesOriginal("com.microsoft.playready.software", 'video/mp4; features="hdcp=0"') != '';
            let hdcp1 = window.MSMediaKeys.isTypeSupportedWithFeaturesOriginal("com.microsoft.playready.software", 'video/mp4; features="hdcp=1"') != '';
            let hdcp2 = window.MSMediaKeys.isTypeSupportedWithFeaturesOriginal("com.microsoft.playready.software", 'video/mp4; features="hdcp=2"') != '';
            let bool2Status = function (booltype) {
                return booltype ? "Yes" : "No";
            };
            GM_registerMenuCommand("PlayReady DRM Info (" + (hdcp2 ? "UHD Ready" : "Restricted") + ")", function () {
                let content = "PlayReady DRM (without HDCP 2.2): " + bool2Status(hdcp0) + "\n";
                content += "PlayReady DRM (HDCP 2.2): " + bool2Status(hdcp1) + "\n";
                content += "PlayReady DRM (HDCP 2.2 Type 1): " + bool2Status(hdcp2) + "\n";
                alert(content);
            });
        }
    };
    checkHDCPAsync();
})();
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元