From 7e20a30c67ff31d532d03911c2355de9bd5f46a7 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Sat, 6 Sep 2025 01:08:14 +1000 Subject: [PATCH 01/12] Complete overhaul of Printer Bot dock First stage of widget-dock-core --- .../core/widget-dock-core/icons/connected.svg | 7 + .../widget-dock-core/icons/disconnected.svg | 7 + .common/core/widget-dock-core/index.html | 86 ++ .common/core/widget-dock-core/script.js | 271 ++++++ .common/core/widget-dock-core/style.css | 118 +++ .common/resources/logo.png | Bin 0 -> 212325 bytes .common/styles/global.css | 278 ++++++ printer-bot/config.json | 14 + .../{ => contents}/icons/platforms/kick.png | Bin .../{ => contents}/icons/platforms/kofi.png | Bin .../icons/platforms/patreon.png | Bin .../{ => contents}/icons/platforms/tiktok.png | Bin .../icons/platforms/tipeeeStream.png | Bin .../{ => contents}/icons/platforms/twitch.png | Bin .../icons/platforms/youtube.png | Bin printer-bot/contents/index.html | 76 ++ printer-bot/contents/script.js | 790 +++++++++++++++++ printer-bot/contents/style.css | 68 ++ printer-bot/index.html | 55 +- printer-bot/script.js | 812 +----------------- printer-bot/style.css | 127 --- 21 files changed, 1740 insertions(+), 969 deletions(-) create mode 100644 .common/core/widget-dock-core/icons/connected.svg create mode 100644 .common/core/widget-dock-core/icons/disconnected.svg create mode 100644 .common/core/widget-dock-core/index.html create mode 100644 .common/core/widget-dock-core/script.js create mode 100644 .common/core/widget-dock-core/style.css create mode 100644 .common/resources/logo.png create mode 100644 .common/styles/global.css create mode 100644 printer-bot/config.json rename printer-bot/{ => contents}/icons/platforms/kick.png (100%) rename printer-bot/{ => contents}/icons/platforms/kofi.png (100%) rename printer-bot/{ => contents}/icons/platforms/patreon.png (100%) rename printer-bot/{ => contents}/icons/platforms/tiktok.png (100%) rename printer-bot/{ => contents}/icons/platforms/tipeeeStream.png (100%) rename printer-bot/{ => contents}/icons/platforms/twitch.png (100%) rename printer-bot/{ => contents}/icons/platforms/youtube.png (100%) create mode 100644 printer-bot/contents/index.html create mode 100644 printer-bot/contents/script.js create mode 100644 printer-bot/contents/style.css delete mode 100644 printer-bot/style.css diff --git a/.common/core/widget-dock-core/icons/connected.svg b/.common/core/widget-dock-core/icons/connected.svg new file mode 100644 index 0000000..4e0799a --- /dev/null +++ b/.common/core/widget-dock-core/icons/connected.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.common/core/widget-dock-core/icons/disconnected.svg b/.common/core/widget-dock-core/icons/disconnected.svg new file mode 100644 index 0000000..962f8ef --- /dev/null +++ b/.common/core/widget-dock-core/icons/disconnected.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.common/core/widget-dock-core/index.html b/.common/core/widget-dock-core/index.html new file mode 100644 index 0000000..2cecd25 --- /dev/null +++ b/.common/core/widget-dock-core/index.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + +
+
+ + + +
+ + +
+ + +
+ + +
+ +
+ +
+
+ + +
+
+ + +
+
+
+ + + +
+ +
+ + + + +
+ + + \ No newline at end of file diff --git a/.common/core/widget-dock-core/script.js b/.common/core/widget-dock-core/script.js new file mode 100644 index 0000000..f224816 --- /dev/null +++ b/.common/core/widget-dock-core/script.js @@ -0,0 +1,271 @@ +//////////////// +// PARAMETERS // +//////////////// + +const queryString = window.location.search; +const urlParams = new URLSearchParams(queryString); + +const configJson = urlParams.get("config") || ""; + +/////////////////// +// PAGE ELEMENTS // +/////////////////// + +const sbConnectDialog = document.getElementById('sb-connect-dialog'); +const sbAddressInput = document.getElementById('sb-address'); +const sbPortInput = document.getElementById('sb-port'); +const sbPasswordInput = document.getElementById('sb-password'); +const sbErrorLabel = document.getElementById('sb-error-label'); + +const sbRequiredActionsDialog = document.getElementById('sb-required-actions-dialog'); +const sbRequiredActionsSuccessLabel = document.getElementById('sb-required-actions-success'); +const sbRequiredActionsFailureLabel = document.getElementById('sb-required-actions-failure'); +const sbRequiredActionsFailureSubtext = document.getElementById('sb-required-actions-failure-subtext'); + + +const sbRequiredActionsList = document.getElementById('sb-required-actions-list'); +const sbImportCodeLabel = document.getElementById('sb-import-code'); +const sbImportCopyButton = document.getElementById('sb-import-copy-button'); + + +const sbActionsButton = document.getElementById('sb-actions-button'); +const sbStatusButton = document.getElementById('sb-status-button'); +const sbStatusIcon = document.getElementById('sb-status-icon'); + +const blurLayer = document.getElementById('blur-layer'); + + + +///////////////////////// +// STREAMER.BOT CLIENT // +///////////////////////// + +// Check local storage +if (localStorage.getItem('sbServerAddress') === null) + localStorage.setItem('sbServerAddress', '127.0.0.1'); +if (localStorage.getItem('sbServerPort') === null) + localStorage.setItem('sbServerPort', '8080'); + +sbAddressInput.value = localStorage.getItem('sbServerAddress'); +sbPortInput.value = localStorage.getItem('sbServerPort'); +sbPasswordInput.value = localStorage.getItem('sbServerPassword'); + +const sbServerAddress = sbAddressInput.value; +const sbServerPort = sbPortInput.value; +const sbServerPassword = sbPasswordInput.value; + +window.sbClient = new StreamerbotClient({ + host: sbServerAddress, + port: sbServerPort, + password: sbServerPassword, + immediate: true, + + onConnect: (data) => { + console.log(`Streamer.bot successfully connected to ${sbServerAddress}:${sbServerPort}`) + console.debug(data); + + SetConnectionState(true); + }, + + onDisconnect: () => { + console.error(`Streamer.bot disconnected from ${sbServerAddress}:${sbServerPort}`) + SetConnectionState(false); + }, + + onError: (err) => { + console.error(`Streamer.bot disconnected from ${sbServerAddress}:${sbServerPort}`) + SetErrorMessage(err); + } +}); + +function SetConnectionState(isConnected) { + if (isConnected) { + localStorage.setItem('sbServerAddress', sbAddressInput.value); + localStorage.setItem('sbServerPort', sbPortInput.value); + localStorage.setItem('sbServerPassword', sbPasswordInput.value); + + sbConnectDialog.style.display = "none"; + blurLayer.style.display = "none"; + sbErrorLabel.style.display = 'none'; + sbStatusIcon.src = 'icons/connected.svg'; + + sbStatusButton.title = `Connected to ${window.sbClient.info.name} (${window.sbClient.info.version})`; + + // Check required actions + CheckRequiredActions(); + } + else { + sbConnectDialog.style.display = "flex"; + blurLayer.style.display = "block"; + sbStatusIcon.src = 'icons/disconnected.svg'; + + SetErrorMessage('Disconnected from Streamer.bot'); + } +} + +function SetErrorMessage(error) { + sbErrorLabel.textContent = error; + sbErrorLabel.style.display = 'block'; +} + + + +//////////// +// CONFIG // +//////////// + +if (configJson) { + // Set the header/title of the page + fetch(configJson) + .then(res => res.json()) + .then(config => { + const root = document.documentElement; + const domain = getComputedStyle(root).getPropertyValue('--domain').trim(); + + // Set the page title + parent.document.title = `${domain} • ${config.title}`; + + // Set the title label + title.textContent = config.title; + }) + .catch(err => console.error('Failed to load config:', err)); +} + +async function CheckRequiredActions() { + if (configJson) { + console.debug('Checking required actions...') + + // Set the header/title of the page + fetch(configJson) + .then(res => res.json()) + .then(async config => { + // Clear the required actions list + const sbRequiredActionsList = document.getElementById('sb-required-actions-list'); + sbRequiredActionsList.innerHTML = ''; + + // Set the import code + sbImportCodeLabel.textContent = config.sbImportCode; + + // Assume all actions are found + SetRequiredActionState(true); + + // Check each required action + if (config.requiredSbActions) { + // Get a full list of actions currently installed in Streamer.bot + const response = await sbClient.getActions(); + + // Iterate over required SB actions and check if they're present + config.requiredSbActions.forEach(req => { + const exists = response.actions.some(act => act.id === req.id); + + console.debug(`${req.name}: ${exists ? 'Found' : 'Missing'}`) + + // As soon as one is found that doesn't exist, throw up warning + if (!exists) + SetRequiredActionState(false); + + // container div + const item = document.createElement('div'); + item.className = 'sb-required-action'; + + // name label + const nameLabel = document.createElement('label'); + nameLabel.textContent = req.name; + + // status label + const statusLabel = document.createElement('label'); + statusLabel.className = 'sb-required-action-found'; + //statusLabel.textContent = exists ? '✅' : '❌'; + statusLabel.textContent = exists ? 'Found' : 'Missing'; + statusLabel.style.color = exists ? '#00d26a' : '#f92f60'; + statusLabel.style.fontWeight = 500; + + // append labels to div + item.appendChild(nameLabel); + item.appendChild(statusLabel); + + // append div to list + sbRequiredActionsList.appendChild(item); + }); + } + else + { + // There are no required actions, so hide the button + sbActionsButton.style.display = 'none'; + } + }) + .catch(err => console.error('Failed to load config:', err)); + } +} + +function SetRequiredActionState(isSuccess) { + if (isSuccess) + { + sbRequiredActionsSuccessLabel.style.display = 'block'; + sbRequiredActionsFailureLabel.style.display = 'none'; + sbRequiredActionsFailureSubtext.style.display = 'none'; + + sbActionsButton.title = `All actions found`; + + sbActionsButton.textContent = '✅'; + } + else + { + sbRequiredActionsSuccessLabel.style.display = 'none'; + sbRequiredActionsFailureLabel.style.display = 'block'; + sbRequiredActionsFailureSubtext.style.display = 'block'; + + sbActionsButton.title = `You are missing Streamer.bot actions`; + + sbActionsButton.textContent = '⚠️'; + + OpenRequiredActionsDialog(); + } +} + + +/////////////////////// +// PAGE INTERACTIONS // +/////////////////////// + +function Connect() { + sbClient.options.host = sbAddressInput.value; + sbClient.options.port = sbPortInput.value; + sbClient.options.password = sbPasswordInput.value; + sbClient.connect(); +} + +function CopyImportCode() { + const textToCopy = sbImportCodeLabel.textContent; + navigator.clipboard.writeText(textToCopy) + .then(() => { + console.debug('Copied to clipboard!'); + + // Click feedback + const root = document.documentElement; + const successColor = getComputedStyle(root).getPropertyValue('--success-color').trim(); + const buttonColor = getComputedStyle(root).getPropertyValue('--button-color').trim(); + sbImportCopyButton.textContent = 'Copied!'; + sbImportCopyButton.style.background = successColor; + setTimeout(() => { + sbImportCopyButton.textContent = 'Copy'; + sbImportCopyButton.style.background = buttonColor; + }, 1500); + }) + .catch(err => console.error('Failed to copy text: ', err)); +} + +function OpenConnectDialog() { + sbConnectDialog.style.display = "flex"; + blurLayer.style.display = "block"; +} + +function OpenRequiredActionsDialog() { + sbRequiredActionsDialog.style.display = "flex"; + blurLayer.style.display = "block"; +} + +function CloseRequiredActionsDialog() { + sbRequiredActionsDialog.style.display = "none"; + blurLayer.style.display = "none"; +} \ No newline at end of file diff --git a/.common/core/widget-dock-core/style.css b/.common/core/widget-dock-core/style.css new file mode 100644 index 0000000..8eb352c --- /dev/null +++ b/.common/core/widget-dock-core/style.css @@ -0,0 +1,118 @@ +html, +body { + height: 100%; + display: flex; + flex-direction: column; +} + + + +/**************/ +/*** HEADER ***/ +/**************/ + +#header { + display: flex; + flex-direction: row; + align-items: center; + padding: 1em; + gap: 1em; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 1); +} + +#header-end { + margin-left: auto; + align-items: center; + display: flex; + flex-direction: row; + gap: 1em; +} + +#header-end button { + padding: 0.2em; +} + + + +/*********************/ +/*** PAGE CONTENTS ***/ +/*********************/ + +#content { + flex: 1; + overflow: auto; + margin: 1em; +} + + + +/******************/ +/*** BLUR LAYER ***/ +/******************/ + +#blur-layer { + position: fixed; + inset: 0; + /* top:0; left:0; bottom:0; right:0 */ + backdrop-filter: blur(5px); + /* blur the content behind */ + -webkit-backdrop-filter: blur(5px); + /* Safari support */ + z-index: 1; + /* behind the modal */ +} + + + +/********************************/ +/*** STREAMER.BOT CONNECT BOX ***/ +/********************************/ + +#sb-required-actions-dialog { + max-width: 30em; + display: none; +} + +#sb-connect-button:enabled:hover { + background-color: #3be477; +} + +#sb-error-label { + background: #a82d2e33; + border-radius: 0.5em; + padding: 1em; + color: #c65e5e; + display: none; +} + + + +/******************************************/ +/*** STREAMER.BOT REQUIRED ACTIONS LIST ***/ +/******************************************/ + +.sb-required-action { + display: flex; + flex-direction: row; + align-items: center; +} + +.sb-required-action-found { + margin-left: auto; +} + +#sb-import-code { + white-space: nowrap; + overflow-x: auto; + overflow-y: hidden; + max-width: 100%; + padding: 0.5em; + font-family: monospace; + font-size: 1em; +} + +#sb-import-wrapper { + display: flex; + align-items: center; + gap: 0.5em; +} \ No newline at end of file diff --git a/.common/resources/logo.png b/.common/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8a815da2ed34a995df1de0703ba9378ee853b2 GIT binary patch literal 212325 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�G9c_Bj~f)&z+snn}rx8qF5P38o9lqe%U&P34Lan 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 literal 0 HcmV?d00001 diff --git a/.common/styles/global.css b/.common/styles/global.css new file mode 100644 index 0000000..4db99bf --- /dev/null +++ b/.common/styles/global.css @@ -0,0 +1,278 @@ +/*****************/ +/*** VARIABLES ***/ +/*****************/ + +:root { + --domain: nutty; + --background-color: #181818; + --accent-color: #2196f3; + --success-color: #3be477; + --button-color: #2e2e2e; + --dialog-background: #1d1d1d; + --callout-background: #181818; +} + + +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap'); + +html, +body { + margin: 0; + padding: 0; + font-family: Inter, system-ui, sans-serif; + color: white; + background-color: var(--background-color); +} + + + +/************/ +/*** TEXT ***/ +/************/ + +.title { + font-weight: 900; + font-size: 1.5em; + text-transform: uppercase; +} + +.field { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.setting-description { + font-size: 0.9em; + font-weight: 100; +} + + + +/***************/ +/*** DIVIDER ***/ +/***************/ + +.divider { + border: none; + /* border-top: 0.1px solid #444444; */ + margin: 0.3em 0; +} + + + +/***************/ +/*** BUTTONS ***/ +/***************/ + +button { + font-size: 1em; + font-weight: 600; + background-color: var(--button-color); + color: white; + opacity: 0.8; + border-width: 0; + border-radius: 0.5em; + border: 1px solid #404040; + padding: 0.5em 1em; + width: 100%; + transition: all 0.2s ease-in-out; +} + +button:hover { + opacity: 1; + cursor: pointer; +} + +button:disabled { + opacity: 0.3; + cursor: inherit; +} + + + +/************************/ +/*** INPUT TEXT BOXES ***/ +/************************/ + +input { + border-radius: 0.5em; + width: auto; + padding: 0.5em; + background-color: #171717; + border: 1px solid #404040; + color: white; + font-size: 0.9em; +} + +input:disabled { + opacity: 0.5; +} + + + +/***********************/ +/*** SLIDER SWITCHES ***/ +/***********************/ + +/* Switch styling */ +.switch { + position: relative; + display: inline-block; + width: 3em; + height: 1.5em; + font-size: 1em; + overflow: hidden; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 1.1em; + width: 1.1em; + left: 0.2em; + top: 50%; + transform: translateY(-50%); + background-color: white; + transition: 0.4s; + +} + +input:checked+.slider { + background-color: var(--accent-color); +} + +input:focus+.slider { + box-shadow: 0 0 1px var(--accent-color); +} + +input:checked+.slider:before { + transform: translate(1.5em, -50%); + /* move knob across, stay centered */ +} + +/* Rounded sliders */ +.slider.round { + border-radius: 1.5em; +} + +.slider.round:before { + border-radius: 50%; +} + + + +/******************/ +/*** SCROLLBARS ***/ +/******************/ + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: #2c2c2c; + /* Color of the tracking area */ +} + +::-webkit-scrollbar-thumb { + background-color: #9f9f9f; + /* Color of the scroll thumb */ + border-radius: 4px; + /* Roundness of the scroll thumb */ + border: none; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #d1d1d1; + /* Color of the scroll thumb on hover */ +} + + + +/***************/ +/*** IFRAMES ***/ +/***************/ + +iframe { + border-width: 0px; +} + + + +/***************/ +/*** CALLOUT ***/ +/***************/ + +.callout { + font-size: 0.9em; + font-weight: 100; + background-color: var(--callout-background); + display: flex; + flex-direction: column; + gap: 1em; + padding: 1em; + + border-radius: 0.5em; + border: 1px solid #40404080; +} + + + +/**************/ +/*** DIALOG ***/ +/**************/ + +.dialog { + font-size: 1em; + background-color: var(--dialog-background); + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + gap: 1em; + padding: 1em; + + border-radius: 0.5em; + border: 1px solid #40404080; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); + z-index: 1000; /* above overlay */ +} + +.dialog-nav-button { + background: transparent; + border: none; + font-size: 1.5em; + font-weight: 100; + padding: 0em; + width: 1em; + height: 1em; + position: absolute; + position: fixed; /* fixed to viewport */ + top: 0.5em; /* small offset from top */ + right: 0.5em; /* small offset from right */ +} + +.dialog-nav-button:hover { + background: var(--button-color); +} \ No newline at end of file diff --git a/printer-bot/config.json b/printer-bot/config.json new file mode 100644 index 0000000..cc9219c --- /dev/null +++ b/printer-bot/config.json @@ -0,0 +1,14 @@ +{ + "title": "Printer Bot", + "requiredSbActions": [ + { + "id": "2e40b2b2-a751-4504-b1ba-a628361a44cf", + "name": "Printer Bot | Events" + }, + { + "id": "5c756513-a1d0-4285-9dbc-21ad34491310", + "name": "Printer Bot | Print Routine" + } + ], + "sbImportCode": "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" +} \ No newline at end of file diff --git a/printer-bot/icons/platforms/kick.png b/printer-bot/contents/icons/platforms/kick.png similarity index 100% rename from printer-bot/icons/platforms/kick.png rename to printer-bot/contents/icons/platforms/kick.png diff --git a/printer-bot/icons/platforms/kofi.png b/printer-bot/contents/icons/platforms/kofi.png similarity index 100% rename from printer-bot/icons/platforms/kofi.png rename to printer-bot/contents/icons/platforms/kofi.png diff --git a/printer-bot/icons/platforms/patreon.png b/printer-bot/contents/icons/platforms/patreon.png similarity index 100% rename from printer-bot/icons/platforms/patreon.png rename to printer-bot/contents/icons/platforms/patreon.png diff --git a/printer-bot/icons/platforms/tiktok.png b/printer-bot/contents/icons/platforms/tiktok.png similarity index 100% rename from printer-bot/icons/platforms/tiktok.png rename to printer-bot/contents/icons/platforms/tiktok.png diff --git a/printer-bot/icons/platforms/tipeeeStream.png b/printer-bot/contents/icons/platforms/tipeeeStream.png similarity index 100% rename from printer-bot/icons/platforms/tipeeeStream.png rename to printer-bot/contents/icons/platforms/tipeeeStream.png diff --git a/printer-bot/icons/platforms/twitch.png b/printer-bot/contents/icons/platforms/twitch.png similarity index 100% rename from printer-bot/icons/platforms/twitch.png rename to printer-bot/contents/icons/platforms/twitch.png diff --git a/printer-bot/icons/platforms/youtube.png b/printer-bot/contents/icons/platforms/youtube.png similarity index 100% rename from printer-bot/icons/platforms/youtube.png rename to printer-bot/contents/icons/platforms/youtube.png diff --git a/printer-bot/contents/index.html b/printer-bot/contents/index.html new file mode 100644 index 0000000..bb744e3 --- /dev/null +++ b/printer-bot/contents/index.html @@ -0,0 +1,76 @@ + + + + + + + + + + +

