您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Modify background, sound notification, chat opacity, user and kin name on top.
// ==UserScript== // @name Kindroid Mod // @version 1.0 // @description Modify background, sound notification, chat opacity, user and kin name on top. // @author TemPassion // @homepageURL https://github.com/TenPassion/kindroid-script // @license MIT // @match https://kindroid.ai/home // @grant GM_setValue // @grant GM_getValue // @namespace http://tampermonkey.net/ // ==/UserScript== (function () { 'use strict'; let optionsOpen = true; let selectedSoundButton = null; function changeText(elements) { const text1 = document.querySelector('.css-19hb772'); const text2 = document.querySelector('.css-ppua9z'); elements.forEach(function (element) { element.textContent = text1.textContent + ' x ' + text2.textContent + ' on Kindroid '; }); } function changeBackground(imageURL) { const targetElement = document.querySelector('.css-1lvpjll'); if (targetElement) { targetElement.style.backgroundImage = 'none'; if (imageURL !== '') { targetElement.style.backgroundImage = `url("${imageURL}")`; targetElement.style.backgroundSize = 'cover'; targetElement.style.backgroundRepeat = 'no-repeat'; } } } function adjustOpacityTeti0a() { const opacityValue = GM_getValue('opacityValue', '0.9'); const elementsToAdjust = document.querySelectorAll('.css-teti0a'); elementsToAdjust.forEach(function (element) { element.style.opacity = opacityValue; }); } function adjustOpacity100dd8p() { const opacityValue = GM_getValue('opacityValue', '0.9'); const elementsToAdjust = document.querySelectorAll('.css-1dhayxc'); elementsToAdjust.forEach(function (element) { element.style.opacity = opacityValue; }); } function playNotificationSound(soundURL) { const audio = new Audio(soundURL); audio.play(); } function applyOpacity(opacityValue) { GM_setValue('opacityValue', opacityValue); adjustOpacityTeti0a(opacityValue); adjustOpacity100dd8p(opacityValue); } function openOptions() { const customModal = document.getElementById('customModal'); const enableNotificationsCheckbox = document.getElementById('enableNotifications'); const enableNotifications = GM_getValue('enableNotifications', false); // Récupérer la valeur stockée enableNotificationsCheckbox.checked = enableNotifications; // Mettre à jour l'état de la case à cocher if (optionsOpen) { customModal.style.pointerEvents = 'auto'; customModal.style.opacity = '1'; } else { customModal.style.pointerEvents = 'none'; customModal.style.opacity = '0'; } optionsOpen = !optionsOpen; } function closeOptions() { const customModal = document.getElementById('customModal'); customModal.style.pointerEvents = 'none'; customModal.style.opacity = '0'; optionsOpen = false; } function openBackgroundPopup() { const newImageURL = prompt('Enter the URL of the new background image:'); if (newImageURL !== null) { GM_setValue('customImageURL', newImageURL); location.reload(); changeBackground(newImageURL); } } function openSoundSelection() { const soundSelectionModal = document.getElementById('soundSelectionModal'); soundSelectionModal.style.display = 'block'; } function closeSoundSelection() { const soundSelectionModal = document.getElementById('soundSelectionModal'); soundSelectionModal.style.display = 'none'; // Sauvegarder le son sélectionné if (selectedSoundButton) { const soundURL = selectedSoundButton.getAttribute('data-sound'); GM_setValue('selectedSoundURL', soundURL); } } const modalHTML = ` <div id="customModal" style="position: fixed; bottom: 10px; right: 10px; background-color: #282828; padding: 20px; border: 2px solid #333; z-index: 9999; border-radius: 10px; color: white; opacity: 0; transition: opacity 0.3s ease-in-out;"> <button id="closeModal" style="position: absolute; top: 10px; right: 10px; background-color: transparent; border: none; color: white; font-size: 20px; cursor: pointer;">✖</button> Adjust chat opacity: <input type="range" id="opacitySlider" min="0" max="1" step="0.1" value="0.9" style="width: 100%; background: linear-gradient(to left, #fe8484, #8b6dff); -webkit-appearance: none; height: 8px; border-radius: 5px;"><style>#opacitySlider::-webkit-slider-thumb{background-color:black !important;}</style><br> <label for="enableNotifications" style="margin-top: 10px; margin-bottom: 20px; display: block; cursor: pointer;"> <input type="checkbox" id="enableNotifications" style="margin-right: 5px;"> Enable sound notifications 🔔 </label> <button id="openSoundSelectionButton" style="background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Select Notification Sound</button><br> <button id="optionsButton" style="background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px; margin-top: 10px;">Change Background</button><br> <button id="saveSettingsButton" style="background: linear-gradient(to right, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px; display: block; margin-top: 10px;">Save Settings 💾</button> </div> `; const soundSelectionHTML = ` <div id="soundSelectionModal" style="display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #282828; padding: 20px; border: 2px solid #333; z-index: 9999; border-radius: 10px; color: white;"> <button id="closeSoundSelection" style="position: absolute; top: 10px; right: 10px; background-color: transparent; border: none; color: white; font-size: 20px; cursor: pointer;">✖</button> <h2 style="text-align: center;">Select Notification Sound</h2> <button class="soundOption" data-sound="https://www.myinstants.com/media/sounds/discord-notification.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Discord Message</button> <button class="soundOption" data-sound="https://www.redringtones.com/wp-content/uploads/2018/06/iphone-ding-sound.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">iPhone Message</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1192-message.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Woman Message</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1309-man-message.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Man Message</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1195-mmm.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Woman Hmmm</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1295-man-hmmm.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Man Hmmm</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1233-elegant.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Elegant</button> <button class="soundOption" data-sound="https://notificationsounds.com/storage/sounds/file-sounds-1100-open-ended.mp3" style="display: block; margin-bottom: 10px; background: linear-gradient(to left, #fe8484, #8b6dff); border: none; color: white; cursor: pointer; padding: 10px 20px; border-radius: 5px;">Open Ended</button> </div> `; document.body.insertAdjacentHTML('beforeend', modalHTML); document.body.insertAdjacentHTML('beforeend', soundSelectionHTML); const closeModalButton = document.getElementById('closeModal'); const optionsButton = document.getElementById('optionsButton'); const opacitySlider = document.getElementById('opacitySlider'); const customModal = document.getElementById('customModal'); const enableNotificationsCheckbox = document.getElementById( 'enableNotifications' ); const saveSettingsButton = document.getElementById('saveSettingsButton'); const openSoundSelectionButton = document.getElementById( 'openSoundSelectionButton' ); const closeSoundSelectionButton = document.getElementById( 'closeSoundSelection' ); const soundOptions = document.querySelectorAll('.soundOption'); closeModalButton.addEventListener('click', closeOptions); optionsButton.addEventListener('click', () => { openOptions(); openBackgroundPopup(); // Ouvre la popup URL lorsque vous cliquez sur "Change Background" }); openSoundSelectionButton.addEventListener('click', openSoundSelection); closeSoundSelectionButton.addEventListener('click', closeSoundSelection); enableNotificationsCheckbox.addEventListener('change', () => { const isChecked = enableNotificationsCheckbox.checked; GM_setValue('enableNotifications', isChecked); // Sauvegarder la nouvelle valeur }); saveSettingsButton.addEventListener('click', () => { const opacityValue = opacitySlider.value; GM_setValue('opacityValue', opacityValue); const isChecked = enableNotificationsCheckbox.checked; GM_setValue('enableNotifications', isChecked); location.reload(); closeOptions(); // Jouer le son des notifications avec le son sélectionné const selectedSoundURL = GM_getValue('selectedSoundURL', ''); if (isChecked && selectedSoundURL !== '') { playNotificationSound(selectedSoundURL); } }); opacitySlider.addEventListener('input', () => { const opacityValue = opacitySlider.value; applyOpacity(opacityValue); }); const customImageButton = document.createElement('button'); customImageButton.textContent = '😈'; customImageButton.style.position = 'fixed'; customImageButton.style.bottom = '10px'; customImageButton.style.right = '10px'; customImageButton.style.zIndex = '9999'; customImageButton.style.color = 'white'; customImageButton.style.backgroundColor = '#282828'; customImageButton.style.border = 'none'; customImageButton.style.borderRadius = '50%'; customImageButton.style.padding = '10px'; customImageButton.style.cursor = 'pointer'; customImageButton.addEventListener('click', openOptions); document.body.appendChild(customImageButton); const customImageURL = GM_getValue('customImageURL', ''); if (customImageURL !== '') { changeBackground(customImageURL); } const selectedSoundURL = GM_getValue('selectedSoundURL', ''); if (selectedSoundURL !== '') { soundOptions.forEach(function (soundOption) { const soundURL = soundOption.getAttribute('data-sound'); if (soundURL === selectedSoundURL) { soundOption.style.fontWeight = 'bold'; } }); } soundOptions.forEach(function (soundOption) { soundOption.addEventListener('click', function () { const soundURL = soundOption.getAttribute('data-sound'); playNotificationSound(soundURL); soundOptions.forEach(function (option) { option.style.fontWeight = 'normal'; }); soundOption.style.fontWeight = 'bold'; selectedSoundButton = soundOption; }); }); const observer = new MutationObserver(function (mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { const elements = document.querySelectorAll('.chakra-text.css-s68iw5'); if (elements.length > 0) { changeText(elements); changeBackground(customImageURL); const opacityValue = document.querySelector( 'input[type="range"]' ).value; applyOpacity(opacityValue); const enableNotifications = GM_getValue('enableNotifications', false); if (enableNotifications) { const removedElements = mutation.removedNodes; removedElements.forEach(function (removedElement) { if ( removedElement.classList && removedElement.classList.contains('css-1ulhpcc') ) { playNotificationSound(selectedSoundURL); } }); const newElements = mutation.addedNodes; newElements.forEach(function (newElement) { if ( newElement.classList && newElement.classList.contains('css-teti0a') ) { playNotificationSound(selectedSoundURL); } }); } } } } }); observer.observe(document.body, { childList: true, subtree: true }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址