您需要先安装一个扩展,例如 篡改猴、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://multikick.com/
- // @version 1.7
- // @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 *://multikick.com/*
- // @match *://kick.com/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_addStyle
- // @grant GM_registerMenuCommand
- // @license GPL-3.0-or-later
- // ==/UserScript==
- let chatButtonVisible = GM_getValue('kickChatButtonVisible', true);
- GM_registerMenuCommand('Toggle chat button visibility', () => {
- chatButtonVisible = !chatButtonVisible;
- GM_setValue('kickChatButtonVisible', chatButtonVisible);
- alert('Refresh for changes to take effect.');
- });
- let liveInformationVisible = GM_getValue('kickLiveInformationVisible', false);
- GM_registerMenuCommand('Toggle live information visibility', () => {
- liveInformationVisible = !liveInformationVisible;
- GM_setValue('kickLiveInformationVisible', liveInformationVisible);
- alert('Refresh for changes to take effect.');
- });
- if (window.location.host.includes("multikick.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 splitURL = channelUrl.split("/");
- const channelId = splitURL[splitURL.length - 1]; // Assumes URL is like: https://multikick.com/player/{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);
- if (!liveInformationVisible) {
- GM_addStyle(`
- .live-informations {
- display: none !important;
- }
- `);
- }
- // 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 multikick.com
- const embedReplacedValue = GM_getValue("embedReplaced", false);
- if (embedReplacedValue && document.referrer.includes("multikick.com")) {
- console.log("Embed replacement detected via referrer. Enabling theatre mode...");
- const observer2 = new MutationObserver(() => {
- const el = document.querySelector('[data-sidebar]');
- el.dataset.sidebar = 'false';
- el.dataset.chat = 'false';
- el.dataset.theatre = 'true';
- GM_addStyle(`
- [data-sidebar] > .w-xvw {
- padding-top: unset !important;
- }
- #channel-content {
- display: none;
- }
- `);
- if (!chatButtonVisible) {
- GM_addStyle(`
- [data-theatre-mode-container] .z-controls > button {
- display: none !important;
- }
- `);
- }
- 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,
- });
- }
- }