+ + + + + + + + \ No newline at end of file diff --git a/printer-bot/contents/script.js b/printer-bot/contents/script.js new file mode 100644 index 0000000..520a901 --- /dev/null +++ b/printer-bot/contents/script.js @@ -0,0 +1,790 @@ +////////////////////// +// GLOBAL VARIABLES // +////////////////////// + +const sbActionPrintRoutine = '5c756513-a1d0-4285-9dbc-21ad34491310'; +const avatarMap = new Map(); + + + +///////////////////////// +// STREAMER.BOT EVENTS // +///////////////////////// + +window.parent.sbClient.on('General.Custom', (response) => { + console.debug(response.data); + CustomEvent(response.data); +}) + + + +///////////////// +// PRINTER BOT // +///////////////// + +async function CustomEvent(data) { + if (data.actionName != 'Printer Bot | Events') + return; + + // Get a reference to the template + const template = document.getElementById('receipt-template'); + + // Create a new instance of the template + const instance = template.content.cloneNode(true); + + // Get divs + const headerEl = instance.querySelector('#receipt-header'); + const contentEl = instance.querySelector('#receipt-content'); + const footerEl = instance.querySelector('#receipt-footer'); + const avatarEl = instance.querySelector('#receipt-avatar'); + const titleEl = instance.querySelector('#receipt-title'); + const subtitleEl = instance.querySelector('#receipt-subtitle'); + const iconEl = instance.querySelector('#receipt-icon'); + const dateEl = instance.querySelector('#receipt-date'); + + // Set the main contents + switch (data.__source) { + // Twitch events + case ('TwitchCheer'): + { + avatarEl.src = await GetAvatar(data.userName, 'twitch'); + titleEl.innerText = `${data.bits} BITS`; + subtitleEl.innerText = `${data.user}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = data.message; + + // Render emotes + for (i in data.emotes) { + const emoteElement = ``; + const emoteName = EscapeRegExp(data.emotes[i].name); + + let regexPattern = emoteName; + + // Check if the emote name consists only of word characters (alphanumeric and underscore) + if (/^\w+$/.test(emoteName)) { + regexPattern = `\\b${emoteName}\\b`; + } + else { + // For non-word emotes, ensure they are surrounded by non-word characters or boundaries + regexPattern = `(?<=^|[^\\w])${emoteName}(?=$|[^\\w])`; + } + + const regex = new RegExp(regexPattern, 'g'); + messageEl.innerHTML = messageEl.innerHTML.replace(regex, emoteElement); + } + + // Render cheermotes + for (i in data.cheerEmotes) { + const bits = data.cheerEmotes[i].bits; + const imageUrl = data.cheerEmotes[i].imageUrl; + const name = data.cheerEmotes[i].name; + const cheerEmoteElement = ``; + const bitsElements = `${bits}` + messageEl.innerHTML = messageEl.innerHTML.replace(new RegExp(`\\b${name}${bits}\\b`, 'i'), cheerEmoteElement + bitsElements); + } + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + case ('TwitchSub'): + { + avatarEl.src = await GetAvatar(data.userName, 'twitch'); + titleEl.innerText = `${data.tier} subscriber`; + subtitleEl.innerText = `${data.user}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = 'First time subscriber!'; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + case ('TwitchReSub'): + { + avatarEl.src = await GetAvatar(data.userName, 'twitch'); + titleEl.innerText = `${data.tier} subscriber`; + subtitleEl.innerText = `${data.user}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.cumulative} months${data.monthStreak > 1 ? ' (' + data.monthStreak + ' in a row!)' : ''}`; + if (data.messageStripped) + messageEl.innerHTML += `

${data.messageStripped}`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + case ('TwitchGiftSub'): + { + // Don't put profile pictures for subs that come from Gift Bombs to avoid rate limits + if (data.fromGiftBomb) + //avatarEl.style.display = 'none'; + return; + else + avatarEl.src = await GetAvatar(data.recipientUserName, 'twitch'); + titleEl.innerText = `Gifted Sub`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML += `${data.recipientUser}
received a ${data.tier} sub from
`; + if (data.anonymous) + messageEl.innerHTML += `a mysterious admirer...`; + else + messageEl.innerHTML += `${data.user}!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + case ('TwitchGiftBomb'): + { + avatarEl.src = await GetAvatar(data.userName, 'twitch'); + titleEl.innerHTML = `${data.gifts} × Gifted Subs`; + subtitleEl.innerHTML += `✧*・゚✧ ${data.tier.toUpperCase()} ✧・゚*✧`; + if (data.anonymous) + subtitleEl.innerHTML += `
From a mystery person...`; + else + subtitleEl.innerHTML += `
${data.user}`; + + const messageEl = document.createElement('div'); + if (data.totalGifts > 1) { + messageEl.innerHTML = `They've gifted ${data.totalGifts} subs in total!

`; + } + + // Get a list of all recipient users + Object.keys(data) + .filter(key => /^gift\.recipientUser\d+$/.test(key)) + .forEach((key, index) => { + const username = data[key]; + messageEl.innerHTML += `${username}
`; + }); + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + case ('TwitchRaid'): + { + avatarEl.src = await GetAvatar(data.userName, 'twitch'); + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.user}
is raiding with a party of
${data.viewers} viewers!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'twitch'); + } + break; + + // YouTube Events + case ('YouTubeNewSponsor'): + { + if (data.userProfileUrl) + avatarEl.src = data.userProfileUrl; + else + avatarEl.style.display = 'none'; + + titleEl.innerText = `${data.levelName}`; + subtitleEl.innerText = `${data.user}`; + + contentEl.style.display = 'none'; + + // Set the platform icon + SetPlatformIcon(iconEl, 'youtube'); + } + break; + case ('YouTubeGiftMembershipReceived'): + { + if (data.gifterProfileUrl) + avatarEl.src = data.gifterProfileUrl; + else + avatarEl.style.display = 'none'; + titleEl.innerText = `Gifted Membership`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.user}
received a membership from
${data.gifterUser}!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'youtube'); + } + break; + case ('YouTubeSuperChat'): + { + if (data.userProfileUrl) + avatarEl.src = data.userProfileUrl; + else + avatarEl.style.display = 'none'; + titleEl.style.fontSize = '2em'; + titleEl.innerText = `${data.amount}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.user}
sent a Super Chat!`; + if (data.message) + messageEl.innerHTML += `

