YouTube Embed: Use Storage Access API

Use Storage Access API to Play YouTube (Music)? Premium Required Videos

От 08.04.2022. Виж последната версия.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name        YouTube Embed: Use Storage Access API
// @namespace   https://rinsuki.net
// @match       https://www.youtube.com/embed/*
// @grant       none
// @version     1.0
// @author      rinsuki
// @license     MIT
// @description Use Storage Access API to Play YouTube (Music)? Premium Required Videos
// ==/UserScript==

document.requestStorageAccess().then(()=> {
    console.warn("[UserScript] --- requestStorageAccess success ---")
}, () => {
    console.warn("[UserScript] --- requestStorageAccess failed ---")
})

const origOpen = XMLHttpRequest.prototype.open
const origSend = XMLHttpRequest.prototype.send
const weakMap = new WeakMap()

// addEventListener("mouseenter", () => document.requestStorageAccess())

XMLHttpRequest.prototype.open = function(method, url, ...args) {
    weakMap.set(this, url)
    return origOpen.apply(this, [method, url, ...args])
}

XMLHttpRequest.prototype.send = function(...args) {
    const url = weakMap.get(this)
    if (!url.includes("youtubei/v1/player")) {
        return origSend.apply(this, args)
    }
    document.requestStorageAccess().then(()=> {
        console.warn("[UserScript] --- requestStorageAccess success ---")
    }, () => {
        console.warn("[UserScript] --- requestStorageAccess failed ---")
    }).then(() => {
        origSend.apply(this, args)
    })
}