Greasy Fork 支持简体中文。

Pixeldrain show video even without logged

Show video even without logged in pixeldrain

// ==UserScript==
// @name                Pixeldrain show video even without logged
// @namespace           https://greasyfork.org/users/821661
// @match               https://pixeldrain.com/*
// @grant               GM.registerMenuCommand
// @version             1.1.3
// @require             https://update.greasyfork.org/scripts/526417/1540623/USToolkit.js
// @run-at              document-start
// @author              hdyzen
// @description         Show video even without logged in pixeldrain
// @license             GPL-3.0-only
// ==/UserScript==

function commands() {
    const useBypassUrl = JSON.parse(localStorage.getItem("bypass-url"));

    if (useBypassUrl) bypassVideoUrl();

    GM.registerMenuCommand(`Use bypass src: [${useBypassUrl ? "ON" : "OFF"}]`, e => {
        if (useBypassUrl || confirm("This use bypassed url (the video may slow down or not load). Are you sure?")) {
            localStorage.setItem("bypass-url", !useBypassUrl);
            window.location.reload();
        }
    });
}
commands();

function bypassVideoUrl() {
    const handleMutations = () => {
        const source = document.querySelector("source[src^='/api/']");

        if (source) source.src = source.src.replace("https://pixeldrain.com/api/file/", "https://pd.cybar.xyz/");
    };

    const observer = new MutationObserver(handleMutations);

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

Object.defineProperty(unsafeWindow, "viewer_data", {
    get: () => _viewer_data,
    set: value => {
        const files = value?.api_response?.files;

        if (files) {
            for (const file of value.api_response.files) {
                console.log(file);
                file.allow_video_player = true;
            }
        } else {
            value.api_response.allow_video_player = true;
            value.api_response.availability = "";
        }

        _viewer_data = value;
    },
});