${data.message}`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'youtube'); + } + break; + case ('YouTubeSuperSticker'): + { + if (data.stickerImageUrl) + avatarEl.src = data.stickerImageUrl; + else + avatarEl.style.display = 'none'; + titleEl.style.fontSize = '2em'; + titleEl.innerText = `${data.amount}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.user}
sent a Super Sticker!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'youtube'); + } + break; + break; + + // Kick Events + case ('KickSubscription'): + case ('KickResubscription'): + { + avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); + titleEl.innerText = `Subscriber`; + subtitleEl.innerText = `${data.user}`; + + const messageEl = document.createElement('div'); + if (data.duration > 1) + messageEl.innerHTML = `${data.duration} months`; + else + messageEl.innerHTML = 'First time subscriber!'; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'kick'); + } + break; + case ('KickGiftSubscription'): + { + avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data["recipient.userLogin"], 'kick')); + titleEl.innerText = `Gifted Sub`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'kick'); + } + break; + case ('KickMassGiftSubscription'): + { + // There is only one sub, so use the same template for a single gifted sub + if ('recipient.userName' in data) { + avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data["recipient.userLogin"], 'kick')); + titleEl.innerText = `Gifted Sub`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; + + contentEl.appendChild(messageEl); + } + else { + avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); + + // Calculate how many subs were gived + let maxIndex = -1; + for (const key in data) { + const match = key.match(/^recipient\.(\d+)\./); + if (match) { + const index = parseInt(match[1], 10); + if (index > maxIndex) { + maxIndex = index; + } + } + } + const totalGifts = maxIndex + 1; + + titleEl.innerHTML = `${totalGifts} × Gifted Subs`; + subtitleEl.innerText = `${data.user}`; + + const messageEl = document.createElement('div'); + + // Loop through each recipient and include it in the receipt + const recipients = {}; + + // Reconstruct recipient objects + for (const key in data) { + const match = key.match(/^recipient\.(\d+)\.(.+)$/); + if (match) { + const index = match[1]; + const field = match[2]; + + if (!recipients[index]) { + recipients[index] = {}; + } + + recipients[index][field] = data[key]; + } + } + + // Loop through and print userName + for (const index in recipients) { + messageEl.innerHTML += `${recipients[index].userName}
`; + } + + contentEl.appendChild(messageEl); + } + + // Set the platform icon + SetPlatformIcon(iconEl, 'kick'); + } + break; + + // StreamElements Events + case ('StreamElementsTip'): + { + const avatarURL = await GetAvatar(data.tipUsername, 'twitch'); + if (IsValidUrl(avatarURL)) + avatarEl.src = avatarURL; + else + avatarEl.style.display = 'none' + titleEl.style.fontSize = '2em'; + titleEl.innerText = FormatCurrency(data.tipAmount, data.tipCurrency); + subtitleEl.innerText = `${data.tipUsername}`; + + if (data.tipMessage) { + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.tipMessage}`; + + contentEl.appendChild(messageEl); + } + else { + contentEl.style.display = 'none'; + } + } + break; + + // Streamlabs Events + case ('StreamlabsDonation'): + { + const avatarURL = await GetAvatar(data.donationFrom, 'twitch'); + if (IsValidUrl(avatarURL)) + avatarEl.src = avatarURL; + else + avatarEl.style.display = 'none' + titleEl.style.fontSize = '2em'; + titleEl.innerText = data.donationFormattedAmount; + subtitleEl.innerText = `${data.donationFrom}`; + + if (data.donationMessage) { + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.donationMessage}`; + + contentEl.appendChild(messageEl); + } + else { + contentEl.style.display = 'none'; + } + } + break; + + // Fourthwall Events + case ('FourthwallDonation'): + { + const avatarURL = await GetAvatar(data["fw.username"], 'twitch'); + if (IsValidUrl(avatarURL)) + avatarEl.src = avatarURL; + else + avatarEl.style.display = 'none' + titleEl.style.fontSize = '2em'; + titleEl.innerText = FormatCurrency(data["fw.amount"], data["fw.currency"]); + if (data["fw.username"]) + subtitleEl.innerText = `${data["fw.username"]}`; + else if (data["fw.email"]) + subtitleEl.innerText = `${data["fw.email"]}`; + + if (data["fw.message"]) { + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data["fw.message"]}`; + + contentEl.appendChild(messageEl); + } + else { + contentEl.style.display = 'none'; + } + } + break; + // case ('FourthwallGiftPurchase'): + // break; + case ('FourthwallOrderPlaced'): + { + // Only print non-free orders + if (data["fw.total"] <= 0) + return; + + const avatarURL = await GetAvatar(data["fw.username"], 'twitch'); + if (IsValidUrl(avatarURL)) + avatarEl.src = avatarURL; + else + avatarEl.style.display = 'none' + titleEl.style.fontSize = '2em'; + titleEl.innerText = FormatCurrency(data["fw.total"], data["fw.currency"]); + if (data["fw.username"]) + subtitleEl.innerText = `${data["fw.username"]}`; + else if (data["fw.email"]) + subtitleEl.innerText = `${data["fw.email"]}`; + + // Compile a list of all items bought + const variants = []; + + // Iterate through all keys in the data object + for (const key in data) { + const match = key.match(/^fw\.variants\[(\d+)\]\.(\w+)$/); + if (match) { + const index = Number(match[1]); + const field = match[2]; + + // Make sure the array slot exists + if (!variants[index]) { + variants[index] = {}; + } + + // Assign the field to the appropriate variant object + variants[index][field] = data[key]; + } + } + + // Print each item on the receipt + const messageEl = document.createElement('div'); + variants.forEach((variant, i) => { + messageEl.innerHTML += `${variant.quantity} × ${variant.name}
`; + }); + messageEl.style.textAlign = 'left'; + + // Check if they left a custom message + let customMessageEl = document.createElement('div'); + const customMessage = data["fw.statmessageus"]; + if (customMessage) { + const txt = document.createElement("textarea"); + txt.innerHTML = customMessage; + customMessageEl.innerHTML += `
${txt.value}`; + } + + // Add a cute thank you message because you're uwu like that + const thankYouEl = document.createElement('div'); + thankYouEl.innerHTML += `
Thank you for your purchase!`; + + contentEl.appendChild(messageEl); + contentEl.appendChild(customMessageEl); + contentEl.appendChild(thankYouEl); + } + break; + case ('FourthwallSubscriptionPurchased'): + { + const avatarURL = await GetAvatar(data["fw.nickname"], 'twitch'); + if (IsValidUrl(avatarURL)) + avatarEl.src = avatarURL; + else + avatarEl.style.display = 'none' + titleEl.innerText = `New Member`; + subtitleEl.innerHTML = `${data["fw.nickname"]}`; + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `Thanks for joining at the ${FormatCurrency(data["fw.amount"], data["fw.currency"])} tier!`; + + contentEl.appendChild(messageEl); + } + break; + + // Custom Code Events + case ('CustomCodeEvent'): + { + switch (data.triggerCustomCodeEventName) { + case ('kickIncomingRaid'): + { + avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); + + const messageEl = document.createElement('div'); + messageEl.innerHTML = `${data.user}
is hosting with a party of
${data.viewers} viewers!`; + + contentEl.appendChild(messageEl); + + // Set the platform icon + SetPlatformIcon(iconEl, 'kick'); + } + break; + } + } + break; + + // Don't print any event not excplicitly listed above + default: + return; + } + + // Set the timestamp + const { DateTime } = luxon; + const now = DateTime.local(); + const formatted = now.toFormat("cccc, LLLL d',' yyyy HH:mm:ss"); + + // Add ordinal suffix manually + function addOrdinal(n) { + if (n >= 11 && n <= 13) return 'th'; + switch (n % 10) { + case 1: return 'st'; + case 2: return 'nd'; + case 3: return 'rd'; + default: return 'th'; + } + } + + const day = now.day; + const ordinal = addOrdinal(day); + const fullFormatted = now.toFormat(`cccc, LLLL '${day}${ordinal}' yyyy HH:mm:ss`); + + dateEl.textContent = fullFormatted; + + // Send it to the print routine! + const receiptHTML = await GetRenderedHTML(instance); + + window.parent.sbClient.doAction({ id: sbActionPrintRoutine }, { + receiptHTML: receiptHTML, + isTest: data.isTest, + printerName: document.getElementById('printer-name').value, + paperWidth: document.getElementById('paper-width').value, + ignoreTestTriggers: document.getElementById('ignore-test-triggers').checked, + deleteTempFiles: document.getElementById('delete-temp-files').checked + }); +} + + +////////////////////// +// HELPER FUNCTIONS // +////////////////////// + +async function GetAvatar(username, platform) { + + // First, check if the username is hashed already + if (avatarMap.has(`${username}-${platform}`)) { + console.debug(`Avatar found for ${username} (${platform}). Retrieving from hash map.`) + return avatarMap.get(`${username}-${platform}`); + } + + // If code reaches this point, the username hasn't been hashed, so retrieve avatar + switch (platform) { + case 'twitch': + { + console.debug(`No avatar found for ${username} (${platform}). Retrieving from Decapi.`) + let response = await fetch('https://decapi.me/twitch/avatar/' + username); + let data = await response.text(); + avatarMap.set(`${username}-${platform}`, data); + return data; + } + case 'kick': + { + console.debug(`No avatar found for ${username} (${platform}). Retrieving from Kick.`) + try { + let response = await fetch('https://kick.com/api/v2/channels/' + username); + console.log('https://kick.com/api/v2/channels/' + username) + let data = await response.json(); + let avatarURL = data.user.profile_pic; + if (!avatarURL) + avatarURL = 'https://kick.com/img/default-profile-pictures/default2.jpeg'; + avatarMap.set(`${username}-${platform}`, avatarURL); + return avatarURL; + } + catch (error) { + console.debug(error); + return 'https://kick.com/img/default-profile-pictures/default2.jpeg'; + } + } + } +} + +async function GetRenderedHTML(fragment) { + if (!(fragment instanceof DocumentFragment)) { + throw new Error('Argument must be a DocumentFragment'); + } + + // Filter out comment nodes from fragment content + const nodes = Array.from(fragment.childNodes).filter( + node => node.nodeType !== Node.COMMENT_NODE + ); + + const bodyContent = nodes + .map(node => node.outerHTML || node.textContent) + .join(''); + + // Get inline + + + ${bodyContent} + +`.trim(); + + return fullHTML; +} + +function ConvertWEBPToPNG(URL) { + return `https://images.weserv.nl/?url=${URL}&output=png`; +} + +function FormatCurrency(amount, currency) { + const isISOCode = /^[A-Z]{3}$/.test(currency); + + if (isISOCode) { + try { + return new Intl.NumberFormat(undefined, { + style: 'currency', + currency: currency, + currencyDisplay: 'symbol', + }).format(amount); + } catch { + return `${amount.toFixed(2)} ${currency}`; + } + } + + // Handle some common symbols that go before the number + const symbolsBefore = ['$', '€', '£', '¥', '₹']; + + if (symbolsBefore.includes(currency)) { + return `${currency}${amount.toFixed(2)}`; + } + + // Otherwise default to appending after + return `${amount.toFixed(2)} ${currency}`; +} + +function IsValidUrl(string) { + try { + new URL(string); + return true; + } catch { + return false; + } +} + +function EscapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +function SetPlatformIcon(el, platform) { + // Set the platform icon + let baseURL = window.location.href; + baseURL = baseURL.replace(/index\.html$/i, ''); + + el.src = `${baseURL}/icons/platforms/${platform}.png`; +} + + + +/////////////////////// +// PAGE INTERACTIONS // +/////////////////////// + +let data = { + "__source": "TwitchSub", + "tier": "prime", + "isPrimeSub": true, + "monthsSubscribed": 1, + "isTest": false, + "actionName": "Printer Bot | Events", + "user": "nutty", + "userName": "nutty", + "userType": "twitch" +} + +async function TestPrint() { + CustomEvent(data); +} + + + +/////////////////// +// PAGE SETTINGS // +/////////////////// + +// Get references +const printerNameInput = document.getElementById('printer-name'); +const paperWidthInput = document.getElementById('paper-width'); +const ignoreTestTriggersInput = document.getElementById('ignore-test-triggers'); +const deleteTempFilesInput = document.getElementById('delete-temp-files'); + +// Local storage key must be prefixed with the first URL segment +const currentPath = window.location.pathname; +const urlSegment = currentPath.split('/').filter(Boolean)[0]; +const storageKey = (id) => `${urlSegment}::${id}`; + +function saveSetting(id) { + const el = document.getElementById(id); + const value = el.type === "checkbox" ? el.checked : el.value; + localStorage.setItem(storageKey(id), value); +} + +// Add event listeners +[printerNameInput, paperWidthInput, ignoreTestTriggersInput, deleteTempFilesInput].forEach(input => { + input.addEventListener("input", () => saveSetting(input.id)); + input.addEventListener("change", () => saveSetting(input.id)); +}); + +// Load settings +if (localStorage.getItem(storageKey(printerNameInput.id))) + printerNameInput.value = localStorage.getItem(storageKey(printerNameInput.id)); +if (localStorage.getItem(storageKey(paperWidthInput.id))) + paperWidthInput.value = localStorage.getItem(storageKey(paperWidthInput.id)); +if (localStorage.getItem(storageKey(ignoreTestTriggersInput.id))) + ignoreTestTriggersInput.checked = JSON.parse(localStorage.getItem(storageKey(ignoreTestTriggersInput.id))); +if (localStorage.getItem(storageKey(deleteTempFilesInput.id))) + deleteTempFilesInput.checked = JSON.parse(localStorage.getItem(storageKey(deleteTempFilesInput.id))); \ No newline at end of file diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css new file mode 100644 index 0000000..27016eb --- /dev/null +++ b/printer-bot/contents/style.css @@ -0,0 +1,68 @@ +#settings { + display: flex; + flex-direction: column; + gap: 1em; +} + +.setting input { + margin-left: auto; + width: 15em; +} + +.setting { + display: flex; + flex-direction: row; + align-items: center; + gap: 0.5em; +} + + + +/************************/ +/*** RECEIPT TEMPLATE ***/ +/************************/ + +#receipt-container { + text-align: center; + color: black; +} + +#receipt-header {} + +#receipt-content { + padding: 0.5em 0em; +} + +#receipt-footer {} + +#receipt-avatar { + width: 6em; + height: 6em; + border-radius: 50%; + object-fit: cover; +} + +#receipt-title { + font-weight: 900; + font-size: 1.5em; + text-transform: uppercase; +} + +#receipt-subtitle { + font-weight: 700; + font-size: 1.2em; +} + +#receipt-icon { + height: 1em; +} + +#receipt-date { + margin: 0.5em 0em; + font-size: 0.7em; + text-transform: uppercase; +} + +.emote { + height: 1em; +} \ No newline at end of file diff --git a/printer-bot/index.html b/printer-bot/index.html index 34f0478..332b16c 100644 --- a/printer-bot/index.html +++ b/printer-bot/index.html @@ -1,49 +1,20 @@ - - - - - - + + + + nutty + -
-
-
- - -
-
- - -
- - -
-
+ + - - - \ No newline at end of file + \ No newline at end of file diff --git a/printer-bot/script.js b/printer-bot/script.js index 81e303b..2807c6d 100644 --- a/printer-bot/script.js +++ b/printer-bot/script.js @@ -1,804 +1,16 @@ -/////////////////// -// PAGE ELEMENTS // -/////////////////// +// Construct URL +const currentURL = window.location.href; +let baseURL = currentURL; -const headerEl = document.getElementById('header'); -const contentEl = document.getElementById('content'); -const footerEl = document.getElementById('footer'); +if (baseURL.endsWith("index.html")) + baseURL = baseURL.replace("index.html", ""); -const avatarEl = document.getElementById('avatar'); -const titleEl = document.getElementById('title'); -const subtitleEl = document.getElementById('subtitle'); -const dateEl = document.getElementById('date'); +const configJson = "?config=" + baseURL + "config.json"; +// Implement widget dock core +window.dockWrapper = document.getElementById('dock-wrapper'); +dockWrapper.src = `../../.common/core/widget-dock-core${configJson}`; - -////////////////////// -// GLOBAL VARIABLES // -////////////////////// - -const avatarMap = new Map(); - - - -///////////////////////// -// STREAMER.BOT CLIENT // -///////////////////////// - -// Check local storage -if (localStorage.getItem('sbServerAddress') === null) - localStorage.setItem('sbServerAddress', '127.0.0.1'); -if (localStorage.getItem('sbServerPort') === null) - localStorage.setItem('sbServerPort', '8080'); - -document.getElementById('ip').value = localStorage.getItem('sbServerAddress'); -document.getElementById('port').value = localStorage.getItem('sbServerPort'); - -let sbServerAddress = document.getElementById('ip').value; -let sbServerPort = document.getElementById('port').value; - -let client = new StreamerbotClient({ - host: sbServerAddress, - port: sbServerPort, - - onConnect: (data) => { - console.log(`Streamer.bot successfully connected to ${sbServerAddress}:${sbServerPort}`) - console.debug(data); - - SetConnectionState(true); - }, - - onDisconnect: () => { - console.error(`Streamer.bot disconnected from ${sbServerAddress}:${sbServerPort}`) - SetConnectionState(false); - } -}); - -client.on('General.Custom', (response) => { - console.debug(response.data); - CustomEvent(response.data); -}) - - -//////////////////// -// STREAM PRINTER // -//////////////////// - -async function CustomEvent(data) { - if (data.actionName != 'Printer Bot | Events') - return; - - // Get a reference to the template - const template = document.getElementById('receipt-template'); - - // Create a new instance of the template - const instance = template.content.cloneNode(true); - - // Get divs - const headerEl = instance.querySelector('#header'); - const contentEl = instance.querySelector('#content'); - const footerEl = instance.querySelector('#footer'); - const avatarEl = instance.querySelector('#avatar'); - const titleEl = instance.querySelector('#title'); - const subtitleEl = instance.querySelector('#subtitle'); - const iconEl = instance.querySelector('#icon'); - const dateEl = instance.querySelector('#date'); - - // Set the main contents - switch (data.__source) { - // Twitch events - case ('TwitchCheer'): - { - avatarEl.src = await GetAvatar(data.userName, 'twitch'); - titleEl.innerText = `${data.bits} BITS`; - subtitleEl.innerText = `${data.user}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = data.message; - - // Render emotes - for (i in data.emotes) { - const emoteElement = ``; - const emoteName = EscapeRegExp(data.emotes[i].name); - - let regexPattern = emoteName; - - // Check if the emote name consists only of word characters (alphanumeric and underscore) - if (/^\w+$/.test(emoteName)) { - regexPattern = `\\b${emoteName}\\b`; - } - else { - // For non-word emotes, ensure they are surrounded by non-word characters or boundaries - regexPattern = `(?<=^|[^\\w])${emoteName}(?=$|[^\\w])`; - } - - const regex = new RegExp(regexPattern, 'g'); - messageEl.innerHTML = messageEl.innerHTML.replace(regex, emoteElement); - } - - // Render cheermotes - for (i in data.cheerEmotes) { - const bits = data.cheerEmotes[i].bits; - const imageUrl = data.cheerEmotes[i].imageUrl; - const name = data.cheerEmotes[i].name; - const cheerEmoteElement = ``; - const bitsElements = `${bits}` - messageEl.innerHTML = messageEl.innerHTML.replace(new RegExp(`\\b${name}${bits}\\b`, 'i'), cheerEmoteElement + bitsElements); - } - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - case ('TwitchSub'): - { - avatarEl.src = await GetAvatar(data.userName, 'twitch'); - titleEl.innerText = `${data.tier} subscriber`; - subtitleEl.innerText = `${data.user}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = 'First time subscriber!'; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - case ('TwitchReSub'): - { - avatarEl.src = await GetAvatar(data.userName, 'twitch'); - titleEl.innerText = `${data.tier} subscriber`; - subtitleEl.innerText = `${data.user}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.cumulative} months${data.monthStreak > 1 ? ' (' + data.monthStreak + ' in a row!)' : ''}`; - if (data.messageStripped) - messageEl.innerHTML += `

${data.messageStripped}`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - case ('TwitchGiftSub'): - { - // Don't put profile pictures for subs that come from Gift Bombs to avoid rate limits - if (data.fromGiftBomb) - //avatarEl.style.display = 'none'; - return; - else - avatarEl.src = await GetAvatar(data.recipientUserName, 'twitch'); - titleEl.innerText = `Gifted Sub`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML += `${data.recipientUser}
received a ${data.tier} sub from
`; - if (data.anonymous) - messageEl.innerHTML += `a mysterious admirer...`; - else - messageEl.innerHTML += `${data.user}!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - case ('TwitchGiftBomb'): - { - avatarEl.src = await GetAvatar(data.userName, 'twitch'); - titleEl.innerHTML = `${data.gifts} × Gifted Subs`; - subtitleEl.innerHTML += `✧*・゚✧ ${data.tier.toUpperCase()} ✧・゚*✧`; - if (data.anonymous) - subtitleEl.innerHTML += `
From a mystery person...`; - else - subtitleEl.innerHTML += `
${data.user}`; - - const messageEl = document.createElement('div'); - if (data.totalGifts > 1) { - messageEl.innerHTML = `They've gifted ${data.totalGifts} subs in total!

`; - } - - // Get a list of all recipient users - Object.keys(data) - .filter(key => /^gift\.recipientUser\d+$/.test(key)) - .forEach((key, index) => { - const username = data[key]; - messageEl.innerHTML += `${username}
`; - }); - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - case ('TwitchRaid'): - { - avatarEl.src = await GetAvatar(data.userName, 'twitch'); - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
is raiding with a party of
${data.viewers} viewers!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'twitch'); - } - break; - - // YouTube Events - case ('YouTubeNewSponsor'): - { - if (data.userProfileUrl) - avatarEl.src = data.userProfileUrl; - else - avatarEl.style.display = 'none'; - - titleEl.innerText = `${data.levelName}`; - subtitleEl.innerText = `${data.user}`; - - contentEl.style.display = 'none'; - - // Set the platform icon - SetPlatformIcon(iconEl, 'youtube'); - } - break; - case ('YouTubeGiftMembershipReceived'): - { - if (data.gifterProfileUrl) - avatarEl.src = data.gifterProfileUrl; - else - avatarEl.style.display = 'none'; - titleEl.innerText = `Gifted Membership`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
received a membership from
${data.gifterUser}!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'youtube'); - } - break; - case ('YouTubeSuperChat'): - { - if (data.userProfileUrl) - avatarEl.src = data.userProfileUrl; - else - avatarEl.style.display = 'none'; - titleEl.style.fontSize = '2em'; - titleEl.innerText = `${data.amount}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
sent a Super Chat!`; - if (data.message) - messageEl.innerHTML += `

${data.message}`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'youtube'); - } - break; - case ('YouTubeSuperSticker'): - { - if (data.stickerImageUrl) - avatarEl.src = data.stickerImageUrl; - else - avatarEl.style.display = 'none'; - titleEl.style.fontSize = '2em'; - titleEl.innerText = `${data.amount}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
sent a Super Sticker!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'youtube'); - } - break; - break; - - // Kick Events - case ('KickSubscription'): - case ('KickResubscription'): - { - avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); - titleEl.innerText = `Subscriber`; - subtitleEl.innerText = `${data.user}`; - - const messageEl = document.createElement('div'); - if (data.duration > 1) - messageEl.innerHTML = `${data.duration} months`; - else - messageEl.innerHTML = 'First time subscriber!'; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'kick'); - } - break; - case ('KickGiftSubscription'): - { - avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data["recipient.userLogin"], 'kick')); - titleEl.innerText = `Gifted Sub`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'kick'); - } - break; - case ('KickMassGiftSubscription'): - { - // There is only one sub, so use the same template for a single gifted sub - if ('recipient.userName' in data) { - avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data["recipient.userLogin"], 'kick')); - titleEl.innerText = `Gifted Sub`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; - - contentEl.appendChild(messageEl); - } - else { - avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); - - // Calculate how many subs were gived - let maxIndex = -1; - for (const key in data) { - const match = key.match(/^recipient\.(\d+)\./); - if (match) { - const index = parseInt(match[1], 10); - if (index > maxIndex) { - maxIndex = index; - } - } - } - const totalGifts = maxIndex + 1; - - titleEl.innerHTML = `${totalGifts} × Gifted Subs`; - subtitleEl.innerText = `${data.user}`; - - const messageEl = document.createElement('div'); - - // Loop through each recipient and include it in the receipt - const recipients = {}; - - // Reconstruct recipient objects - for (const key in data) { - const match = key.match(/^recipient\.(\d+)\.(.+)$/); - if (match) { - const index = match[1]; - const field = match[2]; - - if (!recipients[index]) { - recipients[index] = {}; - } - - recipients[index][field] = data[key]; - } - } - - // Loop through and print userName - for (const index in recipients) { - messageEl.innerHTML += `${recipients[index].userName}
`; - } - - contentEl.appendChild(messageEl); - } - - // Set the platform icon - SetPlatformIcon(iconEl, 'kick'); - } - break; - - // StreamElements Events - case ('StreamElementsTip'): - { - const avatarURL = await GetAvatar(data.tipUsername, 'twitch'); - if (IsValidUrl(avatarURL)) - avatarEl.src = avatarURL; - else - avatarEl.style.display = 'none' - titleEl.style.fontSize = '2em'; - titleEl.innerText = FormatCurrency(data.tipAmount, data.tipCurrency); - subtitleEl.innerText = `${data.tipUsername}`; - - if (data.tipMessage) { - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.tipMessage}`; - - contentEl.appendChild(messageEl); - } - else { - contentEl.style.display = 'none'; - } - } - break; - - // Streamlabs Events - case ('StreamlabsDonation'): - { - const avatarURL = await GetAvatar(data.donationFrom, 'twitch'); - if (IsValidUrl(avatarURL)) - avatarEl.src = avatarURL; - else - avatarEl.style.display = 'none' - titleEl.style.fontSize = '2em'; - titleEl.innerText = data.donationFormattedAmount; - subtitleEl.innerText = `${data.donationFrom}`; - - if (data.donationMessage) { - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.donationMessage}`; - - contentEl.appendChild(messageEl); - } - else { - contentEl.style.display = 'none'; - } - } - break; - - // Fourthwall Events - case ('FourthwallDonation'): - { - const avatarURL = await GetAvatar(data["fw.username"], 'twitch'); - if (IsValidUrl(avatarURL)) - avatarEl.src = avatarURL; - else - avatarEl.style.display = 'none' - titleEl.style.fontSize = '2em'; - titleEl.innerText = FormatCurrency(data["fw.amount"], data["fw.currency"]); - if (data["fw.username"]) - subtitleEl.innerText = `${data["fw.username"]}`; - else if (data["fw.email"]) - subtitleEl.innerText = `${data["fw.email"]}`; - - if (data["fw.message"]) { - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data["fw.message"]}`; - - contentEl.appendChild(messageEl); - } - else { - contentEl.style.display = 'none'; - } - } - break; - // case ('FourthwallGiftPurchase'): - // break; - case ('FourthwallOrderPlaced'): - { - // Only print non-free orders - if (data["fw.total"] <= 0) - return; - - const avatarURL = await GetAvatar(data["fw.username"], 'twitch'); - if (IsValidUrl(avatarURL)) - avatarEl.src = avatarURL; - else - avatarEl.style.display = 'none' - titleEl.style.fontSize = '2em'; - titleEl.innerText = FormatCurrency(data["fw.total"], data["fw.currency"]); - if (data["fw.username"]) - subtitleEl.innerText = `${data["fw.username"]}`; - else if (data["fw.email"]) - subtitleEl.innerText = `${data["fw.email"]}`; - - // Compile a list of all items bought - const variants = []; - - // Iterate through all keys in the data object - for (const key in data) { - const match = key.match(/^fw\.variants\[(\d+)\]\.(\w+)$/); - if (match) { - const index = Number(match[1]); - const field = match[2]; - - // Make sure the array slot exists - if (!variants[index]) { - variants[index] = {}; - } - - // Assign the field to the appropriate variant object - variants[index][field] = data[key]; - } - } - - // Print each item on the receipt - const messageEl = document.createElement('div'); - variants.forEach((variant, i) => { - messageEl.innerHTML += `${variant.quantity} × ${variant.name}
`; - }); - messageEl.style.textAlign = 'left'; - - // Check if they left a custom message - let customMessageEl = document.createElement('div'); - const customMessage = data["fw.statmessageus"]; - if (customMessage) - { - const txt = document.createElement("textarea"); - txt.innerHTML = customMessage; - customMessageEl.innerHTML += `
${txt.value}`; - } - - // Add a cute thank you message because you're uwu like that - const thankYouEl = document.createElement('div'); - thankYouEl.innerHTML += `
Thank you for your purchase!`; - - contentEl.appendChild(messageEl); - contentEl.appendChild(customMessageEl); - contentEl.appendChild(thankYouEl); - } - break; - case ('FourthwallSubscriptionPurchased'): - { - const avatarURL = await GetAvatar(data["fw.nickname"], 'twitch'); - if (IsValidUrl(avatarURL)) - avatarEl.src = avatarURL; - else - avatarEl.style.display = 'none' - titleEl.innerText = `New Member`; - subtitleEl.innerHTML = `${data["fw.nickname"]}`; - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `Thanks for joining at the ${FormatCurrency(data["fw.amount"], data["fw.currency"])} tier!`; - - contentEl.appendChild(messageEl); - } - break; - - // Custom Code Events - case ('CustomCodeEvent'): - { - switch (data.triggerCustomCodeEventName) { - case ('kickIncomingRaid'): - { - avatarEl.src = ConvertWEBPToPNG(await GetAvatar(data.user, 'kick')); - - const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
is hosting with a party of
${data.viewers} viewers!`; - - contentEl.appendChild(messageEl); - - // Set the platform icon - SetPlatformIcon(iconEl, 'kick'); - } - break; - } - } - break; - - // Don't print any event not excplicitly listed above - default: - return; - } - - // Set the timestamp - const { DateTime } = luxon; - const now = DateTime.local(); - const formatted = now.toFormat("cccc, LLLL d',' yyyy HH:mm:ss"); - - // Add ordinal suffix manually - function addOrdinal(n) { - if (n >= 11 && n <= 13) return 'th'; - switch (n % 10) { - case 1: return 'st'; - case 2: return 'nd'; - case 3: return 'rd'; - default: return 'th'; - } - } - - const day = now.day; - const ordinal = addOrdinal(day); - const fullFormatted = now.toFormat(`cccc, LLLL '${day}${ordinal}' yyyy HH:mm:ss`); - - dateEl.textContent = fullFormatted; - - // Send it to the print routine! - const receiptHTML = await GetRenderedHTML(instance); - console.log(receiptHTML); - client.doAction({ name: 'Printer Bot | Print Routine' }, { - receiptHTML: receiptHTML, - isTest: data.isTest - }); -} - - -////////////////////// -// HELPER FUNCTIONS // -////////////////////// - -async function GetAvatar(username, platform) { - - // First, check if the username is hashed already - if (avatarMap.has(`${username}-${platform}`)) { - console.debug(`Avatar found for ${username} (${platform}). Retrieving from hash map.`) - return avatarMap.get(`${username}-${platform}`); - } - - // If code reaches this point, the username hasn't been hashed, so retrieve avatar - switch (platform) { - case 'twitch': - { - console.debug(`No avatar found for ${username} (${platform}). Retrieving from Decapi.`) - let response = await fetch('https://decapi.me/twitch/avatar/' + username); - let data = await response.text(); - avatarMap.set(`${username}-${platform}`, data); - return data; - } - case 'kick': - { - console.debug(`No avatar found for ${username} (${platform}). Retrieving from Kick.`) - try { - let response = await fetch('https://kick.com/api/v2/channels/' + username); - console.log('https://kick.com/api/v2/channels/' + username) - let data = await response.json(); - let avatarURL = data.user.profile_pic; - if (!avatarURL) - avatarURL = 'https://kick.com/img/default-profile-pictures/default2.jpeg'; - avatarMap.set(`${username}-${platform}`, avatarURL); - return avatarURL; - } - catch (error) { - console.debug(error); - return 'https://kick.com/img/default-profile-pictures/default2.jpeg'; - } - } - } -} - -async function GetRenderedHTML(fragment) { - if (!(fragment instanceof DocumentFragment)) { - throw new Error('Argument must be a DocumentFragment'); - } - - // Filter out comment nodes from fragment content - const nodes = Array.from(fragment.childNodes).filter( - node => node.nodeType !== Node.COMMENT_NODE - ); - - const bodyContent = nodes - .map(node => node.outerHTML || node.textContent) - .join(''); - - // Get inline - - - ${bodyContent} - -`.trim(); - - return fullHTML; -} - -function ConvertWEBPToPNG(URL) { - return `https://images.weserv.nl/?url=${URL}&output=png`; -} - -function FormatCurrency(amount, currency) { - const isISOCode = /^[A-Z]{3}$/.test(currency); - - if (isISOCode) { - try { - return new Intl.NumberFormat(undefined, { - style: 'currency', - currency: currency, - currencyDisplay: 'symbol', - }).format(amount); - } catch { - return `${amount.toFixed(2)} ${currency}`; - } - } - - // Handle some common symbols that go before the number - const symbolsBefore = ['$', '€', '£', '¥', '₹']; - - if (symbolsBefore.includes(currency)) { - return `${currency}${amount.toFixed(2)}`; - } - - // Otherwise default to appending after - return `${amount.toFixed(2)} ${currency}`; -} - -function IsValidUrl(string) { - try { - new URL(string); - return true; - } catch { - return false; - } -} - -function EscapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -function SetPlatformIcon(el, platform) { - // Set the platform icon - let baseURL = window.location.href; - baseURL = baseURL.replace(/index\.html$/i, ''); - - el.src = `${baseURL}/icons/platforms/${platform}.png`; -} - - - -/////////////////////////////////// -// STREAMER.BOT WEBSOCKET STATUS // -/////////////////////////////////// - -function SetConnectionState(isConnected) { - if (isConnected) { - document.getElementById('ip').disabled = true; - document.getElementById('port').disabled = true; - document.getElementById('connect-button').style.backgroundColor = '#e43b3b'; - document.getElementById('connect-button').innerText = 'Disconnect'; - - localStorage.setItem('sbServerAddress', document.getElementById('ip').value); - localStorage.setItem('sbServerPort', document.getElementById('port').value); - } - else { - document.getElementById('ip').disabled = false; - document.getElementById('port').disabled = false; - document.getElementById('connect-button').style.backgroundColor = '#3be477'; - document.getElementById('connect-button').innerText = 'Connect'; - } -} - -function Connect() { - if (document.getElementById('ip').disabled) - client.disconnect(); - else - { - client.options.host = document.getElementById('ip').value; - client.options.port = document.getElementById('port').value; - client.connect(); - } -} \ No newline at end of file +dockWrapper.addEventListener('load', () => { + dockWrapper.contentWindow.content.src = window.location.href + '/contents'; +}); \ No newline at end of file diff --git a/printer-bot/style.css b/printer-bot/style.css deleted file mode 100644 index fa6aad9..0000000 --- a/printer-bot/style.css +++ /dev/null @@ -1,127 +0,0 @@ -body { - font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif; - text-align: center; - margin: 0; - padding: 0; -} - -#background { - color: white; - background-color: #282828; - display: flex; - justify-content: center; - align-items: center; - height: 100vh; -} - -label { - font-weight: 600; -} - -button { - font-size: 1em; - font-weight: 500; - background-color: #3be477; - color: white; - opacity: 0.8; - border-width: 0; - border-radius: 0.25em; - padding: 0.25em 0.5em; - width: 100%; -} - -button:hover { - opacity: 1; - cursor: pointer; -} - -button:disabled { - opacity: 0.5; - cursor: inherit; -} - -input { - border-radius: 0.5em; - width: calc(100% - 20px); - margin: 10px 0px; - padding: 10px 10px; - background-color: #ffffff05; - border-width: 0px; - color: white; - font-size: 1em; -} - -input:disabled { - opacity: 0.5; -} - -textarea:focus, -input:focus { - outline: none; -} - -#connect-box { - font-size: 24px; - background-color: #181818; - text-align: left; - display: flex; - flex-direction: column; - gap: 1em; - padding: 2em; - border-radius: 0.5em; -} - -.field { - display: flex; - flex-direction: column; -} - -#header {} - -#avatar { - width: 6em; - height: 6em; - border-radius: 50%; - object-fit: cover; -} - -#title { - font-weight: 900; - font-size: 1.5em; - text-transform: uppercase; -} - -#subtitle { - font-weight: 700; - font-size: 1.2em; -} - -#attribute { - padding: 0.5em 0em; -} - -#content { - /* border-top: 1px solid black; - border-bottom: 1px solid black; - border-left: none; - border-right: none; - margin: 1em 0em; */ - padding: 0.5em 0em; -} - -#icon { - height: 1em; -} - -#date { - margin: 0.5em 0em; - font-size: 0.7em; - text-transform: uppercase; -} - -#footer {} - -.emote { - height: 1em; -} \ No newline at end of file From d8b3ee772c06c1a3033e58141bbff1b0c10afce0 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Sat, 6 Sep 2025 21:52:59 +1000 Subject: [PATCH 02/12] =?UTF-8?q?=E2=80=A2=20Updated=20fonts=20=E2=80=A2?= =?UTF-8?q?=20Platform=20logos=20changed=20to=20full=20size=20instead=20of?= =?UTF-8?q?=20icons=20=E2=80=A2=20Made=20profile=20pictures=20bigger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents/icons/platforms/.old/kick.png | Bin 0 -> 1169 bytes .../contents/icons/platforms/.old/twitch.png | Bin 0 -> 4015 bytes .../contents/icons/platforms/.old/youtube.png | Bin 0 -> 8618 bytes printer-bot/contents/icons/platforms/kick.png | Bin 1169 -> 3056 bytes printer-bot/contents/icons/platforms/kofi.png | Bin 33300 -> 0 bytes .../contents/icons/platforms/patreon.png | Bin 13276 -> 0 bytes .../contents/icons/platforms/tiktok.png | Bin 41499 -> 0 bytes .../contents/icons/platforms/tipeeeStream.png | Bin 12366 -> 0 bytes .../contents/icons/platforms/twitch.png | Bin 4015 -> 40856 bytes .../contents/icons/platforms/youtube.png | Bin 8618 -> 31113 bytes printer-bot/contents/index.html | 2 +- printer-bot/contents/style.css | 7 ++++--- printer-bot/script.js | 2 +- 13 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 printer-bot/contents/icons/platforms/.old/kick.png create mode 100644 printer-bot/contents/icons/platforms/.old/twitch.png create mode 100644 printer-bot/contents/icons/platforms/.old/youtube.png delete mode 100644 printer-bot/contents/icons/platforms/kofi.png delete mode 100644 printer-bot/contents/icons/platforms/patreon.png delete mode 100644 printer-bot/contents/icons/platforms/tiktok.png delete mode 100644 printer-bot/contents/icons/platforms/tipeeeStream.png diff --git a/printer-bot/contents/icons/platforms/.old/kick.png b/printer-bot/contents/icons/platforms/.old/kick.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc9afaedddcf0f850be6412b56b69af9fd90ac2 GIT binary patch literal 1169 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 Q-%<~M%IajrUmn;0A5D{si2wiq literal 0 HcmV?d00001 diff --git a/printer-bot/contents/icons/platforms/kick.png b/printer-bot/contents/icons/platforms/kick.png index 9cc9afaedddcf0f850be6412b56b69af9fd90ac2..101950147f9aa3af4f3935de14e110a5bfa332bb 100644 GIT binary patch literal 3056 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz}UpW3=}zDdg>35Vo7)Ob!1@J*w6hZkrl{S zNcITwWnidMV_;}#VPNXw-ABn*K(!qbl!CZ;p-x5*(mYulx6tO5b|3pHnl9~UR*Ie}8VYtEQKvi#k0@Ipf4W_;8OWD@^5T0TF zJaN0on(epeUiaG|#(RrlG`v8G;eaPQ7ph}=cZkf2>=r7%b!B}wkP8ZL8?NuqCr z{zrr-9R02FXG0_Fny_y(jl+N5C@Ot|zdqk)k|AA8stKDo9Oxe~*@iva=!UpE~u%!L$Z{nLSzxJsE zwk%akTq8@X{fq|8=sWy-_FnAyF3)GrMXvob^ Z$xN%ntzjOk(@&rV22WQ%mvv4FO#uH>okRct literal 1169 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 diff --git a/printer-bot/contents/icons/platforms/patreon.png b/printer-bot/contents/icons/platforms/patreon.png deleted file mode 100644 index 22c97486cbf001513caccbc6c91286c4656e284f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13276 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

