您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动连接LLM API和AllTalkTTS API
当前为
// ==UserScript== // @name SillyTavern自动连接LLM API和AllTalkTTS API // @namespace http://tampermonkey.net/ // @version 1.1 // @description 自动连接LLM API和AllTalkTTS API // @match http://127.0.0.1:8000/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 配置中心 const CONFIG = { buttons: [ { selector: '#api_button_textgenerationwebui', name: 'API连接', status: { element: '.online_status_indicator', successCondition: el => el.classList.contains('success') } }, { selector: '#tts_refresh', name: 'TTS刷新', status: { element: '.at-settings-option.status-option #status_info', successCondition: el => el.innerText.trim() === 'Ready' } } ], timing: { interval: 3000, // 检测间隔(ms) retryLimit: 15 // 最大尝试次数 } }; // 创建增强状态面板 const statusPanel = createStatusPanel(); let isRunning = true; // 状态面板模板 function createStatusPanel() { const panel = document.createElement('div'); panel.style = ` position: fixed; top: 20px; right: 20px; background: rgba(0,0,0,0.85); color: white; padding: 15px; border-radius: 8px; z-index: 99999; font-family: Arial; min-width: 220px; backdrop-filter: blur(5px); `; panel.innerHTML = ` <h3 style="margin:0 0 12px;color:#4CAF50;font-size:16px;">连接状态监控</h3> <div id="statusContent" style="line-height:1.6;font-size:14px;"></div> `; document.body.appendChild(panel); return panel; } // 状态检测器 function checkConnectionStatus(buttonConfig) { const statusElement = document.querySelector(buttonConfig.status.element); if (!statusElement) return false; return buttonConfig.status.successCondition(statusElement); } // 增强点击方法 async function performEnhancedClick(selector) { const btn = document.querySelector(selector); if (!btn) return false; ['mousedown', 'mouseup', 'click'].forEach(eventType => { btn.dispatchEvent(new MouseEvent(eventType, { bubbles: true, view: window })); }); await new Promise(resolve => setTimeout(resolve, 1000)); return true; } // 更新状态显示 function updateStatusDisplay(attempts) { const statusContent = statusPanel.querySelector('#statusContent'); let html = CONFIG.buttons.map(btn => { const isConnected = checkConnectionStatus(btn); return ` <div style="margin-bottom:8px;"> <span style="color:${isConnected ? '#4CAF50' : '#ff4444'}">${isConnected ? '✓' : '✗'}</span> ${btn.name}: <span style="color:${isConnected ? '#4CAF50' : '#ff4444'}"> ${isConnected ? '已连接' : '未连接'} </span> </div> `; }).join(''); html += ` <div style="border-top:1px solid #333;padding-top:8px;margin-top:8px;"> 尝试次数:${attempts}/${CONFIG.timing.retryLimit}<br> 下次检测:${new Date(Date.now() + CONFIG.timing.interval).toLocaleTimeString()} </div> `; statusContent.innerHTML = html; } // 主控制器 async function controlLoop() { let attempts = 0; const timer = setInterval(async () => { if (!isRunning) return; attempts++; let allConnected = true; for (const btn of CONFIG.buttons) { const clicked = await performEnhancedClick(btn.selector); if (!checkConnectionStatus(btn)) allConnected = false; if (!clicked) console.warn(`找不到按钮:${btn.name}`); } updateStatusDisplay(attempts); if (allConnected || attempts >= CONFIG.timing.retryLimit) { clearInterval(timer); isRunning = false; statusPanel.innerHTML += ` <div style="color:#${allConnected ? '4CAF50' : 'ff4444'};margin-top:10px;"> ${allConnected ? '所有连接已成功!' : '达到最大尝试次数'} </div> `; // 添加3秒后移除面板逻辑 if (allConnected) { setTimeout(() => { statusPanel.remove(); // 完全移除面板元素 }, 3000); } } }, CONFIG.timing.interval); } // 启动系统 window.addEventListener('load', () => { setTimeout(controlLoop, 2000); // 等待页面初始化 }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址