From 6c192784c4f19c57e47269d85efef22fce4486eb Mon Sep 17 00:00:00 2001 From: Khyretos Date: Sun, 6 Aug 2023 11:25:21 +0200 Subject: [PATCH] big release, fixed multiple functionalities. --- .vscode/settings.json | 3 + forge.config.js | 1 - package.json | 4 +- src/config/languages.txt | 3 + src/css/chat.css | 17 +- src/css/home.css | 39 ++ src/css/logger.css | 12 +- src/css/menu.css | 26 +- src/css/tabs.css | 150 ++++-- src/css/tts-menu.css | 33 +- src/css/volume-slider.css | 2 +- src/index.html | 771 ++++++++++++++++------------- src/js/chat.js | 15 +- src/js/google.js | 0 src/js/renderer.js | 215 ++++++-- src/js/server.js | 55 +- src/js/settings.js | 228 +++++++-- src/js/sound.js | 13 +- src/js/theme.js | 1 - src/js/voiceQueue.js | 1 - src/main.js | 41 +- src/modules/chat/main.js | 1 - src/modules/vtuber/css/main.css | 26 +- src/sounds/notifications/error.mp3 | Bin 0 -> 57678 bytes src/sounds/notifications/info.mp3 | Bin 0 -> 74396 bytes 25 files changed, 1059 insertions(+), 598 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/config/languages.txt create mode 100644 src/js/google.js create mode 100644 src/sounds/notifications/error.mp3 create mode 100644 src/sounds/notifications/info.mp3 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2cb5ca0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "npm-scripts.showStartNotification": false +} \ No newline at end of file diff --git a/forge.config.js b/forge.config.js index b0e05e1..e2850c8 100644 --- a/forge.config.js +++ b/forge.config.js @@ -3,7 +3,6 @@ module.exports = { icon: './src/images/icon.ico', asar: true, "extraResource": [ - "./src/config/settings.ini", "./src/config/loquendo.db", "./src/sounds" ] diff --git a/package.json b/package.json index 43ea291..a4fca9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "loquendo-bot", - "version": "2.0.0", + "version": "2.1.0", "description": "Bot assistant for streamers over different platforms", "main": "src/main.js", "scripts": { @@ -45,4 +45,4 @@ "@electron-forge/plugin-auto-unpack-natives": "^6.2.1", "electron": "25.4.0" } -} +} \ No newline at end of file diff --git a/src/config/languages.txt b/src/config/languages.txt new file mode 100644 index 0000000..73adeae --- /dev/null +++ b/src/config/languages.txt @@ -0,0 +1,3 @@ +EN +ES +NL \ No newline at end of file diff --git a/src/css/chat.css b/src/css/chat.css index 51eb40a..b205162 100644 --- a/src/css/chat.css +++ b/src/css/chat.css @@ -389,21 +389,22 @@ select { } .AdvancedMenuLabel { - width: 120px; font-size: 10pt; padding-right: 5px; + margin-left: 10px; + width: 125px +} + +.AdvancedMenuLabel2 { + font-size: 10pt; + padding-right: 5px; + margin-left: 10px; } #SaveAdvancedSettingsButton { margin-left: 10px; } - -/* Big toggle */ - - -/* toggle in label designing */ - .toggle { position: relative; display: inline-block; @@ -425,7 +426,6 @@ select { background-color: var(--main-color2); left: 5px; top: 5px; - transition: all 0.2s; } @@ -476,7 +476,6 @@ select { background-color: white; left: 2px; top: 2px; - transition: all 0.2s; } diff --git a/src/css/home.css b/src/css/home.css index ee17b30..cf04350 100644 --- a/src/css/home.css +++ b/src/css/home.css @@ -203,4 +203,43 @@ body { .maximized #max-button { display: none; +} + +.language-selector { + -webkit-app-region: no-drag; + position: absolute; + display: inline-block; + background-color: transparent; + cursor: pointer; + font-family: 'NotoColorEmojiLimited', -apple-system, BlinkMacSystemFont, + 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', + 'Segoe UI Emoji', 'Segoe UI Symbol'; +} + +.language-dropdown { + display: none; + position: absolute; + background-color: #fff; + width: 55px; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 2; + font-family: 'NotoColorEmojiLimited', -apple-system, BlinkMacSystemFont, + 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', + 'Segoe UI Emoji', 'Segoe UI Symbol'; +} + +.language-item { + padding: 5px; + cursor: pointer; + background-color: var(--top-bar); +} + +.language-item:hover { + /* filter: brightness(150%); */ +} + +@font-face { + font-family: NotoColorEmojiLimited; + unicode-range: U+1F1E6-1F1FF; + src: url(https://raw.githack.com/googlefonts/noto-emoji/main/fonts/NotoColorEmoji.ttf); } \ No newline at end of file diff --git a/src/css/logger.css b/src/css/logger.css index a101736..5deb96a 100644 --- a/src/css/logger.css +++ b/src/css/logger.css @@ -1,15 +1,9 @@ table { - margin-left: 25px; - margin-right: 25px; + margin-left: 10px; background-color: white; border-collapse: collapse; width: 100%; -} - -table, -h1 { - margin-left: 35px !important; - /* Adjust the margin value according to your needs */ + margin-top: 60px; } th, @@ -32,7 +26,7 @@ td { } #logTable { - width: 90%; + width: 95%; } #Logs { diff --git a/src/css/menu.css b/src/css/menu.css index 3b54f79..640884b 100644 --- a/src/css/menu.css +++ b/src/css/menu.css @@ -35,6 +35,8 @@ display: block; width: 100%; background: var(--main-color1); + z-index: 1; + position: relative; } .menu .items { @@ -64,19 +66,18 @@ } .menu .items .item-active { - transition: 0.3s; background: -webkit-linear-gradient(left, var(--main-color2) 10%, var(--main-color2), var(--main-color1) 10%, var(--main-color1) 10%); color: var(--main-color2); - transition: all 0.15s ease-out; + filter: brightness(90%); } .menu .items .item:hover { cursor: pointer; - /* filter: brightness(150%); */ color: var(--main-color2); - transition: all 0.15s ease-in-out; + filter: brightness(120%); } + .sidepanel-left { position: relative; width: 50px; @@ -86,7 +87,6 @@ text-align: center; box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px; transition: .3s ease-in-out; - z-index: 1; } .sidepanel-right { @@ -100,8 +100,12 @@ transition: .3s ease-in-out; } -.collapse-menu { - width: 0px; +.collapse-menu-left { + margin-left: -50px; +} + +.collapse-menu-right { + margin-right: -200px; } .sidepanel-left span { @@ -124,11 +128,11 @@ background-color: var(--main-color3); color: var(--main-color2); justify-content: left; - top: 0px; + top: 32px; left: 50px; cursor: pointer; display: flex; - z-index: 9; + z-index: 1; transition: .3s ease-in-out; } @@ -146,11 +150,11 @@ background-color: var(--main-color3); color: var(--main-color2); justify-content: right; - top: 0px; + top: 32px; right: 199px; cursor: pointer; display: flex; - z-index: 9; + z-index: 1; transition: .3s ease-in-out; } diff --git a/src/css/tabs.css b/src/css/tabs.css index 8c47d9e..7d147fe 100644 --- a/src/css/tabs.css +++ b/src/css/tabs.css @@ -203,6 +203,11 @@ select { width: 300px; } +.language { + width: 80px; + margin-left: 10px; +} + #AdvancedMenu_mask { position: absolute; top: 0; @@ -253,91 +258,151 @@ select { padding-left: 10px; } +input[type="password"] { + background: var(--main-color3); + border: none; + height: 40px; + border-radius: 40px; + width: 300px; + outline: none; + color: var(--main-color2); + font-size: 10pt; + padding-left: 10px; + padding-right: 40px; + /* To make space for the reveal button */ +} + +input[type="lol"] { + background: var(--main-color3); + border: none; + height: 40px; + border-radius: 40px; + width: 300px; + outline: none; + color: var(--main-color2); + font-size: 10pt; + padding-left: 10px; + padding-right: 40px; + /* To make space for the reveal button */ +} + +/* Style for the reveal button */ +.password-toggle-btn { + position: absolute; + background-color: transparent; + border: none; + cursor: pointer; + left: 450px; +} + +/* Hide the default appearance of the button */ +.password-toggle-btn::-moz-focus-inner { + border: 0; +} + +/* Style the reveal icon (you can use your preferred icon or font) */ +.password-toggle-icon { + font-size: 16px; + color: #555; +} + #toasts { position: fixed; - bottom: 10px; - right: 10px; + bottom: 20px; + /* Adjust the distance from the bottom of the screen */ + right: 50%; + /* Center the toasts horizontally */ display: flex; flex-direction: column; - align-items: flex-end; - z-index: 1; - transition: all 0.3s ease-in-out; + align-items: center; + /* Center the toasts horizontally */ + z-index: 999; } .toast { - background-color: #fff; + background-color: #333; + color: white; border-radius: 5px; padding: 1rem 2rem; margin: 0.5rem; + opacity: 0; + transform: translateY(100%); + animation: toastAnimation 0.5s ease-in-out forwards, toastDisappear 0.5s ease-in-out 9s forwards; } +/* Apply different colors based on the toast type */ .toast.info { - color: rebeccapurple; + background-color: #3498db; } .toast.success { - color: green; + background-color: #2ecc71; } .toast.warning { - background-color: orange; - color: white; + background-color: #f39c12; } .toast.error { - color: red; + background-color: #e74c3c; +} + +/* CSS animation for the toast appearance */ +@keyframes toastAnimation { + from { + opacity: 0; + transform: translateY(100%); + } + + to { + opacity: 1; + transform: translateY(0); + } +} + +/* CSS animation for the toast disappearance */ +@keyframes toastDisappear { + from { + opacity: 1; + } + + to { + opacity: 0; + } } .menu-icon { font-size: 17pt; } -[tip] .tooltip { - position: fixed; +.tooltip { + position: absolute; + display: inline-block; + visibility: hidden; font-size: 12px; line-height: 20px; padding: 5px; background: var(--main-color3); border-radius: 5px; visibility: hidden; - opacity: 0; + opacity: 1; box-shadow: -2px 2px 5px rgba(0, 0, 0, 0.2); transition: opacity 0.3s, visibility 0s; color: var(--main-color2); - z-index: 101; font-family: 'xxii_avenmedium'; } -[tip]:hover .tooltip { - visibility: visible; - opacity: 1; -} - -.tooltip { - position: relative; - display: inline-block; -} - -.tooltip .tooltiptext { - visibility: hidden; +/* .tooltip .tooltiptext { width: 120px; background-color: black; color: #fff; text-align: center; border-radius: 6px; padding: 5px 0; - position: absolute; - z-index: 1; - bottom: 150%; - left: 50%; - margin-left: -60px; } .tooltip .tooltiptext::after { content: ""; - position: absolute; - top: 100%; - left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; @@ -346,8 +411,21 @@ select { .tooltip:hover .tooltiptext { visibility: visible; -} +} */ input[type=text]:disabled { background: #dddddd; +} + +input[type2=text]:disabled { + background: #dddddd; +} + +button[type=text]:disabled { + background: #dddddd; +} + +div:disabled { + background: #dddddd; + filter: brightness(200%); } \ No newline at end of file diff --git a/src/css/tts-menu.css b/src/css/tts-menu.css index 30203f4..c204953 100644 --- a/src/css/tts-menu.css +++ b/src/css/tts-menu.css @@ -75,29 +75,12 @@ textarea { margin-top: 40px; } -.SaveButton { - text-shadow: 0 0 5px #070607, 0 0 5px #070607, 0 0 5px #070607; - transition: all 0.15s ease-in-out; -} - -.SaveButton:hover { - /* color: var(--main-color1); */ - cursor: pointer; - /* filter: brightness(150%); */ -} - -.SaveButton:active { - color: var(--main-color1); - transform: translateY(4px); - text-shadow: 0 0 5px #000, 0 0 5px #000, 0 0 5px #000; -} - .SmallButton { color: var(--main-color2); width: 50px; cursor: pointer; text-shadow: 0 0 5px #070607, 0 0 5px #070607, 0 0 5px #070607; - transition: all 0.15s ease-in-out; + /* transition: all 0.15s ease-in-out; */ text-align: center; } @@ -124,16 +107,24 @@ textarea { border: none; font-family: 'xxii_avenmedium'; font-size: 14pt; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transition: box-shadow 0.3s ease, background-color 0.3s ease; + /* Add a smooth transition for box-shadow and background-color */ } .AdvancedMenuButton:hover { - /* background-color: var(--main-color1); */ + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); + background-color: var(--main-color3); + filter: brightness(150%); + /* Darken the background color on hover */ cursor: pointer; - /* filter: brightness(150%); */ } .AdvancedMenuButton:active { - transform: translateY(4px); + transform: translateY(2px); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + background-color: var(--main-color3); + /* Reset the background color on click */ } .AdvancedMenuIcon { diff --git a/src/css/volume-slider.css b/src/css/volume-slider.css index cb765db..e96a86f 100644 --- a/src/css/volume-slider.css +++ b/src/css/volume-slider.css @@ -54,7 +54,7 @@ outline: none; /* box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); */ box-shadow: 0 0 3px rgb(0 0 0 / 10%); - transition: .3s ease-in-out; + /* transition: .3s ease-in-out; */ } .slider-container .slider:active::-webkit-slider-thumb, diff --git a/src/index.html b/src/index.html index 33455cd..e452dde 100644 --- a/src/index.html +++ b/src/index.html @@ -27,7 +27,20 @@
+
+
+ 🇬🇧 + EN +
+
🇳🇱 + NL
+
🇪🇸 + ES
+
🇬🇧 + EN
+
+
@@ -66,7 +79,8 @@
  • -
  • +
  • -
    -
    - -
    +
    +
    +
    +
    @@ -95,36 +109,23 @@
    -

    Installed Voices

    +

    Primary TTS Voice

    - - + + +
    -

    Google Voices

    +

    Secondary TTS Voice

    - - -
    -

    Amazon Voices

    -
    - - + + +
    @@ -173,8 +174,6 @@
    - -

    Log Viewer

    @@ -286,344 +285,406 @@
    Oauth - Token
    + - -
    -
    -
    Client - ID
    - -
    -
    -
    Client - Secret
    - -
    - -
    - - - - - -
    -
    Port
    - - -
    -
    -
    Use - Vtuber
    - - -
    -
    -
    Use - ChatBubble
    - - -
    -
    -
    - - - - - -
    -
    - Access Key
    - - -
    -
    -
    - Access Secret
    - - -
    -
    -
    - Test credentials
    - -
    -
    -
    - - - - - -
    -
    - API Key
    - - -
    -
    -
    - Test credentials
    - - -
    -
    - - -
    -
    + class="password-toggle-btn password-toggle-btn1"> + 👁️ + + + +
    - - +
    Client + ID
    + +
    +
    +
    Client + Secret
    + + +
    +
    +
    + Test credentials
    + + +
    + +
    + + + + + +
    +
    Port
    + + +
    +
    +
    Use + Vtuber
    + + + +
    +
    +
    Use + ChatBubble
    + + + +
    +
    +
    + + + + + +
    +
    + Access Key
    + + +
    +
    +
    + Access Secret
    + + +
    +
    +
    + Test credentials
    + + +
    +
    +
    + + + + + +
    +
    + API Key
    + + +
    +
    +
    + Test credentials
    + + +
    +
    +
    + +
    +
    +
    + + +
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +
    + +
    Main + Color 1
    -
    -
    -
    -
    +
    + +
    Main + Color 2
    -
    +
    + +
    Main + Color 3
    +
    +
    + +
    Main + Color 4
    +
    +
    + +
    Top + Bar
    +
    +
    + +
    Mid + Section
    +
    +
    + +
    Chat + Bubble Background
    +
    +
    + +
    Chat + Bubble Header
    +
    +
    + +
    Chat + Bubble Message
    +
    +
    -
    - - - - - -
    -
    Main - Color 1
    - -
    Main - Color 2
    - -
    Main - Color 3
    - -
    -
    -
    Main - Color 4
    - -
    Top - Bar
    - -
    Mid - Section
    - -
    -
    -
    Chat - Bubble Background
    - -
    Chat - Bubble Header
    - -
    Chat - Bubble Message
    - -
    -
    - -
    - - - -
    -
    -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - -  - -
    -
    -

    Moderators

    -
      -
    -

    Viewers

    -
      -
    -
    -
    -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    -
    -
    -
      -
    • 1
    • -
    • 2
    • -
    • 3
    • -
    -
    -
    -
    -
    - -
    + +
    +
    + +
    + + + + + +
    - -
    - - - - + - \ No newline at end of file +
    + + + +
    +
    +
    + +  + +
    +
    +

    Moderators

    +
      +
    +

    Viewers

    +
      +
    +
    +
    +
      +
    • a
    • +
    • b
    • +
    • c
    • +
    +
    +
    +
      +
    • 1
    • +
    • 2
    • +
    • 3
    • +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + \ No newline at end of file diff --git a/src/js/chat.js b/src/js/chat.js index a5b8fe3..c96dd05 100644 --- a/src/js/chat.js +++ b/src/js/chat.js @@ -51,10 +51,10 @@ document.body.querySelector('#SendButton').addEventListener('click', () => { document.body.querySelector('.circle-left').addEventListener('click', () => { const menu = document.body.querySelector('.sidepanel-left'); - if (menu.classList.contains('collapse-menu')) { - menu.classList.remove('collapse-menu'); + if (menu.classList.contains('collapse-menu-left')) { + menu.classList.remove('collapse-menu-left'); } else { - menu.classList.add('collapse-menu'); + menu.classList.add('collapse-menu-left'); } const leftCircle = document.body.querySelector('.circle-left'); @@ -70,10 +70,10 @@ document.body.querySelector('.circle-left').addEventListener('click', () => { document.body.querySelector('.circle-right').addEventListener('click', () => { const menu = document.body.querySelector('.sidepanel-right'); - if (menu.classList.contains('collapse-menu')) { - menu.classList.remove('collapse-menu'); + if (menu.classList.contains('collapse-menu-right')) { + menu.classList.remove('collapse-menu-right'); } else { - menu.classList.add('collapse-menu'); + menu.classList.add('collapse-menu-right'); } const leftCircle = document.body.querySelector('.circle-right'); @@ -175,6 +175,5 @@ document.body.querySelector('#HideThemeCreator').addEventListener('click', () => // #region Test/Save TTS document.body.querySelector('#TTSTestButton').addEventListener('click', () => { const text = document.getElementById('TTSTest').value; - console.log(text); - sound.playVoice(text, '', '', text); + sound.playVoice(text, '', 'User', text); }); diff --git a/src/js/google.js b/src/js/google.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/renderer.js b/src/js/renderer.js index b79b329..71a510d 100644 --- a/src/js/renderer.js +++ b/src/js/renderer.js @@ -7,7 +7,6 @@ const request = require('request'); const langdetect = require('langdetect'); const io = require('socket.io-client'); -const socket = io('http://localhost:9000'); // Connect to your Socket.IO server const fs = require('fs'); const util = require('util'); @@ -27,21 +26,21 @@ const googleVoices = fs.readFileSync(path.join(__dirname, './config/googleVoices // TODO: remove amazon voices txt and use api instead (sakura project has it) const amazonVoices = fs.readFileSync(path.join(__dirname, './config/amazonVoices.txt')).toString().split('\r\n'); +const languagesObject = fs.readFileSync(path.join(__dirname, './config/languages.txt')).toString().split('\r\n'); + // html elements const root = document.documentElement; const ttsSelector = document.body.querySelector('#TTSSelector'); -const googleVoiceSelect = document.querySelector('#googleVoice'); // obtain the html reference of the google voices comboBox const amazonVoiceSelect = document.querySelector('#amazonVoice'); // obtain the html reference of the amazon voices comboBox -const installedTTS = document.querySelector('#installedTTS'); // obtain the html reference of the installedTTS comboBox -const ttsAudioDevices = document.querySelector('#ttsAudioDevice'); // obtain the html reference of the installedTTS comboBox const notificationAudioDevices = document.querySelector('#notificationAudioDevice'); // obtain the html reference of the installedTTS comboBox const devicesDropdown = document.querySelector('#devicesDropdown'); const notificationSound = document.querySelector('#notification'); // obtain the html reference of the sound comboBox +const ttsAudioDevices = document.querySelector('#ttsAudioDevice'); // obtain the html reference of the installedTTS comboBox + // laod local javascript files const chat = require(path.join(__dirname, './js/chat')); -const Polly = require(path.join(__dirname, './js/amazon')); const messageTemplates = require(path.join(__dirname, './js/messageTemplates')); const logger = require(path.join(__dirname, './js/logger')); const sound = require(path.join(__dirname, './js/sound')); @@ -55,15 +54,25 @@ if (envInfo.env) { notificationSounds = path.join(__dirname, './sounds/notifications'); } -const server = require(path.join(__dirname, './js/server')); +const twitch = config.settings.TWITCH.USE_TWITCH ? require(path.join(__dirname, './js/twitch')) : ''; + +let server; +let socket; + +if (config.settings.SERVER.USE_SERVER) { + server = require(path.join(__dirname, './js/server')); + socket = io(`http://localhost:${config.settings.SERVER.PORT}`); // Connect to your Socket.IO server +} + +const Polly = config.settings.AMAZON.USE_AMAZON ? require(path.join(__dirname, './js/amazon')) : ''; +const google = config.settings.GOOGLE.USE_GOOGLE ? require(path.join(__dirname, './js/amazon')) : ''; + const theme = require(path.join(__dirname, './js/theme')); -const twitch = require(path.join(__dirname, './js/twitch')); // initialize values config.getGeneralSettings(); -config.getTwitchSettings(); config.setCustomThemeToggle(); -config.setTwitchToggle(); + let selectedVoiceIndex; let selectedEncodingIndex; @@ -115,68 +124,149 @@ async function getAudioDevices() { }); ttsAudioDevices.selectedIndex = config.settings.AUDIO.SELECTED_TTS_AUDIO_DEVICE; - // devicesDropdown.selectedIndex = 0; - - // Create an audio context - // audioContext = new (window.AudioContext || window.webkitAudioContext)(); } getAudioDevices(); -say.getInstalledVoices((err, voices) => { - voices.forEach((voice, i) => { +function setLanguagesinSelect(languageSelector, setting) { + let languageSelect = document.querySelector(languageSelector); // obtain the html reference of the google voices comboBox + + const languages = Object.keys(languagesObject); + languages.forEach((language) => { const option = document.createElement('option'); - option.value = i; - option.innerHTML = voice; + option.value = language; + option.innerHTML = languagesObject[language]; - installedTTS.appendChild(option); + languageSelect.appendChild(option); + }); + + languageSelect.selectedIndex = setting; +} + +setLanguagesinSelect("#primaryLanguage", config.settings.TTS.PRIMARY_TTS_LANGUAGE_INDEX); +setLanguagesinSelect("#secondaryLanguage", config.settings.TTS.SECONDARY_TTS_LANGUAGE_INDEX); + +function getInstalledVoices(callback) { + say.getInstalledVoices((err, voices) => { + + function setVoicesinSelect(voiceSelector) { + let voiceSelect = document.querySelector(voiceSelector); // obtain the html reference of the google voices comboBox + + const internalTTSHeader = document.createElement('optgroup'); + internalTTSHeader.label = "Internal TTS"; + voiceSelect.appendChild(internalTTSHeader); + + // const installedTTS = document.querySelector('#installedTTS'); // obtain the html reference of the installedTTS comboBox + voices.forEach((voice, i) => { + const option = document.createElement('option'); + + option.value = i; + option.innerHTML = voice; + + // installedTTS.appendChild(option); + internalTTSHeader.appendChild(option); + }); + } + setVoicesinSelect("#primaryVoice"); + setVoicesinSelect("#secondaryVoice"); + + callback(); + }); +} + +function getAmazonVoices(callback) { + if (!config.settings.AMAZON.USE_AMAZON) { + callback(); + return; + } + + function setVoicesinSelect(voiceSelector) { + let voiceSelect = document.querySelector(voiceSelector); // obtain the html reference of the google voices comboBox + + const internalTTSHeader = document.createElement('optgroup'); + internalTTSHeader.label = "Amazon TTS"; + voiceSelect.appendChild(internalTTSHeader); + + const voices = Object.keys(amazonVoices); + voices.forEach((voice) => { + const option = document.createElement('option'); + + option.value = voice; + option.innerHTML = amazonVoices[voice]; + + internalTTSHeader.appendChild(option); + }); + } + + setVoicesinSelect("#primaryVoice"); + setVoicesinSelect("#secondaryVoice"); + + callback(); +} + +function getGoogleVoices(callback) { + if (!config.settings.GOOGLE.USE_GOOGLE) { + callback(); + return; + } + + function setVoicesinSelect(voiceSelector) { + let voiceSelect = document.querySelector(voiceSelector); // obtain the html reference of the google voices comboBox + + const internalTTSHeader = document.createElement('optgroup'); + internalTTSHeader.label = "Google TTS"; + voiceSelect.appendChild(internalTTSHeader); + + const googleVoiceSelect = document.querySelector('#googleVoice'); // obtain the html reference of the google voices comboBox + const voices = Object.keys(googleVoices); + voices.forEach((voice) => { + const option = document.createElement('option'); + option.classList.add("option"); + + option.value = voice; + option.innerHTML = googleVoices[voice]; + + internalTTSHeader.appendChild(option); + }); + } + setVoicesinSelect("#primaryVoice"); + setVoicesinSelect("#secondaryVoice"); + + callback(); +} + +getGoogleVoices(function () { + getAmazonVoices(function () { + getInstalledVoices(function () { + let primaryVoice = document.querySelector("#primaryVoice"); + primaryVoice.selectedIndex = config.settings.TTS.PRIMARY_TTS_VOICE; + + let secondaryVoice = document.querySelector("#secondaryVoice"); + secondaryVoice.selectedIndex = config.settings.TTS.SECONDARY_TTS_VOICE; + }); }); - installedTTS.selectedIndex = config.settings.TTS.INTERNAL_TTS_VOICE; }); -async function getGoogleVoices() { - const voices = Object.keys(googleVoices); - await voices.forEach((voice) => { - const option = document.createElement('option'); - - option.value = voice; - option.innerHTML = googleVoices[voice]; - - googleVoiceSelect.appendChild(option); - }); - googleVoiceSelect.selectedIndex = config.settings.TTS.GOOGLE_VOICE; -} - -getGoogleVoices(); - -async function getAmazonVoices() { - const voices = Object.keys(amazonVoices); - await voices.forEach((voice) => { - const option = document.createElement('option'); - - option.value = voice; - option.innerHTML = amazonVoices[voice]; - - amazonVoiceSelect.appendChild(option); - }); - amazonVoiceSelect.selectedIndex = config.settings.TTS.AMAZON_VOICE; -} - -getAmazonVoices(); - // Small tooltip Array.from(document.body.querySelectorAll('[tip]')).forEach((el) => { const tip = document.createElement('div'); + const body = document.querySelector('.container'); const element = el; tip.classList.add('tooltip'); + tip.classList.add('tooltiptext'); tip.innerText = el.getAttribute('tip'); tip.style.transform = `translate(${el.hasAttribute('tip-left') ? 'calc(-100% - 5px)' : '15px'}, ${el.hasAttribute('tip-top') ? '-100%' : '15px' })`; - element.appendChild(tip); + body.appendChild(tip); element.onmousemove = (e) => { - tip.style.left = `${e.pageX}px`; - tip.style.top = `${e.pageY}px`; + tip.style.left = `${e.x}px`; + tip.style.top = `${e.y}px`; + tip.style.zIndex = 1; + tip.style.visibility = "visible"; + }; + element.onmouseleave = (e) => { + tip.style.visibility = "hidden"; }; }); @@ -207,6 +297,25 @@ function showPreviewChatMessage() { showPreviewChatMessage(); +function hideText(button, field) { + document.body.querySelector(button).addEventListener('click', () => { + const passwordInput = document.querySelector(field); + if (passwordInput.type === 'password') { + passwordInput.type = 'lol'; + } else { + passwordInput.type = 'password'; + } + }); + +} + +hideText('.password-toggle-btn1', "#TWITCH_OAUTH_TOKEN"); +hideText('.password-toggle-btn2', "#TWITCH_CLIENT_ID"); +hideText('.password-toggle-btn3', "#TWITCH_CLIENT_SECRET"); +hideText('.password-toggle-btn4', "#AMAZON_ACCESS_KEY"); +hideText('.password-toggle-btn5', "#AMAZON_ACCESS_SECRET"); +hideText('.password-toggle-btn6', "#GOOGLE_API_KEY"); + // Amazon TTS // const polly = new Polly(amazonCredentials); // const options = { @@ -222,4 +331,4 @@ showPreviewChatMessage(); // } // audioStream.pipe(fileStream); // return 1; -// }); +// }); \ No newline at end of file diff --git a/src/js/server.js b/src/js/server.js index 4fe74f4..7abd032 100644 --- a/src/js/server.js +++ b/src/js/server.js @@ -5,10 +5,39 @@ const path = require('path'); const http = require('http').createServer(app); const io = require('socket.io')(http); -const PORT = 9000; +if (!config.settings.SERVER.USE_SERVER) { + return; +} -app.use('/chat', express.static(path.join(__dirname, '../modules/chat'))); -app.use('/vtuber', express.static(path.join(__dirname, '../modules/vtuber/'))); +const PORT = config.settings.SERVER.PORT; + +http.listen(PORT, () => { + if (config.settings.SERVER.USE_VTUBER) { + app.use('/vtuber', express.static(path.join(__dirname, '../modules/vtuber/'))); + + let vtuber = document.body.querySelector('#BrowsersourceVtuber'); + let vtuberframe = document.createElement('iframe'); + vtuberframe.class = "frame"; + vtuberframe.src = `http://localhost:${PORT}/vtuber`; + vtuberframe.style.width = "100%"; + vtuberframe.style.height = "100%"; + vtuberframe.frameBorder = 0; + vtuber.appendChild(vtuberframe); + } + + if (config.settings.SERVER.USE_CHATBUBBLE) { + app.use('/chat', express.static(path.join(__dirname, '../modules/chat'))); + + let chat = document.body.querySelector('#BrowsersourceChat'); + let chatframe = document.createElement('iframe'); + chatframe.class = "frame"; + chatframe.src = `http://localhost:${PORT}/chat`; + chatframe.style.width = "100%"; + chatframe.style.height = "100%"; + chatframe.frameBorder = 0; + chat.appendChild(chatframe); + } +}); // Handle socket connections io.on('connection', (socket) => { @@ -23,23 +52,3 @@ io.on('connection', (socket) => { socket.on('disconnect', () => { }); }); - -http.listen(PORT, () => { - let vtuber = document.body.querySelector('#BrowsersourceVtuber'); - let vtuberframe = document.createElement('iframe'); - vtuberframe.class = "frame"; - vtuberframe.src = "http://localhost:9000/vtuber"; - vtuberframe.style.width = "100%"; - vtuberframe.style.height = "100%"; - vtuberframe.frameBorder = 0; - vtuber.appendChild(vtuberframe); - - let chat = document.body.querySelector('#BrowsersourceChat'); - let chatframe = document.createElement('iframe'); - chatframe.class = "frame"; - chatframe.src = "http://localhost:9000/chat"; - chatframe.style.width = "100%"; - chatframe.style.height = "100%"; - chatframe.frameBorder = 0; - chat.appendChild(chatframe); -}); diff --git a/src/js/settings.js b/src/js/settings.js index 2a72b6e..2ea5873 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -6,8 +6,31 @@ if (envInfo.env) { settings = ini.parse(fs.readFileSync(resourcesPath, 'utf-8')); } -document.body.querySelector('#installedTTS').addEventListener('change', () => { - settings.TTS.INTERNAL_TTS_VOICE = installedTTS.selectedIndex; +document.body.querySelector('#primaryVoice').addEventListener('change', () => { + var select = document.querySelector("#primaryVoice"); + settings.TTS.PRIMARY_TTS_VOICE = select.selectedIndex; + settings.TTS.PRIMARY_TTS_NAME = select.options[select.selectedIndex].text; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#primaryLanguage').addEventListener('change', () => { + var select = document.querySelector("#primaryLanguage"); + settings.TTS.PRIMARY_TTS_LANGUAGE_INDEX = select.selectedIndex; + settings.TTS.PRIMARY_TTS_LANGUAGE = select.options[select.selectedIndex].text; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#secondaryVoice').addEventListener('change', () => { + var select = document.querySelector("#secondaryVoice"); + settings.TTS.SECONDARY_TTS_VOICE = select.selectedIndex; + settings.TTS.SECONDARY_TTS_NAME = select.options[select.selectedIndex].text; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#secondaryLanguage').addEventListener('change', () => { + var select = document.querySelector("#secondaryLanguage"); + settings.TTS.SECONDARY_TTS_LANGUAGE_INDEX = select.selectedIndex; + settings.TTS.SECONDARY_TTS_LANGUAGE = select.options[select.selectedIndex].text; fs.writeFileSync(resourcesPath, ini.stringify(settings)); }); @@ -42,6 +65,26 @@ document.body.querySelector('#TWITCH_CLIENT_SECRET').addEventListener('change', fs.writeFileSync(resourcesPath, ini.stringify(settings)); }); +document.body.querySelector('#PORT').addEventListener('change', () => { + settings.SERVER.PORT = document.body.querySelector('#PORT').value; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#AMAZON_ACCESS_KEY').addEventListener('change', () => { + settings.AMAZON.ACCESS_KEY = document.body.querySelector('#AMAZON_ACCESS_KEY').value; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#AMAZON_ACCESS_SECRET').addEventListener('change', () => { + settings.AMAZON.ACCESS_SECRET = document.body.querySelector('#AMAZON_ACCESS_SECRET').value; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + +document.body.querySelector('#GOOGLE_API_KEY').addEventListener('change', () => { + settings.GOOGLE.API_KEY = document.body.querySelector('#GOOGLE_API_KEY').value; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); +}); + // document.body.querySelector('#sliderX').addEventListener('change', () => { // // TODO: resolve volume control of TTS // config.SETTINGS.VOICE_VOLUME; @@ -67,15 +110,41 @@ function getGeneralSettings() { document.body.querySelector('#USE_CUSTOM_THEME').checked = settings.THEME.USE_CUSTOM_THEME === true ? 1 : 0; theme.setTheme(USE_CUSTOM_THEME); -} -function getTwitchSettings() { - document.body.querySelector('#USE_TWITCH').checked = settings.TWITCH.USE_TWITCH === true ? 1 : 0; + // Twitch + document.body.querySelector('#USE_TWITCH').checked = settings.TWITCH.USE_TWITCH; document.body.querySelector('#TWITCH_CHANNEL_NAME').value = settings.TWITCH.CHANNEL_NAME; document.body.querySelector('#TWITCH_USERNAME').value = settings.TWITCH.USERNAME; document.body.querySelector('#TWITCH_OAUTH_TOKEN').value = settings.TWITCH.OAUTH_TOKEN; document.body.querySelector('#TWITCH_CLIENT_ID').value = settings.TWITCH.CLIENT_ID; document.body.querySelector('#TWITCH_CLIENT_SECRET').value = settings.TWITCH.CLIENT_SECRET; + + // Server + document.body.querySelector('#USE_SERVER').checked = settings.SERVER.USE_SERVER; + document.body.querySelector('#PORT').value = settings.SERVER.PORT; + document.body.querySelector('#USE_VTUBER').checked = settings.SERVER.USE_VTUBER; + showMenuButton("#btnBrowsersourceVtuber", settings.SERVER.USE_VTUBER) + document.body.querySelector('#USE_CHATBUBBLE').checked = settings.SERVER.USE_CHATBUBBLE; + showMenuButton("#btnBrowsersourceChat", settings.SERVER.USE_CHATBUBBLE) + + // Amazon + document.body.querySelector('#USE_AMAZON').checked = settings.AMAZON.USE_AMAZON; + document.body.querySelector('#AMAZON_ACCESS_KEY').value = settings.AMAZON.ACCESS_KEY; + document.body.querySelector('#AMAZON_ACCESS_SECRET').value = settings.AMAZON.ACCESS_SECRET; + + // Google + document.body.querySelector('#USE_GOOGLE').checked = settings.GOOGLE.USE_GOOGLE; + document.body.querySelector('#GOOGLE_API_KEY').value = settings.GOOGLE.API_KEY; + +} + +function showMenuButton(menuButton, toggle) { + let option = document.body.querySelector(menuButton); + if (!toggle) { + option.style.display = "none"; + } else { + option.style.display = ""; + } } const notificationToasts = document.querySelector('#toasts'); // toast messages @@ -86,6 +155,19 @@ function createNotification(message = null, type = null) { notification.classList.add(type); notification.innerText = message; notificationToasts.appendChild(notification); + let notfication = undefined; + + let alertSound = "info.mp3"; + if (type === "error") { + alertSound = "error.mp3"; + } + + if (envInfo.env) { + notfication = new Audio(path.join(envInfo.path, `./sounds/notifications/${alertSound}`)); + } else { + notfication = new Audio(path.join(__dirname, `../sounds/notifications/${alertSound}`)); + } + notfication.play(); setTimeout(() => notification.remove(), 10000); } @@ -130,14 +212,6 @@ document.body.querySelector('#USE_CUSTOM_THEME').addEventListener('click', () => fs.writeFileSync(resourcesPath, ini.stringify(settings)); }); -function setTwitchToggle() { - const toggle = document.getElementById('USE_TWITCH').checked; - settings.TWITCH.USE_TWITCH = toggle; - fs.writeFileSync(resourcesPath, ini.stringify(settings)); - const inputs = document.getElementsByClassName('inputTwitch'); - toggleRadio(toggle, inputs); -} - // #region Top bar buttons document.body.querySelector('#min-button').addEventListener('click', () => { ipcRenderer.send('minimize-window'); @@ -149,7 +223,6 @@ document.body.querySelector('#max-button').addEventListener('click', () => { document.body.querySelector('#close-button').addEventListener('click', (event) => { ipcRenderer.send('close-window'); - console.log(event); }); // #endregion @@ -158,31 +231,86 @@ document.body.querySelector('#SoundTestButton').addEventListener('click', () => sound.playAudio(); }); -// #region Use twitch toggle logic +function toggleTwitch() { + const toggle = settings.TWITCH.USE_TWITCH; + const inputs = document.getElementsByClassName('inputTwitch'); + toggleRadio(toggle, inputs); +} + document.body.querySelector('#USE_TWITCH').addEventListener('click', () => { - setTwitchToggle(); + const toggle = document.getElementById('USE_TWITCH').checked; + settings.TWITCH.USE_TWITCH = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + const inputs = document.getElementsByClassName('inputTwitch'); + toggleRadio(toggle, inputs); }); -Array.from(ttsSelector.querySelectorAll('[name="voiceService"]')).forEach((node) => { - node.addEventListener('change', (e) => { - const { target } = e; +toggleTwitch(); - if (!target) { return; } +function toggleGoogle() { + const toggle = settings.GOOGLE.USE_GOOGLE; + const inputs = document.getElementsByClassName('inputGoogle'); + toggleRadio(toggle, inputs); +} - settings.TTS.SELECTED_TTS = target.id; - fs.writeFileSync(resourcesPath, ini.stringify(settings)); +document.body.querySelector('#USE_GOOGLE').addEventListener('click', () => { + const toggle = document.getElementById('USE_GOOGLE').checked; + settings.GOOGLE.USE_GOOGLE = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + const inputs = document.getElementsByClassName('inputGoogle'); + toggleRadio(toggle, inputs); +}); - Array.from(ttsSelector.querySelectorAll('select')).forEach((x) => { - const element = x; - if (element !== target.parentElement.previousElementSibling) { - element.disabled = true; - } else { element.disabled = false; } - }); - }); +toggleGoogle(); + +function toggleAmazon() { + const toggle = settings.AMAZON.USE_AMAZON; + const inputs = document.getElementsByClassName('inputAmazon'); + toggleRadio(toggle, inputs); +} + +document.body.querySelector('#USE_AMAZON').addEventListener('click', () => { + const toggle = document.getElementById('USE_AMAZON').checked; + settings.AMAZON.USE_AMAZON = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + const inputs = document.getElementsByClassName('inputAmazon'); + toggleRadio(toggle, inputs); +}); + +toggleAmazon(); + +function toggleServer() { + const toggle = settings.SERVER.USE_SERVER; + const inputs = document.getElementsByClassName('inputServer'); + toggleRadio(toggle, inputs); +} + +document.body.querySelector('#USE_SERVER').addEventListener('click', () => { + const toggle = document.getElementById('USE_SERVER').checked; + settings.SERVER.USE_SERVER = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + const inputs = document.getElementsByClassName('inputServer'); + toggleRadio(toggle, inputs); +}); + +toggleServer(); + +document.body.querySelector('#USE_VTUBER').addEventListener('change', () => { + const toggle = document.getElementById('USE_VTUBER').checked; + settings.SERVER.USE_VTUBER = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + showMenuButton("#btnBrowsersourceVtuber", toggle); +}); + +document.body.querySelector('#USE_CHATBUBBLE').addEventListener('change', () => { + const toggle = document.getElementById('USE_CHATBUBBLE').checked; + settings.SERVER.USE_CHATBUBBLE = toggle; + fs.writeFileSync(resourcesPath, ini.stringify(settings)); + showMenuButton("#btnBrowsersourceChat", toggle); }); // Get the selected TTS -const currentlySelectedTTS = ttsSelector.querySelector(`#${settings.selectedTts}`); +const currentlySelectedTTS = ttsSelector.querySelector(`#${settings.TTS.SELECTED_TTS}`); if (currentlySelectedTTS) { currentlySelectedTTS.checked = true; @@ -235,11 +363,45 @@ if (settings.AUDIO.TTS_VOLUME) { document.querySelector('#ttsVolumeSlider').dispatchEvent(new Event('change', { value: 50 })); } +document.body.querySelector('.language-selector').addEventListener('click', () => { + var dropdown = document.body.querySelector('.language-dropdown'); + dropdown.style.display = dropdown.style.display === 'block' ? 'none' : 'block'; +}); + +document.body.querySelector('.language-dropdown').addEventListener('mouseleave', () => { + hideDropdown(); +}); + +let languageSelector = document.querySelectorAll(".language-item"); +languageSelector.forEach(item => { + item.addEventListener('click', (event) => { + const el = event.target; + // tip.innerText = el.getAttribute('language'); + document.getElementById('selected-language').innerText = el.getAttribute('language'); + document.getElementById('selected-flag').innerText = el.getAttribute('flag'); + hideDropdown(); + }); +}); + +function hideDropdown() { + var dropdown = document.body.querySelector('.language-dropdown'); + dropdown.style.display = 'none'; +} + + +// let primaryTTSSelector = document.body.querySelector(".optgroup"); +// primaryTTSSelector.forEach(item => { +// item.addEventListener('hover', (event) => { +// console.log(event); +// // const optionsElement = document.getElementById(optgroupID); +// // optionsElement.style.display = optionsElement.style.display === "none" ? "block" : "none"; +// }); +// }); + + module.exports = { ini, settings, getGeneralSettings, - getTwitchSettings, - setCustomThemeToggle, - setTwitchToggle, + setCustomThemeToggle }; diff --git a/src/js/sound.js b/src/js/sound.js index 7f4c4e3..bf4ecc2 100644 --- a/src/js/sound.js +++ b/src/js/sound.js @@ -13,7 +13,6 @@ const playTTS = (ttsData) => new Promise((resolve) => { console.error(err); return; } - console.log('Audio file deleted successfully!'); resolve('finished'); }); }); @@ -61,16 +60,16 @@ function playVoice(filteredMessage, logoUrl, username, message) { trueMessage = filteredMessage; currentLogoUrl = logoUrl; currentUsername = username; - let text = ''; let textObject = { "filtered": filteredMessage, "formatted": message }; - let voice = installedTTS.options[installedTTS.selectedIndex].text; + let voice; const language = langdetect.detect(filteredMessage); - if (language[0].lang === 'en') { - voice = installedTTS.options[1].text; - text = `${username} said: ${filteredMessage}` + if (language[0].lang === config.settings.TTS.SECONDARY_TTS_LANGUAGE.toLowerCase()) { + voice = config.settings.TTS.SECONDARY_TTS_NAME; + textObject.filtered = `${username}: ${filteredMessage}`; } else { - text = `${username} dice: ${filteredMessage}` + voice = config.settings.TTS.PRIMARY_TTS_NAME; + textObject.filtered = `${username}: ${filteredMessage}`; } talk.add(textObject, voice); diff --git a/src/js/theme.js b/src/js/theme.js index 09ac4e9..77e7601 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -78,7 +78,6 @@ function setTheme(USE_CUSTOM_THEME) { document.body.querySelector('#MAIN_COLOR_1').addEventListener('input', () => { const x = document.getElementById('MAIN_COLOR_1').value; root.style.setProperty('--main-color1-temp', x); - console.log("set"); }); document.body.querySelector('#MAIN_COLOR_1').addEventListener('change', () => { diff --git a/src/js/voiceQueue.js b/src/js/voiceQueue.js index cf899d7..c276b24 100644 --- a/src/js/voiceQueue.js +++ b/src/js/voiceQueue.js @@ -5,7 +5,6 @@ let counter = 0; const speak = (textObject) => new Promise((resolve) => { // say.setEncoding(Encoding); counter += 1; - console.log(textObject); let savePath = ''; if (envInfo.env) { diff --git a/src/main.js b/src/main.js index 6383d14..68d132b 100644 --- a/src/main.js +++ b/src/main.js @@ -31,8 +31,6 @@ async function createWindow() { icon: path.join(__dirname, '/images/icon.png'), width: parseInt(settings.SETTINGS.WIDTH), height: parseInt(settings.SETTINGS.HEIGHT), - minHeight: 800, - minWidth: 600, x: parseInt(settings.SETTINGS.POSITION_X), y: parseInt(settings.SETTINGS.POSITION_Y), frame: false, @@ -44,12 +42,14 @@ async function createWindow() { }); window.loadURL('https://github.com') - window.loadFile(path.join(__dirname, 'index.html')); - window.webContents.openDevTools(); + if (!app.isPackaged) { + window.webContents.openDevTools(); + } window.on('close', e => { + settings = ini.parse(fs.readFileSync(resourcesPath, 'utf-8')); // load newest settings in case anything changed after starting the program const bounds = window.getBounds(); settings.SETTINGS.WIDTH = bounds.width; @@ -59,7 +59,6 @@ async function createWindow() { fs.writeFileSync(resourcesPath, ini.stringify(settings)); }) - }; app.whenReady().then(() => { @@ -117,21 +116,26 @@ async function createIniFile() { NOTIFICATION_ENABLED: true, POSITION_X: 0, POSITION_Y: 0, - WIDTH: 600, - HEIGHT: 800 + WIDTH: 1024, + HEIGHT: 768, + LANGUAGE: "EN" }, TTS: { - SELECTED_TTS: "InternalTTS", - INTERNAL_TTS_VOICE: 0, - GOOGLE_VOICE: 0, - AMAZON_VOICE: 0 + PRIMARY_TTS_VOICE: 0, + PRIMARY_TTS_NAME: "", + PRIMARY_TTS_LANGUAGE: "EN", + PRIMARY_TTS_LANGUAGE_INDEX: 0, + SECONDARY_TTS_VOICE: 0, + SECONDARY_TTS_NAME: "", + SECONDARY_TTS_LANGUAGE: "EN", + SECONDARY_TTS_LANGUAGE_INDEX: 0 }, AUDIO: { NOTIFICATION_AUDIO_DEVICE: 0, NOTIFICATION_SOUND: 0, NOTIFICATION_VOLUME: 100, SELECTED_TTS_AUDIO_DEVICE: 0, - TTS_AUDIO_DEVICE: "", + TTS_AUDIO_DEVICE: "default", TTS_VOLUME: 100 }, THEME: { @@ -147,16 +151,27 @@ async function createIniFile() { CHAT_BUBBLE_MESSAGE: "\#b5b5b5", }, TWITCH: { - USE_TWITCH: true, + USE_TWITCH: false, CHANNEL_NAME: "khyretos", USERNAME: "loquendo", OAUTH_TOKEN: "", CLIENT_ID: "", CLIENT_SECRET: "", }, + SERVER: { + USE_SERVER: false, + PORT: "9000", + USE_VTUBER: false, + USE_CHATBUBBLE: false, + }, AMAZON: { + USE_TWITCH: false, ACCESS_KEY: "", ACCESS_SECRET: "", + }, + GOOGLE: { + USE_GOOGLE: false, + API_KEY: "", } }).then(() => { settings = ini.parse(fs.readFileSync(resourcesPath, 'utf-8')); diff --git a/src/modules/chat/main.js b/src/modules/chat/main.js index 008ca20..1f501b8 100644 --- a/src/modules/chat/main.js +++ b/src/modules/chat/main.js @@ -63,7 +63,6 @@ function streamText() { } function displayTwitchMessage(logoUrl, username, messageObject) { - console.log(messageObject); if (!messageObject) { return; } diff --git a/src/modules/vtuber/css/main.css b/src/modules/vtuber/css/main.css index 87bc7d2..daf7def 100644 --- a/src/modules/vtuber/css/main.css +++ b/src/modules/vtuber/css/main.css @@ -68,7 +68,7 @@ body { background-repeat: no-repeat; } -input[type='vslider'] > button.slider { +input[type='vslider']>button.slider { background-size: 100% auto; border-radius: 0; width: 275%; @@ -86,11 +86,11 @@ button { background-color: transparent; } -#meter-microphone > button.slider { +#meter-microphone>button.slider { background-image: url('../png/controls/meters/left.png'); } -#meter-delay > button.slider { +#meter-delay>button.slider { background-image: url('../png/controls/meters/right.png'); } @@ -259,7 +259,7 @@ button.motion { } .test { - width:50px; + width: 50px; height: 50px; background-size: cover; overflow: hidden; @@ -268,7 +268,7 @@ button.motion { .avatar-change { background-image: url('../png/controls/buttons/top/avatar-change/border/default.png'); background-size: cover; - width:50px; + width: 50px; height: 50px; position: relative; left: -5px; @@ -277,7 +277,7 @@ button.motion { .border { background-image: url('../png/controls/buttons/top/motion/border.png'); background-size: cover; - width:50px; + width: 50px; height: 50px; position: relative; top: -50px; @@ -298,7 +298,7 @@ button.motion { height: 50px; width: 50px; background-position: 50% 50%; - background-color: yellow; + background-color: yellow; } .mouth-transitionx { @@ -308,12 +308,12 @@ button.motion { height: 50px; width: 50px; background-position: 50% 50%; - background-color: red; + background-color: red; } #mouth-transition::before { - background-color: red; + background-color: red; background-image: url('../png/controls/buttons/top/avatar-change/border/default.png'); } @@ -338,16 +338,16 @@ button.motion::before { height: 50px; width: 50px; pointer-events: none; - background-color: yellow; + background-color: yellow; } button.motion::after { position: absolute; width: 80%; height: 80%; - background-color: red; + background-color: red; overflow: hidden; - z-index: -2; + z-index: -1; transform: translate(11%, 11%); /* hit-margin: -999px; */ } @@ -383,4 +383,4 @@ button.motion::after { menu.popup { /* box-shadow: 3px 3px 1px rgba(0, 0, 0, 0.692); */ -} +} \ No newline at end of file diff --git a/src/sounds/notifications/error.mp3 b/src/sounds/notifications/error.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..17d56a8b533f8f4e38482756e0af7fb187b8f0e9 GIT binary patch literal 57678 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 z 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 literal 0 HcmV?d00001 diff --git a/src/sounds/notifications/info.mp3 b/src/sounds/notifications/info.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5e3fdabbb12142dfa75702a0b0e0ca5e5425a7dd GIT binary patch literal 74396 zcmeFZXHZjJ`1ZR~2@oLkP)#88me4_zP^B9L5dkGsX(COeC?xa}6agV1AYD*8f}$d! zSEY�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 IMA41-AN9j*LI3~& literal 0 HcmV?d00001
    Level