Replace Kick Embed with Channel Page and Enable Theatre Mode

Replaces Kick embed with a full channel page and enables theatre mode on Kick.com only when loaded as an embed replacement

目前为 2025-03-17 提交的版本。查看 最新版本

// ==UserScript==
// @name         Replace Kick Embed with Channel Page and Enable Theatre Mode
// @namespace    https://player.kick.com/
// @version      0.4.1
// @description  Replaces Kick embed with a full channel page and enables theatre mode on Kick.com only when loaded as an embed replacement
// @author       nobody
// @match        *://player.kick.com/*
// @match        *://kick.com/*
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at       document-start
// @license      GPL-3.0-or-later
// ==/UserScript==

if (window.location.host.includes("player.kick.com")) {
    // Code for the embed page: Replace the Kick player with a full channel page
    const observer = new MutationObserver(() => {
        const playerContainer = document.querySelector(".video-container");
        if (playerContainer) {
            // Extract channel information from the URL
            const channelUrl = window.location.href;
            console.log("Channel URL:", channelUrl);
            const channelId = channelUrl.split("/")[3]; // Assumes URL is like: https://player.kick.com/channel/{channelId}
            console.log("Channel ID:", channelId);

            // Create an iframe for the full Kick channel page
            const iframe = document.createElement("iframe");
            iframe.src = `https://kick.com/${channelId}`;
            iframe.style.width = "100%";
            iframe.style.height = "100vh"; // Full viewport height
            iframe.style.border = "none";

            // Replace the embed with the full channel page
            playerContainer.innerHTML = "";
            playerContainer.appendChild(iframe);

            // Stop observing and mark that we replaced the embed
            observer.disconnect();
            GM_setValue("embedReplaced", true);
        }
    });
    observer.observe(document.body, {
        subtree: true,
        childList: true,
    });
} else if (window.location.host.includes("kick.com")) {
    // Code for kick.com: Only run if the embed was replaced and the referrer indicates it came from player.kick.com
    const embedReplacedValue = GM_getValue("embedReplaced", false);
    if (embedReplacedValue && document.referrer.includes("player.kick.com")) {
        console.log("Embed replacement detected via referrer. Enabling theatre mode...");
        const observer2 = new MutationObserver(() => {

            setTimeout(() => {
                const clickEvent = new MouseEvent('click', {
                    bubbles: true,
                    cancelable: true
                });
                document.querySelector('#channel-chatroom > div:first-child > div > button').dispatchEvent(clickEvent);
            }, 200);
            setTimeout(() => {
                const keydownEvent = new KeyboardEvent('keydown', {
                    key: 't',
                    code: 'KeyT',
                    keyCode: 84, // deprecated, but sometimes needed for compatibility
                    which: 84, // deprecated, but sometimes needed for compatibility
                    bubbles: true,
                    cancelable: true
                });
                document.querySelector('#video-player')?.dispatchEvent(keydownEvent);
            }, 500);

            observer2.disconnect();
            // Clear the flag so subsequent direct visits to kick.com don't trigger theatre mode
            GM_setValue("embedReplaced", false);
        });
        observer2.observe(document.body, {
            subtree: true,
            childList: true,
        });
    }
}

QingJ © 2025

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