hD0H+2U*svw=4}=xXV9nSWwRK?`m4_P73zR zDoM|J=erCsHs)mgh_*E0zp`LXA0oasny!a~VHmF@C#$q+#cXVr;U7rJgyh5<7PHZ- z2Z**Ne12-1BTH)mkor)(l2I~LUx2AtwZt`|BqgyV)hf9t6-Y4{85o)98d&HWS%esxSs58xnHp&u7+4t?tnLtb fhN2-iKP5A*61Rq1SJy-VH86O(`njxgN@xNASjSp) diff --git a/printer-bot/contents/icons/platforms/tipeeeStream.png b/printer-bot/contents/icons/platforms/tipeeeStream.png deleted file mode 100644 index cd981f3d4c4af44270391e30a76f97b3359223a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12366 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 diff --git a/printer-bot/contents/icons/platforms/twitch.png b/printer-bot/contents/icons/platforms/twitch.png index dcbd6c8480cbd2c59526bb3ef0a4b460308160f3..82056eb0e498fd058eada28ee4aacb1c767a46c7 100644 GIT binary patch literal 40856 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 kLWSU|dT6u8Zzopr03NmjX#fBK literal 4015 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

w_o9|nTgj>q&9nt*VeaT%=;yR*@EUS2nq2P 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 literal 8618 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 Q-%<~M%IajrUmn;0A5D{si2wiq diff --git a/printer-bot/contents/index.html b/printer-bot/contents/index.html index bb744e3..f9ff25b 100644 --- a/printer-bot/contents/index.html +++ b/printer-bot/contents/index.html @@ -67,8 +67,8 @@

diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css index 27016eb..0fd28aa 100644 --- a/printer-bot/contents/style.css +++ b/printer-bot/contents/style.css @@ -23,6 +23,7 @@ /************************/ #receipt-container { + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif; text-align: center; color: black; } @@ -36,8 +37,8 @@ #receipt-footer {} #receipt-avatar { - width: 6em; - height: 6em; + width: 90%; + /* height: 10em; */ border-radius: 50%; object-fit: cover; } @@ -54,7 +55,7 @@ } #receipt-icon { - height: 1em; + height: 2em; } #receipt-date { diff --git a/printer-bot/script.js b/printer-bot/script.js index 2807c6d..2668f87 100644 --- a/printer-bot/script.js +++ b/printer-bot/script.js @@ -12,5 +12,5 @@ window.dockWrapper = document.getElementById('dock-wrapper'); dockWrapper.src = `../../.common/core/widget-dock-core${configJson}`; dockWrapper.addEventListener('load', () => { - dockWrapper.contentWindow.content.src = window.location.href + '/contents'; + dockWrapper.contentWindow.content.src = baseURL + '/contents'; }); \ No newline at end of file From af65fcf27bd7b585e6f7df14867c4bd78e97e449 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Sat, 6 Sep 2025 22:11:04 +1000 Subject: [PATCH 03/12] Minor layout adjustments --- .common/core/widget-dock-core/index.html | 14 ++++++++------ .common/core/widget-dock-core/script.js | 5 +++++ .common/core/widget-dock-core/style.css | 18 +++++++----------- .common/resources/streamer.bot.png | Bin 0 -> 30881 bytes .common/styles/global.css | 5 ++++- 5 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 .common/resources/streamer.bot.png diff --git a/.common/core/widget-dock-core/index.html b/.common/core/widget-dock-core/index.html index 2cecd25..37638a2 100644 --- a/.common/core/widget-dock-core/index.html +++ b/.common/core/widget-dock-core/index.html @@ -56,27 +56,29 @@
+ + -
+
+ + +
- +
- +
-
-
- diff --git a/.common/core/widget-dock-core/script.js b/.common/core/widget-dock-core/script.js index f224816..dbe6296 100644 --- a/.common/core/widget-dock-core/script.js +++ b/.common/core/widget-dock-core/script.js @@ -260,6 +260,11 @@ function OpenConnectDialog() { blurLayer.style.display = "block"; } +function ClosenConnectDialog() { + sbConnectDialog.style.display = "none"; + blurLayer.style.display = "none"; +} + function OpenRequiredActionsDialog() { sbRequiredActionsDialog.style.display = "flex"; blurLayer.style.display = "block"; diff --git a/.common/core/widget-dock-core/style.css b/.common/core/widget-dock-core/style.css index 8eb352c..53dca40 100644 --- a/.common/core/widget-dock-core/style.css +++ b/.common/core/widget-dock-core/style.css @@ -15,7 +15,7 @@ body { display: flex; flex-direction: row; align-items: center; - padding: 1em; + padding: 0em 1em; gap: 1em; box-shadow: 0px 0px 10px rgba(0, 0, 0, 1); } @@ -52,14 +52,10 @@ body { #blur-layer { position: fixed; - inset: 0; - /* top:0; left:0; bottom:0; right:0 */ - backdrop-filter: blur(5px); - /* blur the content behind */ - -webkit-backdrop-filter: blur(5px); - /* Safari support */ - z-index: 1; - /* behind the modal */ + inset: 0; /* top:0; left:0; bottom:0; right:0 */ + backdrop-filter: blur(10px); /* blur the content behind */ + -webkit-backdrop-filter: blur(10px); /* Safari support */ + z-index: 1; /* behind the modal */ } @@ -78,10 +74,10 @@ body { } #sb-error-label { - background: #a82d2e33; + background: var(--error-background); border-radius: 0.5em; padding: 1em; - color: #c65e5e; + color: var(--error-color); display: none; } diff --git a/.common/resources/streamer.bot.png b/.common/resources/streamer.bot.png new file mode 100644 index 0000000000000000000000000000000000000000..f084c45e7b12258f14b2287b11f184854d688975 GIT binary patch literal 30881 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 literal 0 HcmV?d00001 diff --git a/.common/styles/global.css b/.common/styles/global.css index 4db99bf..ef0826b 100644 --- a/.common/styles/global.css +++ b/.common/styles/global.css @@ -10,6 +10,9 @@ --button-color: #2e2e2e; --dialog-background: #1d1d1d; --callout-background: #181818; + --error-background: #a82d2e33; + --error-color: #c65e5e; + --mandatory-field-color: #c93f3f; } @@ -32,7 +35,7 @@ body { .title { font-weight: 900; - font-size: 1.5em; + font-size: 1.2em; text-transform: uppercase; } From 22a51d7a4a0daee3c6cd8768953d3fd52dcbf3ef Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Mon, 8 Sep 2025 19:47:29 +1000 Subject: [PATCH 04/12] Adjusted avatar size --- printer-bot/contents/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css index 0fd28aa..68476f5 100644 --- a/printer-bot/contents/style.css +++ b/printer-bot/contents/style.css @@ -37,8 +37,8 @@ #receipt-footer {} #receipt-avatar { - width: 90%; - /* height: 10em; */ + max-height: 15em; + max-width: 90%; border-radius: 50%; object-fit: cover; } From 8169b3b5b156013ed4e7afec6e1d58bdfb8d2f4f Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Thu, 11 Sep 2025 02:03:33 +1000 Subject: [PATCH 05/12] If no receipt icon - don't leave a gap --- printer-bot/contents/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css index 68476f5..f3d00a4 100644 --- a/printer-bot/contents/style.css +++ b/printer-bot/contents/style.css @@ -58,6 +58,10 @@ height: 2em; } +#receipt-icon:empty { + display: none; +} + #receipt-date { margin: 0.5em 0em; font-size: 0.7em; From 9ced489619a4eaef87cf584c9ff856fe6e6848d0 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Thu, 11 Sep 2025 02:15:53 +1000 Subject: [PATCH 06/12] Changed wording for gifted subs --- printer-bot/contents/script.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/printer-bot/contents/script.js b/printer-bot/contents/script.js index 520a901..2b684cd 100644 --- a/printer-bot/contents/script.js +++ b/printer-bot/contents/script.js @@ -133,11 +133,11 @@ async function CustomEvent(data) { titleEl.innerText = `Gifted Sub`; const messageEl = document.createElement('div'); - messageEl.innerHTML += `${data.recipientUser}
received a ${data.tier} sub from
`; if (data.anonymous) - messageEl.innerHTML += `a mysterious admirer...`; + messageEl.innerHTML += `✦・゚ A mysterious admirer ・゚✦
`; else - messageEl.innerHTML += `${data.user}!`; + messageEl.innerHTML += `${data.user}
`; + messageEl.innerHTML += `gifted a ${data.tier} sub to
${data.recipientUser}`; contentEl.appendChild(messageEl); @@ -214,7 +214,7 @@ async function CustomEvent(data) { titleEl.innerText = `Gifted Membership`; const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data.user}
received a membership from
${data.gifterUser}!`; + messageEl.innerHTML = `${data.gifterUser}
gifted a membership to
${data.user}!`; contentEl.appendChild(messageEl); @@ -288,7 +288,7 @@ async function CustomEvent(data) { titleEl.innerText = `Gifted Sub`; const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; + messageEl.innerHTML = `${data.user}
gifted a sub to
${data["recipient.userName"]}!`; contentEl.appendChild(messageEl); From d95462f65a4f4c04193ff99471252211e7db1416 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Thu, 11 Sep 2025 02:17:42 +1000 Subject: [PATCH 07/12] The yellow dots were pissing me off --- printer-bot/contents/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css index f3d00a4..ebb8a51 100644 --- a/printer-bot/contents/style.css +++ b/printer-bot/contents/style.css @@ -28,13 +28,13 @@ color: black; } -#receipt-header {} +/* #receipt-header {} */ #receipt-content { padding: 0.5em 0em; } -#receipt-footer {} +/* #receipt-footer {} */ #receipt-avatar { max-height: 15em; From c5e9890eb2d47cbe8c50a72e2029c9f8f79861ec Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Sat, 13 Sep 2025 21:12:33 +1000 Subject: [PATCH 08/12] Re-release of Multistream Title Updater Minor Printer.bot improvements --- .common/core/widget-dock-core/index.html | 6 +- .common/core/widget-dock-core/script.js | 51 +- .common/core/widget-dock-core/style.css | 23 +- .common/styles/global.css | 157 ++++-- .../multistream-title-updater}/connected.svg | 0 .../disconnected.svg | 0 .../multistream-title-updater}/icons.afdesign | Bin .old/multistream-title-updater/index.html | 81 ++++ .../multistream-title-updater}/info.svg | 0 .../requiredActions.txt | 6 +- .old/multistream-title-updater/script.js | 444 +++++++++++++++++ .../multistream-title-updater}/style.css | 0 .../multistream-title-updater}/twitch.png | Bin .../multistream-title-updater}/youtube.png | Bin .templates/obs-dock/config.json | 6 + .templates/obs-dock/contents/index.html | 14 + .templates/obs-dock/contents/script.js | 45 ++ .templates/obs-dock/contents/style.css | 3 + .templates/obs-dock/index.html | 20 + .templates/obs-dock/script.js | 16 + multistream-title-updater/config.json | 18 + .../contents/icons/platforms/kick.png | Bin 0 -> 1169 bytes .../contents/icons/platforms/kofi.png | Bin 0 -> 33300 bytes .../contents/icons/platforms/patreon.png | Bin 0 -> 13276 bytes .../contents/icons/platforms/tiktok.png | Bin 0 -> 41499 bytes .../contents/icons/platforms/tipeeeStream.png | Bin 0 -> 12366 bytes .../contents/icons/platforms/twitch.png | Bin 0 -> 4015 bytes .../contents/icons/platforms/youtube.png | Bin 0 -> 8618 bytes multistream-title-updater/contents/index.html | 156 ++++++ multistream-title-updater/contents/script.js | 308 ++++++++++++ multistream-title-updater/contents/style.css | 78 +++ multistream-title-updater/index.html | 87 +--- multistream-title-updater/script.js | 452 +----------------- printer-bot/contents/index.html | 2 +- printer-bot/contents/script.js | 2 +- printer-bot/contents/style.css | 7 +- 36 files changed, 1389 insertions(+), 593 deletions(-) rename {multistream-title-updater => .old/multistream-title-updater}/connected.svg (100%) rename {multistream-title-updater => .old/multistream-title-updater}/disconnected.svg (100%) rename {multistream-title-updater => .old/multistream-title-updater}/icons.afdesign (100%) create mode 100644 .old/multistream-title-updater/index.html rename {multistream-title-updater => .old/multistream-title-updater}/info.svg (100%) rename {multistream-title-updater => .old/multistream-title-updater}/requiredActions.txt (98%) create mode 100644 .old/multistream-title-updater/script.js rename {multistream-title-updater => .old/multistream-title-updater}/style.css (100%) rename {multistream-title-updater => .old/multistream-title-updater}/twitch.png (100%) rename {multistream-title-updater => .old/multistream-title-updater}/youtube.png (100%) create mode 100644 .templates/obs-dock/config.json create mode 100644 .templates/obs-dock/contents/index.html create mode 100644 .templates/obs-dock/contents/script.js create mode 100644 .templates/obs-dock/contents/style.css create mode 100644 .templates/obs-dock/index.html create mode 100644 .templates/obs-dock/script.js create mode 100644 multistream-title-updater/config.json create mode 100644 multistream-title-updater/contents/icons/platforms/kick.png create mode 100644 multistream-title-updater/contents/icons/platforms/kofi.png create mode 100644 multistream-title-updater/contents/icons/platforms/patreon.png create mode 100644 multistream-title-updater/contents/icons/platforms/tiktok.png create mode 100644 multistream-title-updater/contents/icons/platforms/tipeeeStream.png create mode 100644 multistream-title-updater/contents/icons/platforms/twitch.png create mode 100644 multistream-title-updater/contents/icons/platforms/youtube.png create mode 100644 multistream-title-updater/contents/index.html create mode 100644 multistream-title-updater/contents/script.js create mode 100644 multistream-title-updater/contents/style.css diff --git a/.common/core/widget-dock-core/index.html b/.common/core/widget-dock-core/index.html index 37638a2..4aa341f 100644 --- a/.common/core/widget-dock-core/index.html +++ b/.common/core/widget-dock-core/index.html @@ -16,9 +16,9 @@
- -
@@ -29,7 +29,7 @@ -
+
diff --git a/printer-bot/contents/script.js b/printer-bot/contents/script.js index 2b684cd..fc3672c 100644 --- a/printer-bot/contents/script.js +++ b/printer-bot/contents/script.js @@ -304,7 +304,7 @@ async function CustomEvent(data) { titleEl.innerText = `Gifted Sub`; const messageEl = document.createElement('div'); - messageEl.innerHTML = `${data["recipient.userName"]}
received a sub from
${data.user}!`; + messageEl.innerHTML = `${data.user}
gifted a sub to
${data["recipient.userName"]}!`; contentEl.appendChild(messageEl); } diff --git a/printer-bot/contents/style.css b/printer-bot/contents/style.css index ebb8a51..937b872 100644 --- a/printer-bot/contents/style.css +++ b/printer-bot/contents/style.css @@ -1,3 +1,7 @@ +body { + margin: 1em; +} + #settings { display: flex; flex-direction: column; @@ -58,7 +62,8 @@ height: 2em; } -#receipt-icon:empty { +#receipt-icon:not([src]), +#receipt-icon[src=""] { display: none; } From 24d2342b1e796a2466749458d095b7423c969987 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Mon, 15 Sep 2025 00:23:57 +1000 Subject: [PATCH 09/12] =?UTF-8?q?=E2=80=A2=20Minor=20aesthetic=20changes?= =?UTF-8?q?=20=E2=80=A2=20If=20no=20YouTube=20streams=20are=20found,=20a?= =?UTF-8?q?=20shortcut=20to=20your=20YouTube=20dashboard=20will=20now=20ap?= =?UTF-8?q?pear?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .common/styles/global.css | 4 +-- multistream-title-updater/config.json | 2 +- multistream-title-updater/contents/index.html | 27 ++++++++++++++----- multistream-title-updater/contents/script.js | 19 +++++++++++-- multistream-title-updater/contents/style.css | 10 +++---- 5 files changed, 44 insertions(+), 18 deletions(-) diff --git a/.common/styles/global.css b/.common/styles/global.css index c532de9..81b3616 100644 --- a/.common/styles/global.css +++ b/.common/styles/global.css @@ -101,14 +101,12 @@ button:disabled { } .icon-button { - margin-left: auto; width: 1em; height: 1em; background: transparent; border: none; - font-size: 1.5em; - font-weight: 100; + font-size: 1.1em; padding: 1em; border-radius: 50%; } diff --git a/multistream-title-updater/config.json b/multistream-title-updater/config.json index 1f4cf89..ccac738 100644 --- a/multistream-title-updater/config.json +++ b/multistream-title-updater/config.json @@ -14,5 +14,5 @@ "name": "Multistream Title Updater | Open Link" } ], - "sbImportCode": "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" + "sbImportCode": "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" } \ No newline at end of file diff --git a/multistream-title-updater/contents/index.html b/multistream-title-updater/contents/index.html index 1c73238..723cb49 100644 --- a/multistream-title-updater/contents/index.html +++ b/multistream-title-updater/contents/index.html @@ -13,11 +13,26 @@ Update All - -
-
+
+ +
+
- + +
+ + +
+ +
+ +
+ +
+
+
@@ -137,12 +152,12 @@
diff --git a/.common/core/widget-dock-core/script.js b/.common/core/widget-dock-core/script.js index dbe6296..e67d58f 100644 --- a/.common/core/widget-dock-core/script.js +++ b/.common/core/widget-dock-core/script.js @@ -7,6 +7,7 @@ const urlParams = new URLSearchParams(queryString); const configJson = urlParams.get("config") || ""; + /////////////////// // PAGE ELEMENTS // /////////////////// @@ -22,18 +23,25 @@ const sbRequiredActionsSuccessLabel = document.getElementById('sb-required-actio const sbRequiredActionsFailureLabel = document.getElementById('sb-required-actions-failure'); const sbRequiredActionsFailureSubtext = document.getElementById('sb-required-actions-failure-subtext'); - const sbRequiredActionsList = document.getElementById('sb-required-actions-list'); const sbImportCodeLabel = document.getElementById('sb-import-code'); const sbImportCopyButton = document.getElementById('sb-import-copy-button'); - const sbActionsButton = document.getElementById('sb-actions-button'); const sbStatusButton = document.getElementById('sb-status-button'); const sbStatusIcon = document.getElementById('sb-status-icon'); const blurLayer = document.getElementById('blur-layer'); +const contentIFrame = document.getElementById('content'); + + +////////////////////// +// GLOBAL VARIABLES // +////////////////////// + +let sbClientListeners; + ///////////////////////// @@ -54,7 +62,7 @@ const sbServerAddress = sbAddressInput.value; const sbServerPort = sbPortInput.value; const sbServerPassword = sbPasswordInput.value; -window.sbClient = new StreamerbotClient({ +sbClient = new StreamerbotClient({ host: sbServerAddress, port: sbServerPort, password: sbServerPassword, @@ -65,6 +73,16 @@ window.sbClient = new StreamerbotClient({ console.debug(data); SetConnectionState(true); + + // Notify iframe + contentIFrame.addEventListener("load", () => { + NotifyTheContentIFrameThatSBHasConnectedSuccessfullySoItCanDoStuff(data); + }); + NotifyTheContentIFrameThatSBHasConnectedSuccessfullySoItCanDoStuff(); + + // Idk why but listeners get cleared when re-connecting, so copy them back in + if (sbClientListeners) + sbClient.listeners = sbClientListeners; }, onDisconnect: () => { @@ -89,7 +107,7 @@ function SetConnectionState(isConnected) { sbErrorLabel.style.display = 'none'; sbStatusIcon.src = 'icons/connected.svg'; - sbStatusButton.title = `Connected to ${window.sbClient.info.name} (${window.sbClient.info.version})`; + sbStatusButton.title = `Connected to ${sbClient.info.name} (${sbClient.info.version})`; // Check required actions CheckRequiredActions(); @@ -157,7 +175,7 @@ async function CheckRequiredActions() { // Iterate over required SB actions and check if they're present config.requiredSbActions.forEach(req => { const exists = response.actions.some(act => act.id === req.id); - + console.debug(`${req.name}: ${exists ? 'Found' : 'Missing'}`) // As soon as one is found that doesn't exist, throw up warning @@ -188,8 +206,7 @@ async function CheckRequiredActions() { sbRequiredActionsList.appendChild(item); }); } - else - { + else { // There are no required actions, so hide the button sbActionsButton.style.display = 'none'; } @@ -199,8 +216,7 @@ async function CheckRequiredActions() { } function SetRequiredActionState(isSuccess) { - if (isSuccess) - { + if (isSuccess) { sbRequiredActionsSuccessLabel.style.display = 'block'; sbRequiredActionsFailureLabel.style.display = 'none'; sbRequiredActionsFailureSubtext.style.display = 'none'; @@ -209,12 +225,11 @@ function SetRequiredActionState(isSuccess) { sbActionsButton.textContent = '✅'; } - else - { + else { sbRequiredActionsSuccessLabel.style.display = 'none'; sbRequiredActionsFailureLabel.style.display = 'block'; sbRequiredActionsFailureSubtext.style.display = 'block'; - + sbActionsButton.title = `You are missing Streamer.bot actions`; sbActionsButton.textContent = '⚠️'; @@ -228,7 +243,8 @@ function SetRequiredActionState(isSuccess) { // PAGE INTERACTIONS // /////////////////////// -function Connect() { +function Connect() { + sbClientListeners = sbClient.listeners; sbClient.options.host = sbAddressInput.value; sbClient.options.port = sbPortInput.value; sbClient.options.password = sbPasswordInput.value; @@ -240,7 +256,7 @@ function CopyImportCode() { navigator.clipboard.writeText(textToCopy) .then(() => { console.debug('Copied to clipboard!'); - + // Click feedback const root = document.documentElement; const successColor = getComputedStyle(root).getPropertyValue('--success-color').trim(); @@ -273,4 +289,11 @@ function OpenRequiredActionsDialog() { function CloseRequiredActionsDialog() { sbRequiredActionsDialog.style.display = "none"; blurLayer.style.display = "none"; +} + +function NotifyTheContentIFrameThatSBHasConnectedSuccessfullySoItCanDoStuff(data) { + contentIFrame.contentWindow.postMessage( + { type: "sbClientConnected", data }, + "*" // replace with iframe origin for security if needed + ); } \ No newline at end of file diff --git a/.common/core/widget-dock-core/style.css b/.common/core/widget-dock-core/style.css index 53dca40..198d01e 100644 --- a/.common/core/widget-dock-core/style.css +++ b/.common/core/widget-dock-core/style.css @@ -17,7 +17,8 @@ body { align-items: center; padding: 0em 1em; gap: 1em; - box-shadow: 0px 0px 10px rgba(0, 0, 0, 1); + box-shadow: 0 0 10px rgba(0,0,0,1); + z-index: 1; } #header-end { @@ -25,11 +26,6 @@ body { align-items: center; display: flex; flex-direction: row; - gap: 1em; -} - -#header-end button { - padding: 0.2em; } @@ -41,21 +37,6 @@ body { #content { flex: 1; overflow: auto; - margin: 1em; -} - - - -/******************/ -/*** BLUR LAYER ***/ -/******************/ - -#blur-layer { - position: fixed; - inset: 0; /* top:0; left:0; bottom:0; right:0 */ - backdrop-filter: blur(10px); /* blur the content behind */ - -webkit-backdrop-filter: blur(10px); /* Safari support */ - z-index: 1; /* behind the modal */ } diff --git a/.common/styles/global.css b/.common/styles/global.css index ef0826b..c532de9 100644 --- a/.common/styles/global.css +++ b/.common/styles/global.css @@ -34,20 +34,25 @@ body { /************/ .title { - font-weight: 900; - font-size: 1.2em; - text-transform: uppercase; + font-weight: 900; + font-size: 1.2em; + text-transform: uppercase; } .field { - display: flex; - flex-direction: column; - gap: 0.5em; + display: flex; + flex-direction: column; + gap: 0.5em; } .setting-description { - font-size: 0.9em; - font-weight: 100; + font-size: 0.9em; + font-weight: 200; +} + +.setting-attribute { + font-size: 0.8em; + font-weight: 200; } @@ -80,6 +85,9 @@ button { padding: 0.5em 1em; width: 100%; transition: all 0.2s ease-in-out; + display: flex; + align-items: center; + justify-content: center; } button:hover { @@ -92,26 +100,66 @@ button:disabled { cursor: inherit; } +.icon-button { + margin-left: auto; + width: 1em; + height: 1em; + + background: transparent; + border: none; + font-size: 1.5em; + font-weight: 100; + padding: 1em; + border-radius: 50%; +} + +.icon-button:hover { + background: var(--button-color); +} + /************************/ /*** INPUT TEXT BOXES ***/ /************************/ +textarea, input { + font-family: inherit; border-radius: 0.5em; width: auto; padding: 0.5em; background-color: #171717; - border: 1px solid #404040; + border: none; + outline: 1px solid #404040; color: white; font-size: 0.9em; + transition: 0.2s; } +textarea:disabled, input:disabled { opacity: 0.5; } +textarea:focus, +input:focus, +select:focus { + outline: 1px solid var(--accent-color); +} + +textarea { + resize: vertical; +} + +.textarea-description { + min-height: 10em; +} + +textarea::-webkit-resizer { + display: none; +} + /***********************/ @@ -226,16 +274,16 @@ iframe { /***************/ .callout { - font-size: 0.9em; - font-weight: 100; - background-color: var(--callout-background); - display: flex; - flex-direction: column; - gap: 1em; - padding: 1em; + font-size: 0.9em; + font-weight: 100; + background-color: var(--callout-background); + display: flex; + flex-direction: column; + gap: 1em; + padding: 1em; - border-radius: 0.5em; - border: 1px solid #40404080; + border-radius: 0.5em; + border: 1px solid #40404080; } @@ -245,21 +293,22 @@ iframe { /**************/ .dialog { - font-size: 1em; - background-color: var(--dialog-background); - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - display: flex; - flex-direction: column; - gap: 1em; - padding: 1em; + font-size: 1em; + background-color: var(--dialog-background); + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + gap: 1em; + padding: 1em; - border-radius: 0.5em; - border: 1px solid #40404080; - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); - z-index: 1000; /* above overlay */ + border-radius: 0.5em; + border: 1px solid #40404080; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); + z-index: 1000; + /* above overlay */ } .dialog-nav-button { @@ -271,11 +320,49 @@ iframe { width: 1em; height: 1em; position: absolute; - position: fixed; /* fixed to viewport */ - top: 0.5em; /* small offset from top */ - right: 0.5em; /* small offset from right */ + position: fixed; + /* fixed to viewport */ + top: 0.5em; + /* small offset from top */ + right: 0.5em; + /* small offset from right */ } .dialog-nav-button:hover { background: var(--button-color); +} + + + +/******************/ +/*** BLUR LAYER ***/ +/******************/ + +.blur { + position: fixed; + inset: 0; + /* top:0; left:0; bottom:0; right:0 */ + backdrop-filter: blur(10px); + /* blur the content behind */ + -webkit-backdrop-filter: blur(10px); + /* Safari support */ + z-index: 1; + /* behind the modal */ +} + + +/***************/ +/*** SELECTS ***/ +/***************/ + +select { + padding: 0.5em; + font-size: 0.9em; + border-radius: 0.5em; + border: none; + outline: 1px solid #404040; + background-color: var(--callout-background); + color: #fff; + cursor: pointer; + min-width: 8em; } \ No newline at end of file diff --git a/multistream-title-updater/connected.svg b/.old/multistream-title-updater/connected.svg similarity index 100% rename from multistream-title-updater/connected.svg rename to .old/multistream-title-updater/connected.svg diff --git a/multistream-title-updater/disconnected.svg b/.old/multistream-title-updater/disconnected.svg similarity index 100% rename from multistream-title-updater/disconnected.svg rename to .old/multistream-title-updater/disconnected.svg diff --git a/multistream-title-updater/icons.afdesign b/.old/multistream-title-updater/icons.afdesign similarity index 100% rename from multistream-title-updater/icons.afdesign rename to .old/multistream-title-updater/icons.afdesign diff --git a/.old/multistream-title-updater/index.html b/.old/multistream-title-updater/index.html new file mode 100644 index 0000000..4c088ec --- /dev/null +++ b/.old/multistream-title-updater/index.html @@ -0,0 +1,81 @@ + + + + + + + + + + +
Refreshed
+ +
+ + +
+ + +
+ +
+
Update Titles
+ + +
+ +
+ +
+
+

+
+ + +
+
+ +
+ +
+
+ + + +
+ + + +
+ + + + \ No newline at end of file diff --git a/multistream-title-updater/info.svg b/.old/multistream-title-updater/info.svg similarity index 100% rename from multistream-title-updater/info.svg rename to .old/multistream-title-updater/info.svg diff --git a/multistream-title-updater/requiredActions.txt b/.old/multistream-title-updater/requiredActions.txt similarity index 98% rename from multistream-title-updater/requiredActions.txt rename to .old/multistream-title-updater/requiredActions.txt index 503a772..c43224d 100644 --- a/multistream-title-updater/requiredActions.txt +++ b/.old/multistream-title-updater/requiredActions.txt @@ -1,4 +1,4 @@ -[NUT] Multistream Title Updater | Fetch Broadcasts -[NUT] Multistream Title Updater | Update All Broadcasts -[NUT] Multistream Title Updater | Update Twitch Title +[NUT] Multistream Title Updater | Fetch Broadcasts +[NUT] Multistream Title Updater | Update All Broadcasts +[NUT] Multistream Title Updater | Update Twitch Title [NUT] Multistream Title Updater | Update YouTube Title \ No newline at end of file diff --git a/.old/multistream-title-updater/script.js b/.old/multistream-title-updater/script.js new file mode 100644 index 0000000..72ec198 --- /dev/null +++ b/.old/multistream-title-updater/script.js @@ -0,0 +1,444 @@ +//////////// +// FIELDS // +//////////// + +let sbDebugMode = true; + +const queryString = window.location.search; +const urlParams = new URLSearchParams(queryString); + +const sbServerPort = urlParams.get("port") || 8080; +const sbServerAddress = urlParams.get("server") || "127.0.0.1"; + +///////////////// +// GLOBAL VARS // +///////////////// + +let ws; + +/////////////////////////////////// +// SRTEAMER.BOT WEBSOCKET SERVER // +/////////////////////////////////// + +// This is the main function that connects to the Streamer.bot websocke server +function connectws() { + if ("WebSocket" in window) { + ws = new WebSocket("ws://" + sbServerAddress + ":" + sbServerPort + "/"); + + // Reconnect + ws.onclose = function () { + SetConnectionStatus(false); + setTimeout(connectws, 5000); + }; + + // Connect + ws.onopen = async function () { + SetConnectionStatus(true); + + console.log("Subscribe to events"); + ws.send( + JSON.stringify({ + request: "Subscribe", + id: "subscribe-events-id", + // This is the list of Streamer.bot websocket events to subscribe to + // See full list of events here: + // https://docs.streamer.bot/api/servers/websocket/requests + events: { + twitch: [ + "StreamUpdate" + ], + youTube: [ + "BroadcastStarted", + "BroadcastEnded", + "BroadcastUpdated" + ], + general: [ + "Custom" + ] + } + }) + ); + + sbGetActions(ws); + + ws.onmessage = function (event) { + // Grab message and parse JSON + const msg = event.data; + const wsdata = JSON.parse(msg); + + // Check if the user installed all the required Streamer.bot actions + if (wsdata.id == "GetActions") { + + // Check if all the required SB action exist + ReadLinesFromFile('requiredActions.txt') + .then(requiredActions => { + if (sbCheckRequiredActions(wsdata.actions, requiredActions)) { + SetElementVisibility("missingActionsInstructions", false); + sbFetchBroadcasts(ws); + } + else + SetElementVisibility("missingActionsInstructions", true); + }) + } + + if (typeof wsdata.event == "undefined") { + return; + } + + // Print data to log for debugging purposes + if (sbDebugMode) { + console.log(wsdata.data); + console.log(wsdata.event.source); + console.log(wsdata.event.type); + } + + // Check for events to trigger + // See documentation for all events here: + // https://wiki.streamer.bot/en/Servers-Clients/WebSocket-Server/Events + switch (wsdata.event.source) { + // Twitch Events + case 'Twitch': + switch (wsdata.event.type) { + case ('StreamUpdate'): + sbFetchBroadcasts(ws); + break; + } + // Twitch Events + case 'YouTube': + switch (wsdata.event.type) { + case ('BroadcastStarted'): + case ('BroadcastEnded'): + case ('BroadcastUpdated'): + sbFetchBroadcasts(ws); + break; + } + // General Events + case 'General': + switch (wsdata.event.type) { + case ('Custom'): + switch (wsdata.data.action) { + case ('[NUT] Multistream Title Updater | Fetch Broadcasts'): + UpdateBroadcastList(wsdata.data); + break; + } + break; + } + break; + + } + }; + } + } +} + + + +///////////////////////// +// STREAMER.BOT WIDGET // +///////////////////////// + +function sbGetActions(ws) { + + let request = JSON.stringify({ + request: "GetActions", + id: "GetActions" + }); + + ws.send(request); +} + +// Check if all the entries in targetActionNames exist in actionList +function sbCheckRequiredActions(actionList, targetActionNames) { + let foundActions = 0; + for (targetActionName of targetActionNames) { + if (actionList.some(action => action.name === targetActionName)) + foundActions++; + } + + return foundActions == targetActionNames.length +} + +function sbFetchBroadcasts(ws) { + + let request = JSON.stringify({ + request: "DoAction", + id: generateUUID(), + action: { + name: "[NUT] Multistream Title Updater | Fetch Broadcasts" + } + }); + + ws.send(request); +} + +function sbUpdateTitles(ws, title) { + let request = JSON.stringify({ + request: "DoAction", + id: generateUUID(), + action: { + name: "[NUT] Multistream Title Updater | Update All Broadcasts" + }, + args: { + title: title + } + + }); + + ws.send(request); +} + +function sbUpdateTwitchTitle(ws, title) { + let request = JSON.stringify({ + request: "DoAction", + id: generateUUID(), + action: { + name: "[NUT] Multistream Title Updater | Update Twitch Title" + }, + args: { + title: title + } + + }); + + ws.send(request); +} + +function sbUpdateYouTubeTitle(ws, title, broadcastId) { + let request = JSON.stringify({ + request: "DoAction", + id: generateUUID(), + action: { + name: "[NUT] Multistream Title Updater | Update YouTube Title" + }, + args: { + broadcastId: broadcastId, + title: title + } + + }); + + ws.send(request); +} + + +////////////////////// +// HELPER FUNCTIONS // +////////////////////// + +function generateUUID() { // Public Domain/MIT + var d = new Date().getTime();//Timestamp + var d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16;//random number between 0 and 16 + if (d > 0) {//Use timestamp until depleted + r = (d + r) % 16 | 0; + d = Math.floor(d / 16); + } else {//Use microseconds since page-load if supported + r = (d2 + r) % 16 | 0; + d2 = Math.floor(d2 / 16); + } + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); +} + +function IsNullOrWhitespace(str) { + return /^\s*$/.test(str); +} + +function SetElementVisibility(elementID, visibility) { + let element = document.getElementById(elementID); + if (visibility) + element.style.display = 'inline'; + else + element.style.display = 'none'; +} + +function ReadLinesFromFile(filePath) { + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open('GET', filePath, true); + request.onload = function () { + if (request.status === 200) { + resolve(request.responseText.split(/\r?\n/)); + } else { + reject(new Error(`File loading failed with status: ${request.status}`)); + } + }; + request.onerror = function () { + reject(new Error('Network error occurred during file loading.')); + }; + request.send(); + }); +} + + + +/////////////////////////////////// +// STREAMER.BOT WEBSOCKET STATUS // +/////////////////////////////////// + +// This function sets the visibility of the Streamer.bot status label on the overlay +function SetConnectionStatus(connected) { + let connectionStatusIcon = document.getElementById("connectionStatusIcon"); + let ThisIsWhereAllTheCoolStuffHappens = document.getElementById("ThisIsWhereAllTheCoolStuffHappens"); + + if (connected) { + connectionStatusIcon.src = "connected.svg"; + ThisIsWhereAllTheCoolStuffHappens.classList.remove('disabled'); + SetElementVisibility("infoIcon", false); + SetElementVisibility("streamerbotConnectInstructions", false); + } + else { + connectionStatusIcon.src = "disconnected.svg"; + ThisIsWhereAllTheCoolStuffHappens.classList.add('disabled'); + SetElementVisibility("infoIcon", true); + SetElementVisibility("streamerbotConnectInstructions", true); + + // (1) Clear list of broadcasts + const fieldsContainer = document.getElementById('fieldsContainer'); + fieldsContainer.innerHTML = ""; + } +} + +// This function sets the visibility of the Streamer.bot status label on the overlay +function RefreshAnimation() { + let refreshContainer = document.getElementById("refreshContainer"); + refreshContainer.style.opacity = 1; + var tl = new TimelineMax(); + tl + .to(refreshContainer, 2, { opacity: 0, ease: Linear.easeNone }) +} + + + +// Button handling for UPDATE ALL button only +const infoIcon = document.querySelector("#infoIcon"); +infoIcon.addEventListener("click", function () { + window.open("https://www.notion.so/nutty-s-multistream-title-updater-e2fb7b24c7514f9cbd943729f54be1d9"); +}); + +// Button handling for UPDATE ALL button only +const submitButton = document.querySelector("#submitButton"); +submitButton.addEventListener("click", function () { + const titleInput = document.querySelector("#titleInput").value; + sbUpdateTitles(ws, titleInput); +}); + +// Button handling for REFRESH button only +const refreshButton = document.querySelector("#refreshButton"); +refreshButton.addEventListener("click", function () { + sbFetchBroadcasts(ws); +}); + + +function UpdateBroadcastList(data) { + // Iterate through broadcast list + // Find div whose ID matches the broadcast + // If it exists, update the title + // else, it's a new broadcast, so add it to the list + const fieldsContainer = document.getElementById('fieldsContainer'); + for (const broadcast of data.broadcastList) { + const broadcastDiv = fieldsContainer.querySelector(`#${broadcast.id}`); + + if (broadcastDiv == null) + AddBroadcast(broadcast); + else + UpdateBroadcast(broadcastDiv, broadcast); + } + + // Check if any broadcasts have gone offline + // If so, delete them from the list + var parentDiv = document.getElementById('fieldsContainer'); + const childDivs = parentDiv.querySelectorAll("div"); + childDivs.forEach(childDiv => { + var result = data.broadcastList.find(obj => { + return obj.id === childDiv.id + }) + if (result == null) + childDiv.innerHTML = ""; + }); + + //// THIS CODE ALSO WORKS AND IS WAY SIMPLER, I JUST MADE THINGS + //// 10 TIMES HARDER FOR MYSELF BECAUSE I LOVE PAIN POGGERS + // // (1) Clear list of broadcasts + // const fieldsContainer = document.getElementById('fieldsContainer'); + // fieldsContainer.innerHTML = ""; + + // // (2) For each broadcast in list, create new entry + // for (const broadcast of data.broadcastList) + // { + // AddBroadcast(broadcast); + // } + + // Count the number of YouTube broadcasts + // If this is 0, put a message to tell the user that they need to go live on YouTube first + // Else, hide that message + const youtubeBroadcastCount = data.broadcastList.reduce((count, broadcast) => count + (broadcast.platform === "youtube" ? 1 : 0), 0); + if (youtubeBroadcastCount <= 0) + SetElementVisibility("noYouTubeStreamsInstructions", true); + else + SetElementVisibility("noYouTubeStreamsInstructions", false); + + RefreshAnimation(); +} + +function AddBroadcast(broadcast) { + // Get a reference to the template + const template = document.getElementById('platformTemplate'); + + // Create a new instance of the template + const instance = template.content.cloneNode(true); + + // Assign ID to instance + const broadcastBox = instance.querySelector('.broadcastBox'); + broadcastBox.id = broadcast.id; + + // Modify the content of the template instance + const titleElement = instance.querySelector('.platformTitle'); + titleElement.value = broadcast.title; + + // Modify the content of the template instance + const buttonElement = instance.querySelector('.platformSubmitButton'); + buttonElement.classList.add(broadcast.platform); + + // Modify the icon of the template instance + const iconElement = instance.querySelector('#icon'); + + // Add button handling (need separate handling for Twitch/YouTube) + switch (broadcast.platform) { + case 'twitch': + iconElement.src = 'twitch.png'; + + buttonElement.addEventListener("click", function () { + sbUpdateTwitchTitle(ws, titleElement.value); + }); + break; + case 'youtube': + // Modify the icon of the template instance + iconElement.src = 'youtube.png'; + + buttonElement.addEventListener("click", function () { + const youtubeID = broadcast.id.replace('youtube-', ''); + sbUpdateYouTubeTitle(ws, titleElement.value, youtubeID); + }); + break; + } + + // Add click event + const iconButton = instance.querySelector('#platformIconButton'); + iconButton.addEventListener("click", function () { + window.open(broadcast.url); + }); + + // Insert the modified template instance into the DOM + const fieldsContainer = document.getElementById('fieldsContainer'); + fieldsContainer.appendChild(instance); +} + +function UpdateBroadcast(div, broadcast) { + // Modify the content of the template instance + const titleElement = div.querySelector('.platformTitle'); + titleElement.value = broadcast.title; +} + +connectws(); \ No newline at end of file diff --git a/multistream-title-updater/style.css b/.old/multistream-title-updater/style.css similarity index 100% rename from multistream-title-updater/style.css rename to .old/multistream-title-updater/style.css diff --git a/multistream-title-updater/twitch.png b/.old/multistream-title-updater/twitch.png similarity index 100% rename from multistream-title-updater/twitch.png rename to .old/multistream-title-updater/twitch.png diff --git a/multistream-title-updater/youtube.png b/.old/multistream-title-updater/youtube.png similarity index 100% rename from multistream-title-updater/youtube.png rename to .old/multistream-title-updater/youtube.png diff --git a/.templates/obs-dock/config.json b/.templates/obs-dock/config.json new file mode 100644 index 0000000..32ca26f --- /dev/null +++ b/.templates/obs-dock/config.json @@ -0,0 +1,6 @@ +{ + "title": "Widget", + "requiredSbActions": [ + ], + "sbImportCode": "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" +} \ No newline at end of file diff --git a/.templates/obs-dock/contents/index.html b/.templates/obs-dock/contents/index.html new file mode 100644 index 0000000..6b37cd3 --- /dev/null +++ b/.templates/obs-dock/contents/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.templates/obs-dock/contents/script.js b/.templates/obs-dock/contents/script.js new file mode 100644 index 0000000..9eb8555 --- /dev/null +++ b/.templates/obs-dock/contents/script.js @@ -0,0 +1,45 @@ +////////////////////// +// GLOBAL VARIABLES // +////////////////////// + +const sbAction = ''; + + + +///////////////////////// +// STREAMER.BOT EVENTS // +///////////////////////// + +window.parent.sbClient.on('General.Custom', (response) => { + console.debug(response.data); + CustomEvent(response.data); +}) + + + +///////////////// +// PRINTER BOT // +///////////////// + + + + +////////////////////// +// HELPER FUNCTIONS // +////////////////////// + + + + + +/////////////////////// +// PAGE INTERACTIONS // +/////////////////////// + + + + + +/////////////////// +// PAGE SETTINGS // +/////////////////// \ No newline at end of file diff --git a/.templates/obs-dock/contents/style.css b/.templates/obs-dock/contents/style.css new file mode 100644 index 0000000..9fa4a22 --- /dev/null +++ b/.templates/obs-dock/contents/style.css @@ -0,0 +1,3 @@ +body { + margin: 1em; +} \ No newline at end of file diff --git a/.templates/obs-dock/index.html b/.templates/obs-dock/index.html new file mode 100644 index 0000000..332b16c --- /dev/null +++ b/.templates/obs-dock/index.html @@ -0,0 +1,20 @@ + + + + + + nutty + + + + + + + + + \ No newline at end of file diff --git a/.templates/obs-dock/script.js b/.templates/obs-dock/script.js new file mode 100644 index 0000000..2668f87 --- /dev/null +++ b/.templates/obs-dock/script.js @@ -0,0 +1,16 @@ +// Construct URL +const currentURL = window.location.href; +let baseURL = currentURL; + +if (baseURL.endsWith("index.html")) + baseURL = baseURL.replace("index.html", ""); + +const configJson = "?config=" + baseURL + "config.json"; + +// Implement widget dock core +window.dockWrapper = document.getElementById('dock-wrapper'); +dockWrapper.src = `../../.common/core/widget-dock-core${configJson}`; + +dockWrapper.addEventListener('load', () => { + dockWrapper.contentWindow.content.src = baseURL + '/contents'; +}); \ No newline at end of file diff --git a/multistream-title-updater/config.json b/multistream-title-updater/config.json new file mode 100644 index 0000000..1f4cf89 --- /dev/null +++ b/multistream-title-updater/config.json @@ -0,0 +1,18 @@ +{ + "title": "Stream Info", + "requiredSbActions": [ + { + "id": "9486774d-d706-41d8-85b4-7daff5cd1b0d", + "name": "Multistream Title Updater | Fetch Broadcasts" + }, + { + "id": "1c58eff0-e98a-4fab-86f0-6f5cee1d3ab3", + "name": "Multistream Title Updater | Update Stream Info" + }, + { + "id": "14da1d44-6e29-4582-92c3-2c59388be57e", + "name": "Multistream Title Updater | Open Link" + } + ], + "sbImportCode": "U0JBRR+LCAAAAAAABADtXFtzo0iWfp+I+Q+Oep2RFyFhm4nYB4N1AcmqEpJAYt0PQGLAJJcWoNtM//c9mdwl2VW9XTXT0zsVoZJE3k6eW37n5JH//uc/3dx8CuzU+PS3m7+TL/A1NAIbvn56znDqJenWNoKbpZdi+2YVIyO1t5/+WvQ0stSNtqRvmKXpsXq+s7eJF4WkoXvL3DJVA7ITa+vFadHYnChSsvDRKlrCDOOyLfBCL8gCtZqTNJK2X2iPT0BSk3qDzpHAk//Jn9yUTbTZQ2Rhvv9wd3/fRx10z9x1+l300HngzH7nHhmvr5yFuiaDSuLosJ8zO6NMYYp/nSv/lf9aI+3QMLFNVk23md1qOVg4Q/ZwGwVj4HO0PX7c6YsdIi90oNOrgZNWr6+K7OYfN0M7tdwbYRsZyDKSNGlR6WyjLK4Eees4rVYD741jAgK6tvbWCFEUVKK7aLei0Mq2WztMr7WmW89xQLREXj81G5LMfLwU5Zk4W5tvkvyRttWU26820GXZF0vQZvFvLy+aB5vbJy8vz561jZLoNb2dDZYvL8MtLLqPtv5d/+Vl1wcl7zG9Lv/yEiRWtMWeeYsw/tSe8qfz9c1jaosRosSj9Sw2A8tZ9fAJjdT0856ZnD+b+rOdOTrgTU+JTZY7TX2EzUA9Gtrz/dM87loszvSj8FlfI4a0m6zOTP0Y3vvZcoQza5nMRIeZWGPVM0f4TRrNks16dpIGs/ligDN4lulzZmLD2uJa6G6CQ7w5Cp7J8ok0UPu6Nuui0SqazEk7mcuX511BmmLlaK8QRoPhUT863kabMYbGZwtt7k1FYYfWc8fqKUAnF0qj4Rsa4Z3pY3+yzOd4mkeyuIq/bIIY9jZ39LWOzVAZbNaKKz0xDuyxJw2q9qgc1+ynHWW34IusizIi4xp03NM1NJXVNY5RRkNmoybeJpR3G015Ax4wwJ8TKsYV6wlWKLv2womJLMS5T9ecHh+c+VphdK27R6LAmEch1GF/6hjFaDSLpJF8NNmhv2GHMJ8A8tN3dO018IjwbY5zWuZ4hVjMbFhXtVj1uNC4AOZiimeiFfCuPpq5wDdseY88lZHIlWPG+lo561PRKRfzT5as/DPIjGnTBHONOIyOQtU+Ef2CpnyPotboP0w8a3Rw0UjfWQHjrRcwXpQLOh2vXLPJS5BFXMpACpWesVbeDFEq9+016DahHfh2wBJmnC8L4Wk1cLKSlwqrMsraBV5zvq4pNZ8YmQOZRqjoN2+sra+lTF3PsEX0a8E9GaNhBvJM1BFmzNHqOg3BDPanhmZP5n4QHeON1sXv8OqExjKGdtUK9gV/554xVhhr/Hw3PfI91LOyco1pqLDTXvqOnnCUtmUwTPU1855sfHiPNjDOCpT31mz0mZ+tPWOsQHXNRTfdaJyrw3rSW26P4jxfbyK6k/laPm7Wfnxmo02+PxtAD/A7nvpDXxfdRtu80GXM53ZL5AO2JbpDewQ8HRM77zv6ItdXu9gn9UX+YaczCt6EajgR5Sezpya6KGQm8SsgR2lY6qPgtXmX26rklbaAqQ4sR3yojFQPaVakL7iZDv5yoyFc+qDX+dd9w4LFb8axud7cMYj+5HtkrLC9D9q/q570tSxTmkZpvGHT93zC1NBmW6KjZ/pX+clSLguf94xAfUNimxbQ90xfW07dfuFLzmxWgHNDCcBe0txeHj2D7vEdGw+wf72fv5u2+PKv8gdX6PjxPuHbfFNY2JuqHs3Cp8qiDPMre+sU7abgHdCR2xIdmAaADxb8PeUx0/DhI/U4xVSfnk0WxWb4/XxDLk/uzWSZHTnjdW2YVv7g7BxBdO9gn4BTCp5Suq/zKO/X1kM/mlTnMsYoUDM0UEBOQ5BXY63BIQa9Btr9bK4p/qR1/hX2vWYojfCMnGPOBPDNhlX3FJt4Ap60z+oLXyABFkPawYezdAf29I6d/1i/oml8VwUspy9aa55yPEV58FD1WTX5AzgvePiLNMYtn5FjoMqv6OA7V0iTMdH1JeAo8JuAAVS/OcY6tvGRHvBEB8C/PkYfrO3YLfxC/GH/7Fl+PpzJ4VdhmobefCuu4WDPDNnzezpsaPPKJuxem39TsOvXxTfhHA4NmvRzK+Btoi+vr6mP1NOmJ8fFuZevPz5fG3SNnR2NtUAx7zv2De8K1ln+aC9yX3Imh2wO9qBraGeF+HMTs4Ddn+/H1XvP12nBtO0dPghAow5Y3X9nbNX+W/xhJcfCJxLMdM5zWR//Jj8IuE31De0hs0HPEbXD3A8iOO907WF3XT/4BPaHS19JY6IfjZ/yeckZtyTnlTRWwOcIPo2vxspOGiPAS7MdYAyMxs/OBNqN9bNDXoh1sRWsHDRysTQUdgarpgR7bdZgI3B+GVqXnJN+Yaf5GcmqnsXyb8YZJlnAGqbnNvz2IFNH/BLwL4lzo8milDmd6wgxTtcK+g60d3PbIPuJyZ7++yKYj7e2FQWxh+0raYYiHYCN4yI1ttcSEXnOwdjZip1kOF1GqrH1SObmo76tXpf5hTzX1L3roS7fNTuWwVidPsPedwzmvtex2V6XYe94hrGsi6F723NcQidzy5y3pceYrMeTfxdcMEiiRULtHFrV/G4yKqc3RPaBrNl8/kv95ad2WgdjI05sNCKpozx/Uzb/UnW8TL11Le7Bfn1lOjb/YHT6r4bZebiDr3evnGXbXdQzzN6/JvV2kZv6frm3/NPNIm+Vwtfoj5Z9u6Zt7fzbtR4/PAP31+8z5+KYpHbwA2ac2entOE3jHzC1GG3td6a9fXmZ2fsUpEtmk5Mo/AHrg8KmXmDfLmxwkdg7GUQP3ieonl2w8O1jcgwtKQTreTVAO94fViy2dMGyiIXeLo3ET24Hh9QOyX3BNwy1D+ntILQiMjy51ez3NKceotiv2Kbmcftspwa5gfiBDCzGl19/r4nlUD1RMDOccSTwMRcc9J9nCwKYnq62rwya+FIILQAEhiej11pvaZOAUGOgTe2jp29PXkvioyONcyCJRiuSfIZ3GJOvtzODAycNXAaNhScYBwBr7mzYQ0ySw3UCuNU+Ez2YUxQIQHHo/OQ1BNo1lSa4AdSvAAzhVU9wTY8bARhLV6wKgJDzIUg6PIt+OQdPZECATr0XeWeye0dZuyADldEXTkza84RQAarGMkeTPGuZJLb25giAOgRb5kJKpBEAUFE4FUDKaQQ2JRA8FQlbAHd18uYsuCIgDUMQ5JqjvffZycFomeivEmxnyX6UJy8uE/3jPOCpk1DvXBZUAYd/5bKgTsJMissLSlMJZluJdxpYnq01g3UAyGtcpmuHPMhauEz+XiW9ZVGFfmVicNBY8xvWL4L+OtFP2ld1Yg50gCkSPFHBqyq5BjyHORTarw68/KjBk7jUFdp/8bAD+8Eg6yo4P983DeKfDlV7C4CTBNXpeqBN9D7nGd4hVeluApVcMsxAf4G/JKhvjTkVAXa17o8J/JuyrOgiPDuT5f4ikF1o85rPRbInDyZV1ziVgTb0ZVfNS4q7ktd2LaNr9lese2l7V2R8bXwjEL+c41z+H9Gx0dBJ8vYOCXilMQmOqe+kz38fNpPPTZJY6oAfLE+RA74+tL5VNgFJfif/Nv7on+EPvk2nwV7WxF5W/zTenSeqLvnXTlJ9X1l8tC/Qt+M1WyXPGzqdy2llhZj4PsEKrKiZsLrkS9X2NTttJm5kXbxi8y0/Pb/w+1d84AxeLr3MbvjBMxkkDRqTJs+m7QswoOmCD9UZckVnk1YCdlBf5p/butKm52qfhq5/3V8U/K3OGOqHqj1GFvATBcM3G3hxjacf2U4z6Q7PGbSWM9D9I9LyyxnSTt4JbcAT1wrAhw7wWBlIDjn/pBFyTW1VngHOJhiedG3ukIQZYl2XJO8NeE4vQsjFQCh00WOr2II1WezTM/6ab639+3GzRjIdL/qO/XGBwon4JZrAa8hfGhd4HLA1KZQwx/7HNM4xvcQuChXC+nN1YUB0srrUUthhCudGk07Cw4rGhbZxDKBLH2Hf9BCcXSD/IAF9neHNWiYXtLLCKGJ+AYwDSXRba5JLS6QdkslCKPFrdZFa+7n6siUf53gay3XRWOGmAQrXC0GAz9ik/oj6uR3IEJc8WKzQYO4JGVlXInjaE4oCDCeben2v1nlc2TEd4xM9UGkCneAq4gfOn0/GsosYiJ3GKkMKBIi/QewwJpd1gK0yMmYVqCfYY7NAo7zQaFx20zMcHsqmGYLOjv1MZxGSBvoOkWRvoZNUP0udeoocmyF6K1OZlgUDjf1QvhG7n4NOmAGHzQGdJ7rYRzmmtKn3LuvXeUxTxxuXe5BwmsGZxdgLLtS7gEdZvmuOwH4CnmAbIpeS/02MdCeJkjM5CtgWLy/SGonkUk/4+gKQfib9iuT48EjmLuQOMRLYNdVjofCvgkdiJB3OAdMTeqDrTJFM75ILYIKniDxbsd1Y3xngAwgvKTZgfjf2fI4zHOOMviom8GkBArXvGrd+V9ventPyZQlxeKgmZs0PGWyM+9U6VPJulOPi8vKU8q/w3WZAZUzlneO3Pti31DgvKjlRuqlvW3HUrsAPEds9fx5ZwbAHPmcPeCEm+RTAIr2NhvPCjNzeF6CrXXM8bxRq+O/5Lf98X0oAthHMS/2saT99m23nRSYU69f6ODgbV+H98iKJ5AgUGuMpa/dNL3Ac0bkyXqviphxDkIIDWsQyufBPrQv0UwM717HRMnIk73FL5p/6XWz1Zq7ONvDyWsZorB7Nt7YPouc4/QzvJGaGeEYH/Wqf1bmdlP6R6sD8MncE9s6ZwbND81OnQ+nn/yINiEzP+eVW54DBqhyCPeh13qedOxIJXajt03oyBvyWga665vi5GJe/mgWUG1Y9WV2FXMZlddxe4gVeAD2J1BG/1bV+e83a37zleS2C+y6KC5+qNpJza9BwSX/XNfJc3dsGzmIJbAp8TWsMYLGjRGQk0gv2+qKWHe6NBRfrrOKVl7QzkadnvJUXCNVrjWaJoQFfRG6gayAXOBPhbDwgDc7HgUtyetgKn7M5ewD/UhQ+NWgoc3vkklwPhmBzxPaGXZ3gwpEKGFg9WkdO0EdzUthRrNWVFYrTi+8lxv0/zzvsgs8BP4jvQL+L+OjRl3yZ+ETim+9BH9/I+ZXLjuOLopGaD4+FftKXwMJeHavig7zTweeXxVyrQl/gDAV9IvsBHxLoQO/Bt445pplSuRzezJ5OigdjUxuGusrHIHfHKvHtcO/ZbIrtNfHhCr8WpXuSb1A0ctld5G5VZfRZ3EOsPtxbI8Cx4MeJX5iyNEfsnfMt1wnYcw/O0XBGMRKcJS45MyqeYoEUFAlWD2ebowvn9z6hY9YquTwXYW3ufF7gxcka8RnEvxnQdwL8jlc9tbCXGbMhOICZ7XRSxLz8QLfHugvyANww25N8t76qeOtSjCY22hbcE7wzOc00vyyQtaidMcOTDXwq8Nv5/D9bIJtVTTOZv7z4z1aj4RGeRfWe1Kt7bs1bF0kT+SWkEEbXlHGJQ+l5embTlV+58GW0qAbw1/4jHSR5ZNgzxXtUH4vzKDYv9xe3edCmI7dzigVKH5opYEvgV04T6qNVUwro2eqtlw9nhQP7hr/dN3U/tYCPxpoUHnBfQH+h/zBZaCgjdAPeAPn5bbrEa766wa8rfJ3UfI/p/pdX9pbPW8eb5+1jpvWsiDUveAP2S+5psJ7j8QZOegzkS55nFEOHc+eL97ifzFuyu7ZHgoP3BItBvBNbIZyP1E7VBLXk/m28MEjBB67tXDsJ6PO+RUOOvxv7NgA7Ai7G5kh9I4UleRz56Fbx3q/aQ+NsXwg7HTC9sZZPhf0S7HUph2t2cE6Pmnj5nDL6cuRWZmnvRyeWnh7+C8451QxS0DGUkTsiWvj1llzIt7EPbMIaX7WPwTmmmnvL4KGBAdVMpzYpQUyE7iubGDPZxVkyzvFRg4aLWHlV5EBIDqOIifKiMO/Rk8TkIta94o/zHMo5T6t+Ai3o+f0V81wrVsjrVx56D33+gel1mDt03+nz8Mns91CHu7837l/Rq23w3P+ncp4+Mrqo3+/c2Szf6XMPbIdnrV6HtTi+9/Bg2ty9/Uf7Jd3n2A5vpl7o/9GKeL72E7r/lPD8p4TnPyU8v9MSHiXeUFhLfvM4O13tg2WAgqRkZZXBEc/oa3lnDWcQOusxCZHyK6d4jzQZQt5nEoq5Vu+ZphegPzzjAKLERaoP1/0CfmeKwtAmEGmt4AlJeTi4DTcG167WSPh55VpuLScfhzn8HsItUpcdVX2dj2qGKb3AAxKWPkP4CSGuKHyxICxWyfg6LULCzCocsNtQNb9eaNDUbs9fNF3bA772ntNGGQ6EWSqExvzxGoymkHdYykal0M4KSF01+S0KJ1sMv1zVc0XL7mxel/9wa5CLD1DzNFn4V8KKd0ORuRXwNN0wxSQ0lplJ/huK6jmEUa4VKjnUpKkC37GPAvmt09IYQchR/yaYhK7AHxUDrIw/X+FLG+7mLwhlTiRU1L3HaBXStFeqr0gaF/alFSkEH5/a+3W/rLp1CdPUP8QQ/vR/895Fua+PrNTsART3QCfz/V4JL2jIcv6MwvciRFsgsC2jvKoCGot0T7ZYz1q0TwYtuWawz8132MeO6DVJ0Vyzo/dCzcacH6Z4Pw69hKe8PPCAp6BJBvgCUh6oLxxPCYYxhFB+fsVG7LfvqKr8XIYS+hpCDw3CVnYYFmnnK/T++4ULPNPnjHv7tWPf96xO3+K7HR517Y55x/XvLavHddH9Hy1cyD+U/XPE30KnMDwIAPO2H+5tM4ks304BbuzO8GzdKGIP9thuJIfqtiai+MMg9V8hYXv5E/sQR9vURiQGKP84STfn/uWfGcn/dEnHwLFrQK8//+mX/wV+ZUzPLkUAAA==" +} \ No newline at end of file diff --git a/multistream-title-updater/contents/icons/platforms/kick.png b/multistream-title-updater/contents/icons/platforms/kick.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc9afaedddcf0f850be6412b56b69af9fd90ac2 GIT binary patch literal 1169 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 literal 0 HcmV?d00001 diff --git a/multistream-title-updater/contents/icons/platforms/patreon.png b/multistream-title-updater/contents/icons/platforms/patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..22c97486cbf001513caccbc6c91286c4656e284f GIT binary patch literal 13276 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

hD0H+2U*svw=4}=xXV9nSWwRK?`m4_P73zR zDoM|J=erCsHs)mgh_*E0zp`LXA0oasny!a~VHmF@C#$q+#cXVr;U7rJgyh5<7PHZ- z2Z**Ne12-1BTH)mkor)(l2I~LUx2AtwZt`|BqgyV)hf9t6-Y4{85o)98d&HWS%esxSs58xnHp&u7+4t?tnLtb fhN2-iKP5A*61Rq1SJy-VH86O(`njxgN@xNASjSp) literal 0 HcmV?d00001 diff --git a/multistream-title-updater/contents/icons/platforms/tipeeeStream.png b/multistream-title-updater/contents/icons/platforms/tipeeeStream.png new file mode 100644 index 0000000000000000000000000000000000000000..cd981f3d4c4af44270391e30a76f97b3359223a4 GIT binary patch literal 12366 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 literal 0 HcmV?d00001 diff --git a/multistream-title-updater/contents/icons/platforms/twitch.png b/multistream-title-updater/contents/icons/platforms/twitch.png new file mode 100644 index 0000000000000000000000000000000000000000..dcbd6c8480cbd2c59526bb3ef0a4b460308160f3 GIT binary patch literal 4015 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 Q-%<~M%IajrUmn;0A5D{si2wiq literal 0 HcmV?d00001 diff --git a/multistream-title-updater/contents/index.html b/multistream-title-updater/contents/index.html new file mode 100644 index 0000000..1c73238 --- /dev/null +++ b/multistream-title-updater/contents/index.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + +

+
+ + + + +
+ + +
+ + + + +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/multistream-title-updater/contents/script.js b/multistream-title-updater/contents/script.js new file mode 100644 index 0000000..fc18d15 --- /dev/null +++ b/multistream-title-updater/contents/script.js @@ -0,0 +1,308 @@ +////////////////////// +// GLOBAL VARIABLES // +////////////////////// + +const sbActionFetchBroadcasts = '9486774d-d706-41d8-85b4-7daff5cd1b0d'; +const sbActionUpdateStreamInfo = '1c58eff0-e98a-4fab-86f0-6f5cee1d3ab3'; +const sbActionOpenUrl = '14da1d44-6e29-4582-92c3-2c59388be57e'; + +let currentBroadcastId = ''; + + +/////////////////// +// PAGE ELEMENTS // +/////////////////// + +const blurLayer = document.getElementById('blur-layer'); +const updateAllDialog = document.getElementById('update-all-dialog'); +const updateTwitchDialog = document.getElementById('update-twitch-dialog'); +const updateKickDialog = document.getElementById('update-kick-dialog'); +const updateYouTubeDialog = document.getElementById('update-youtube-dialog'); +const broadcastList = document.getElementById('broadcast-list'); +const youtubeWarning = document.getElementById('youtube-warning'); + + + +///////////////////////// +// STREAMER.BOT EVENTS // +///////////////////////// + +window.addEventListener("message", (event) => { + FetchBroadcasts(); +}); + +window.parent.sbClient.on('General.Custom', (response) => { + GeneralCustom(response.data); +}) + + + +/////////////////////////////// +// MULTISTREAM TITLE UPDATER // +/////////////////////////////// + +async function GeneralCustom(data) { + switch(data.actionId) { + case sbActionFetchBroadcasts: + { + // Iterate through list of broadcasts and add it to the list + for (const broadcast of data.broadcastList) + await AddBroadcast(broadcast); + + // Check if YouTube account is connected + // If yes, count how many YouTube broadcasts there were + // If 0, show warning + const broadcasterInfo = await window.parent.sbClient.getBroadcaster(); + if (broadcasterInfo.platforms.youtube) + { + const ytBroadcastCount = data.broadcastList.filter(b => b.platform === "youtube").length; + if (ytBroadcastCount <= 0) + youtubeWarning.style.display = 'inline'; + else + youtubeWarning.style.display = 'none'; + } + else + youtubeWarning.style.display = 'none'; + + // Check if any broadcasts have gone offline + // If so, delete them from the list + const childDivs = broadcastList.querySelectorAll(":scope > div"); + childDivs.forEach(childDiv => { + var result = data.broadcastList.find(obj => { + return obj.id === childDiv.id + }) + if (result == null) + childDiv.remove(); + }); + } + break; + } +} + +async function FetchBroadcasts() { + // Fetch from Streamer.bot + await window.parent.sbClient.doAction({ id: sbActionFetchBroadcasts}); +} + +async function AddBroadcast(data) { + // Get a reference to the template + const template = document.getElementById('broadcast-template'); + + const existingDiv = broadcastList.querySelector(`#${data.id}`); + + // Create a new instance of the template + const instance = existingDiv ? existingDiv : template.content.cloneNode(true); + + // Get divs + const broadcastEl = instance.querySelector('.broadcast'); + const platformIconEl = instance.querySelector('#platform-icon'); + const titleEl = instance.querySelector('#broadcast-title'); + const categoryEl = instance.querySelector('#broadcast-category'); + const kickWarningEl = instance.querySelector('#kick-warning'); + const streamButtonEl = instance.querySelector('#broadcast-stream-button'); + const dashboardButtonEl = instance.querySelector('#broadcast-dashboard-button'); + const editButtonEl = instance.querySelector('#broadcast-edit-button'); + + // Set properties + if (!existingDiv) + broadcastEl.id = data.id; + + // Set the platform icon + platformIconEl.src = `icons/platforms/${data.platform}.png`; + + // Set the stream title + if (data.title) + titleEl.textContent = data.title; + + // Set the stream category + if (data.category) + categoryEl.textContent = data.category; + + // Streamer.bot does not provide title/category for Kick, so pull from API + if (data.platform == 'kick') + { + let response = await fetch('https://kick.com/api/v1/channels/' + data.userLogin); + let response_data = await response.json(); + + // The current title is only provided if the stream if currently live + if (response_data.livestream) + { + titleEl.textContent = response_data.livestream.session_title; + categoryEl.textContent = response_data.livestream.categories[0].name; + kickWarningEl.style.display = 'none'; + } + else if (response_data.previous_livestreams) + { + titleEl.textContent = response_data.previous_livestreams[0].session_title; + categoryEl.textContent = response_data.previous_livestreams[0].categories[0].name; + kickWarningEl.style.display = 'inline'; + } + else + { + kickWarningEl.style.display = 'inline'; + } + } + + streamButtonEl.onclick = function() { + //window.open(data.streamUrl, '_blank'); + OpenURL(data.streamUrl); + }; + + dashboardButtonEl.onclick = function() { + //window.open(data.dashboardUrl, '_blank'); + OpenURL(data.dashboardUrl); + }; + + editButtonEl.onclick = function() { + switch (data.platform) { + case 'twitch': + document.getElementById('update-twitch-title-input').value = titleEl.textContent; + document.getElementById('update-twitch-category-input').value = categoryEl.textContent; + updateTwitchDialog.style.display = "flex"; + break; + case 'kick': + document.getElementById('update-kick-title-input').value = titleEl.textContent; + document.getElementById('update-kick-category-input').value = categoryEl.textContent; + updateKickDialog.style.display = "flex"; + break; + case 'youtube': + currentBroadcastId = broadcastEl.id; + document.getElementById('update-youtube-title-input').value = data.title; + document.getElementById('update-youtube-description-input').value = data.description; + document.getElementById('update-youtube-category-input').value = data.category; + document.getElementById('update-youtube-privacy-select').value = data.privacy; + updateYouTubeDialog.style.display = "flex"; + break; + } + blurLayer.style.display = "block"; + }; + + if (!existingDiv) + broadcastList.appendChild(instance); +} + + + + +////////////////////// +// HELPER FUNCTIONS // +////////////////////// + +async function OpenURL(url) { + await window.parent.sbClient.doAction( + action = { + id: sbActionOpenUrl + }, + args = { + url: url + } + ); +} + + + + + +/////////////////////// +// PAGE INTERACTIONS // +/////////////////////// + +function OpenUpdateAllDialog() { + updateAllDialog.style.display = "flex"; + blurLayer.style.display = "block"; +} + +function CloseUpdateAllDialog() { + updateAllDialog.style.display = "none"; + blurLayer.style.display = "none"; +} + +function CloseUpdateTwitchDialog() { + updateTwitchDialog.style.display = "none"; + blurLayer.style.display = "none"; +} + +function CloseUpdateKickDialog() { + updateKickDialog.style.display = "none"; + blurLayer.style.display = "none"; +} + +function CloseUpdateYouTubeDialog() { + updateYouTubeDialog.style.display = "none"; + blurLayer.style.display = "none"; +} + +async function UpdateAllSubmit() { + await window.parent.sbClient.doAction( + action = { + id: sbActionUpdateStreamInfo + }, + args = { + platform: 'all', + title: document.getElementById('update-all-title-input').value, + category: document.getElementById('update-all-category-input').value + } + ); + + CloseUpdateAllDialog(); +} + +async function UpdateTwitchSubmit() { + await window.parent.sbClient.doAction( + action = { + id: sbActionUpdateStreamInfo + }, + args = { + platform: 'twitch', + title: document.getElementById('update-twitch-title-input').value, + category: document.getElementById('update-twitch-category-input').value, + tags: document.getElementById('update-twitch-tags-input').value + } + ); + + CloseUpdateTwitchDialog(); +} + +async function UpdateKickSubmit() { + await window.parent.sbClient.doAction( + action = { + id: sbActionUpdateStreamInfo + }, + args = { + platform: 'kick', + title: document.getElementById('update-kick-title-input').value, + category: document.getElementById('update-kick-category-input').value + } + ); + + CloseUpdateKickDialog(); +} + +async function UpdateYouTubeSubmit() { + await window.parent.sbClient.doAction( + action = { + id: sbActionUpdateStreamInfo + }, + args = { + platform: 'youtube', + title: document.getElementById('update-youtube-title-input').value, + description: document.getElementById('update-youtube-description-input').value, + category: document.getElementById('update-youtube-category-input').value, + tags: document.getElementById('update-youtube-tags-input').value, + privacy: document.getElementById('update-youtube-privacy-select').value, + broadcastId: currentBroadcastId + } + ); + + CloseUpdateYouTubeDialog(); +} + + + + + +//////////////////////////// +// REFRESH BROADCAST LIST // +//////////////////////////// + +setInterval(FetchBroadcasts, 5000); \ No newline at end of file diff --git a/multistream-title-updater/contents/style.css b/multistream-title-updater/contents/style.css new file mode 100644 index 0000000..95affc9 --- /dev/null +++ b/multistream-title-updater/contents/style.css @@ -0,0 +1,78 @@ +body { + display: flex; + flex-direction: column; + gap: 1em; + margin: 1em; +} + +button { + gap: 0.5em; +} + +#broadcast-list { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.broadcast { + background-color: var(--dialog-background); + border: 1px solid #40404080; + border-radius: 0.5em; + padding: 0.2em 0.5em; + + display: flex; + flex-direction: row; + align-items: center; + gap: 1em; +} + +.broadcast-info { + display: flex; + flex-direction: column; +} + +#broadcast-buttons { + display: flex; + flex-direction: row; + align-items: center; + /* gap: 1em; */ + margin-left: auto; +} + +.platform-icon { + height: 2em; +} + +.button-icon { + height: 1em; +} + +.flip-that-shit-homie { + /* Flip that bad boy */ + transform: scaleX(-1); +} + +.blur { + display: none; +} + +.dialog { + display: none; + width: 90%; + max-height: 80%; + overflow-y: auto; +} + +.setting-attribute { + color: yellow; +} + +#kick-warning { + display: none; +} + +#youtube-warning { + display: none; + text-align: center; +} \ No newline at end of file diff --git a/multistream-title-updater/index.html b/multistream-title-updater/index.html index 4c088ec..332b16c 100644 --- a/multistream-title-updater/index.html +++ b/multistream-title-updater/index.html @@ -1,81 +1,20 @@ - - - - - + + + + nutty + -
Refreshed
- -
- - -
- - -
- -
-
Update Titles
- - -
- -
- -
-
-

-
- - -
-
- -
- -
-
- - - -
- - - -
+ + - - \ No newline at end of file + \ No newline at end of file diff --git a/multistream-title-updater/script.js b/multistream-title-updater/script.js index 72ec198..2668f87 100644 --- a/multistream-title-updater/script.js +++ b/multistream-title-updater/script.js @@ -1,444 +1,16 @@ -//////////// -// FIELDS // -//////////// +// Construct URL +const currentURL = window.location.href; +let baseURL = currentURL; -let sbDebugMode = true; +if (baseURL.endsWith("index.html")) + baseURL = baseURL.replace("index.html", ""); -const queryString = window.location.search; -const urlParams = new URLSearchParams(queryString); +const configJson = "?config=" + baseURL + "config.json"; -const sbServerPort = urlParams.get("port") || 8080; -const sbServerAddress = urlParams.get("server") || "127.0.0.1"; +// Implement widget dock core +window.dockWrapper = document.getElementById('dock-wrapper'); +dockWrapper.src = `../../.common/core/widget-dock-core${configJson}`; -///////////////// -// GLOBAL VARS // -///////////////// - -let ws; - -/////////////////////////////////// -// SRTEAMER.BOT WEBSOCKET SERVER // -/////////////////////////////////// - -// This is the main function that connects to the Streamer.bot websocke server -function connectws() { - if ("WebSocket" in window) { - ws = new WebSocket("ws://" + sbServerAddress + ":" + sbServerPort + "/"); - - // Reconnect - ws.onclose = function () { - SetConnectionStatus(false); - setTimeout(connectws, 5000); - }; - - // Connect - ws.onopen = async function () { - SetConnectionStatus(true); - - console.log("Subscribe to events"); - ws.send( - JSON.stringify({ - request: "Subscribe", - id: "subscribe-events-id", - // This is the list of Streamer.bot websocket events to subscribe to - // See full list of events here: - // https://docs.streamer.bot/api/servers/websocket/requests - events: { - twitch: [ - "StreamUpdate" - ], - youTube: [ - "BroadcastStarted", - "BroadcastEnded", - "BroadcastUpdated" - ], - general: [ - "Custom" - ] - } - }) - ); - - sbGetActions(ws); - - ws.onmessage = function (event) { - // Grab message and parse JSON - const msg = event.data; - const wsdata = JSON.parse(msg); - - // Check if the user installed all the required Streamer.bot actions - if (wsdata.id == "GetActions") { - - // Check if all the required SB action exist - ReadLinesFromFile('requiredActions.txt') - .then(requiredActions => { - if (sbCheckRequiredActions(wsdata.actions, requiredActions)) { - SetElementVisibility("missingActionsInstructions", false); - sbFetchBroadcasts(ws); - } - else - SetElementVisibility("missingActionsInstructions", true); - }) - } - - if (typeof wsdata.event == "undefined") { - return; - } - - // Print data to log for debugging purposes - if (sbDebugMode) { - console.log(wsdata.data); - console.log(wsdata.event.source); - console.log(wsdata.event.type); - } - - // Check for events to trigger - // See documentation for all events here: - // https://wiki.streamer.bot/en/Servers-Clients/WebSocket-Server/Events - switch (wsdata.event.source) { - // Twitch Events - case 'Twitch': - switch (wsdata.event.type) { - case ('StreamUpdate'): - sbFetchBroadcasts(ws); - break; - } - // Twitch Events - case 'YouTube': - switch (wsdata.event.type) { - case ('BroadcastStarted'): - case ('BroadcastEnded'): - case ('BroadcastUpdated'): - sbFetchBroadcasts(ws); - break; - } - // General Events - case 'General': - switch (wsdata.event.type) { - case ('Custom'): - switch (wsdata.data.action) { - case ('[NUT] Multistream Title Updater | Fetch Broadcasts'): - UpdateBroadcastList(wsdata.data); - break; - } - break; - } - break; - - } - }; - } - } -} - - - -///////////////////////// -// STREAMER.BOT WIDGET // -///////////////////////// - -function sbGetActions(ws) { - - let request = JSON.stringify({ - request: "GetActions", - id: "GetActions" - }); - - ws.send(request); -} - -// Check if all the entries in targetActionNames exist in actionList -function sbCheckRequiredActions(actionList, targetActionNames) { - let foundActions = 0; - for (targetActionName of targetActionNames) { - if (actionList.some(action => action.name === targetActionName)) - foundActions++; - } - - return foundActions == targetActionNames.length -} - -function sbFetchBroadcasts(ws) { - - let request = JSON.stringify({ - request: "DoAction", - id: generateUUID(), - action: { - name: "[NUT] Multistream Title Updater | Fetch Broadcasts" - } - }); - - ws.send(request); -} - -function sbUpdateTitles(ws, title) { - let request = JSON.stringify({ - request: "DoAction", - id: generateUUID(), - action: { - name: "[NUT] Multistream Title Updater | Update All Broadcasts" - }, - args: { - title: title - } - - }); - - ws.send(request); -} - -function sbUpdateTwitchTitle(ws, title) { - let request = JSON.stringify({ - request: "DoAction", - id: generateUUID(), - action: { - name: "[NUT] Multistream Title Updater | Update Twitch Title" - }, - args: { - title: title - } - - }); - - ws.send(request); -} - -function sbUpdateYouTubeTitle(ws, title, broadcastId) { - let request = JSON.stringify({ - request: "DoAction", - id: generateUUID(), - action: { - name: "[NUT] Multistream Title Updater | Update YouTube Title" - }, - args: { - broadcastId: broadcastId, - title: title - } - - }); - - ws.send(request); -} - - -////////////////////// -// HELPER FUNCTIONS // -////////////////////// - -function generateUUID() { // Public Domain/MIT - var d = new Date().getTime();//Timestamp - var d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16;//random number between 0 and 16 - if (d > 0) {//Use timestamp until depleted - r = (d + r) % 16 | 0; - d = Math.floor(d / 16); - } else {//Use microseconds since page-load if supported - r = (d2 + r) % 16 | 0; - d2 = Math.floor(d2 / 16); - } - return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); - }); -} - -function IsNullOrWhitespace(str) { - return /^\s*$/.test(str); -} - -function SetElementVisibility(elementID, visibility) { - let element = document.getElementById(elementID); - if (visibility) - element.style.display = 'inline'; - else - element.style.display = 'none'; -} - -function ReadLinesFromFile(filePath) { - return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); - request.open('GET', filePath, true); - request.onload = function () { - if (request.status === 200) { - resolve(request.responseText.split(/\r?\n/)); - } else { - reject(new Error(`File loading failed with status: ${request.status}`)); - } - }; - request.onerror = function () { - reject(new Error('Network error occurred during file loading.')); - }; - request.send(); - }); -} - - - -/////////////////////////////////// -// STREAMER.BOT WEBSOCKET STATUS // -/////////////////////////////////// - -// This function sets the visibility of the Streamer.bot status label on the overlay -function SetConnectionStatus(connected) { - let connectionStatusIcon = document.getElementById("connectionStatusIcon"); - let ThisIsWhereAllTheCoolStuffHappens = document.getElementById("ThisIsWhereAllTheCoolStuffHappens"); - - if (connected) { - connectionStatusIcon.src = "connected.svg"; - ThisIsWhereAllTheCoolStuffHappens.classList.remove('disabled'); - SetElementVisibility("infoIcon", false); - SetElementVisibility("streamerbotConnectInstructions", false); - } - else { - connectionStatusIcon.src = "disconnected.svg"; - ThisIsWhereAllTheCoolStuffHappens.classList.add('disabled'); - SetElementVisibility("infoIcon", true); - SetElementVisibility("streamerbotConnectInstructions", true); - - // (1) Clear list of broadcasts - const fieldsContainer = document.getElementById('fieldsContainer'); - fieldsContainer.innerHTML = ""; - } -} - -// This function sets the visibility of the Streamer.bot status label on the overlay -function RefreshAnimation() { - let refreshContainer = document.getElementById("refreshContainer"); - refreshContainer.style.opacity = 1; - var tl = new TimelineMax(); - tl - .to(refreshContainer, 2, { opacity: 0, ease: Linear.easeNone }) -} - - - -// Button handling for UPDATE ALL button only -const infoIcon = document.querySelector("#infoIcon"); -infoIcon.addEventListener("click", function () { - window.open("https://www.notion.so/nutty-s-multistream-title-updater-e2fb7b24c7514f9cbd943729f54be1d9"); -}); - -// Button handling for UPDATE ALL button only -const submitButton = document.querySelector("#submitButton"); -submitButton.addEventListener("click", function () { - const titleInput = document.querySelector("#titleInput").value; - sbUpdateTitles(ws, titleInput); -}); - -// Button handling for REFRESH button only -const refreshButton = document.querySelector("#refreshButton"); -refreshButton.addEventListener("click", function () { - sbFetchBroadcasts(ws); -}); - - -function UpdateBroadcastList(data) { - // Iterate through broadcast list - // Find div whose ID matches the broadcast - // If it exists, update the title - // else, it's a new broadcast, so add it to the list - const fieldsContainer = document.getElementById('fieldsContainer'); - for (const broadcast of data.broadcastList) { - const broadcastDiv = fieldsContainer.querySelector(`#${broadcast.id}`); - - if (broadcastDiv == null) - AddBroadcast(broadcast); - else - UpdateBroadcast(broadcastDiv, broadcast); - } - - // Check if any broadcasts have gone offline - // If so, delete them from the list - var parentDiv = document.getElementById('fieldsContainer'); - const childDivs = parentDiv.querySelectorAll("div"); - childDivs.forEach(childDiv => { - var result = data.broadcastList.find(obj => { - return obj.id === childDiv.id - }) - if (result == null) - childDiv.innerHTML = ""; - }); - - //// THIS CODE ALSO WORKS AND IS WAY SIMPLER, I JUST MADE THINGS - //// 10 TIMES HARDER FOR MYSELF BECAUSE I LOVE PAIN POGGERS - // // (1) Clear list of broadcasts - // const fieldsContainer = document.getElementById('fieldsContainer'); - // fieldsContainer.innerHTML = ""; - - // // (2) For each broadcast in list, create new entry - // for (const broadcast of data.broadcastList) - // { - // AddBroadcast(broadcast); - // } - - // Count the number of YouTube broadcasts - // If this is 0, put a message to tell the user that they need to go live on YouTube first - // Else, hide that message - const youtubeBroadcastCount = data.broadcastList.reduce((count, broadcast) => count + (broadcast.platform === "youtube" ? 1 : 0), 0); - if (youtubeBroadcastCount <= 0) - SetElementVisibility("noYouTubeStreamsInstructions", true); - else - SetElementVisibility("noYouTubeStreamsInstructions", false); - - RefreshAnimation(); -} - -function AddBroadcast(broadcast) { - // Get a reference to the template - const template = document.getElementById('platformTemplate'); - - // Create a new instance of the template - const instance = template.content.cloneNode(true); - - // Assign ID to instance - const broadcastBox = instance.querySelector('.broadcastBox'); - broadcastBox.id = broadcast.id; - - // Modify the content of the template instance - const titleElement = instance.querySelector('.platformTitle'); - titleElement.value = broadcast.title; - - // Modify the content of the template instance - const buttonElement = instance.querySelector('.platformSubmitButton'); - buttonElement.classList.add(broadcast.platform); - - // Modify the icon of the template instance - const iconElement = instance.querySelector('#icon'); - - // Add button handling (need separate handling for Twitch/YouTube) - switch (broadcast.platform) { - case 'twitch': - iconElement.src = 'twitch.png'; - - buttonElement.addEventListener("click", function () { - sbUpdateTwitchTitle(ws, titleElement.value); - }); - break; - case 'youtube': - // Modify the icon of the template instance - iconElement.src = 'youtube.png'; - - buttonElement.addEventListener("click", function () { - const youtubeID = broadcast.id.replace('youtube-', ''); - sbUpdateYouTubeTitle(ws, titleElement.value, youtubeID); - }); - break; - } - - // Add click event - const iconButton = instance.querySelector('#platformIconButton'); - iconButton.addEventListener("click", function () { - window.open(broadcast.url); - }); - - // Insert the modified template instance into the DOM - const fieldsContainer = document.getElementById('fieldsContainer'); - fieldsContainer.appendChild(instance); -} - -function UpdateBroadcast(div, broadcast) { - // Modify the content of the template instance - const titleElement = div.querySelector('.platformTitle'); - titleElement.value = broadcast.title; -} - -connectws(); \ No newline at end of file +dockWrapper.addEventListener('load', () => { + dockWrapper.contentWindow.content.src = baseURL + '/contents'; +}); \ No newline at end of file diff --git a/printer-bot/contents/index.html b/printer-bot/contents/index.html index f9ff25b..741461d 100644 --- a/printer-bot/contents/index.html +++ b/printer-bot/contents/index.html @@ -67,7 +67,7 @@