DGG - Add close stream button

2024-10-03, tfw you learn javashit to do Jaydr's job

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        DGG - Add close stream button
// @namespace   Jaydr do your job
// @match       https://www.destiny.gg/bigscreen
// @match       https://www.destiny.gg/bigscreen*
// @match       https://www.destiny.gg/embed/chat
// @match       https://www.omniliberal.dev/bigscreen
// @match       https://www.omniliberal.dev/bigscreen*
// @match       https://www.omniliberal.dev/embed/chat
// @match       https://www.twitch.tv/destiny
// @grant       none
// @version     0.3
// @author      mif
// @license     MIT
// @description 2024-10-03, tfw you learn javashit to do Jaydr's job
// ==/UserScript==

// idk how to do events so I'm clicking the other buttons
function click_close_embed() {document.getElementById("close-embed-btn").click();}
function click_change_platform() {document.getElementById("change-platform-btn").click();}
function blank_embed_function() {window.location.href = "#twitch/destiny";}

function css_overwrite (cssStr) { // this function injects CSS
    var D               = document;
    var newNode         = D.createElement ('style');
    newNode.textContent = cssStr;

    var targ    = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (newNode);
}

// set a base element to attach to (CINEMA one)
let target_element = document.querySelector('#theater-mode');

// define new buttons to add after CINEMA mode
let custom_close_embed_button = document.createElement("button");
let blank_screen_button = document.createElement("button");
let change_platform_button = document.createElement("button");

// configuring the new buttons

// custom_close_embed_button.id = "close-embed-custom"; // useless
// custom_close_embed_button.style = "color:dedede!important"; // make it distinct
// custom_close_embed_button.style = "color:teal!important"; // make it distinct
custom_close_embed_button.textContent = "✖️ Embed"; // name the button
custom_close_embed_button.title = "Close Embed"; // hover text
custom_close_embed_button.addEventListener("click", click_close_embed, false); // can't copy the initial listner so target the other button

// blank_screen_button to hide forced hosted embeds
blank_screen_button.textContent = "⬛"; // name the button
blank_screen_button.title = "Black screen (using #twitch/destiny)"; // hover text
blank_screen_button.href = "#twitch/destiny";
blank_screen_button.addEventListener("click", blank_embed_function, false);

change_platform_button.textContent = "↔️"; // name the button
change_platform_button.title = "Switch Kick/Youtube (he needs to be live on both)"; // hover text
change_platform_button.addEventListener("click", click_change_platform, false); // can't copy the initial listner so target the other button

// he's not getting unbanned so it's fine to mess with and use this for the blank page
css_overwrite('[src="https://player.twitch.tv/?channel=destiny&parent=www.destiny.gg&parent=stage.destiny.gg"] {display: None;}');

// actually add the buttons after target_element
target_element.textContent = "🎥"; // text too long, make this one shorter also
target_element.after(custom_close_embed_button);
target_element.after(change_platform_button);
target_element.after(blank_screen_button);