您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces Kick embed with a full channel page and enables theatre mode on Kick.com only when loaded as an embed replacement
当前为
- // ==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,
- });
- }
- }